Re: BUG #17111: Database created, cannot be created, but reported as inexist

From: Japin Li <japinli(at)hotmail(dot)com>
To: Japin Li <japinli(at)hotmail(dot)com>
Cc: bernaridho(at)outlook(dot)co(dot)id, pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #17111: Database created, cannot be created, but reported as inexist
Date: 2021-07-16 10:50:57
Message-ID: MEYP282MB16692D00512B089AC7FEC5D8B6119@MEYP282MB1669.AUSP282.PROD.OUTLOOK.COM
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs


On Fri, 16 Jul 2021 at 17:11, Japin Li <japinli(at)hotmail(dot)com> wrote:
> On Fri, 16 Jul 2021 at 06:04, PG Bug reporting form <noreply(at)postgresql(dot)org> wrote:
>> The following bug has been logged on the website:
>>
>> Bug reference: 17111
>> Logged by: Bernaridho Hutabarat
>> Email address: bernaridho(at)outlook(dot)co(dot)id
>> PostgreSQL version: 12.7
>> Operating system: CentOS
>> Description:
>>
>> postgres=# \c Database
>> FATAL: database "Database" does not exist
>> Previous connection kept
>> postgres=# CREATE DATABASE Database;
>> ERROR: database "database" already exists
>> postgres=# DROP DATABASE Database;
>> DROP DATABASE
>> postgres=# CREATE DATABASE Database OWNER ServiceUser1;
>> CREATE DATABASE
>> postgres=# \c Database;
>> FATAL: database "Database" does not exist
>> Previous connection kept
>> postgres=# DROP DATABASE Database;
>> DROP DATABASE
>> postgres=# CREATE DATABASE Database OWNER postgres;
>> CREATE DATABASE
>> postgres=# \c Database;
>> FATAL: database "Database" does not exist
>> Previous connection kept
>> postgres=# DROP DATABASE Database;
>> DROP DATABASE
>> postgres=# \q
>
> This might be the \c command doesn't convert "Database" to "database",
> OTOH, the CREATE DATABASE & DROP DATABASE convert "Database" to "database" by default.
>
> Should we convert the string to lower case read_connect_arg() if it doesn't quoted?

I find read_connect_arg() has following code:

/*
* Ideally we should treat the arguments as SQL identifiers. But for
* backwards compatibility with 7.2 and older pg_dump files, we have to
* take unquoted arguments verbatim (don't downcase them). For now,
* double-quoted arguments may be stripped of double quotes (as if SQL * identifiers). By 7.4 or so, pg_dump files can be expected to
* double-quote all mixed-case \connect arguments, and then we can get rid
* of OT_SQLIDHACK.
*/
result = psql_scan_slash_option(scan_state, OT_SQLIDHACK, &quote, true);

IIUC, this code is just for compatibility with 7.2 or older. If yes, is it
necessary for us to be compatible with 7.2 or older?

I try to change OT_SQLIDHACK to OT_SQLID, and all test case passed.

Can we remove the code for compatibility with 7.2 or older?

--
Regrads,
Japin Li.
ChengDu WenWu Information Technology Co.,Ltd.

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message David Pavlotzky 2021-07-16 11:02:24 Re: BUG #17107: pspg packages not properly signed
Previous Message Francisco Olarte 2021-07-16 09:22:24 Re: BUG #17112: Sequence number is not restored when the stored procedure ends abnormally