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

Поиск
Список
Период
Сортировка
От Japin Li
Тема Re: BUG #17111: Database created, cannot be created, but reported as inexist
Дата
Msg-id MEYP282MB16692D00512B089AC7FEC5D8B6119@MEYP282MB1669.AUSP282.PROD.OUTLOOK.COM
обсуждение исходный текст
Ответ на Re: BUG #17111: Database created, cannot be created, but reported as inexist  (Japin Li <japinli@hotmail.com>)
Ответы Re: BUG #17111: Database created, cannot be created, but reported as inexist  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-bugs
On Fri, 16 Jul 2021 at 17:11, Japin Li <japinli@hotmail.com> wrote:
> On Fri, 16 Jul 2021 at 06:04, PG Bug reporting form <noreply@postgresql.org> wrote:
>> The following bug has been logged on the website:
>>
>> Bug reference:      17111
>> Logged by:          Bernaridho Hutabarat
>> Email address:      bernaridho@outlook.co.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
expectedto
 
     * 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, "e, 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.



В списке pgsql-bugs по дате отправления:

Предыдущее
От: Francisco Olarte
Дата:
Сообщение: Re: BUG #17112: Sequence number is not restored when the stored procedure ends abnormally
Следующее
От: David Pavlotzky
Дата:
Сообщение: Re: BUG #17107: pspg packages not properly signed