From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Tomas Vondra <tomas(dot)vondra(at)enterprisedb(dot)com> |
Cc: | PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: createdb compares strategy as case-sensitive |
Date: | 2024-04-20 20:40:40 |
Message-ID: | 2568919.1713645640@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Tomas Vondra <tomas(dot)vondra(at)enterprisedb(dot)com> writes:
> While doing some testing with createdb, I noticed it only accepts
> file_copy/wal_log as valid strategies, not FILE_COPY/WAL_LOG (which is
> what the docs say). The same thing applies to CREATE DATABASE.
Hmm, actually it does work in CREATE DATABASE:
regression=# create database foo STRATEGY = FILE_COPY;
CREATE DATABASE
but it fails in createdb because that does
if (strategy)
appendPQExpBuffer(&sql, " STRATEGY %s", fmtId(strategy));
and fmtId will double-quote the strategy if it's upper-case, and then
the backend grammar doesn't case-fold it, and kaboom.
> The problem is that createdb() does the check using strcmp() which is
> case-sensitive. IMHO this should do pg_strcasecmp() which is what we do
> for other string parameters nearby.
Seems reasonable. The alternative could be to remove createdb.c's use
of fmtId() here, but I don't think that's actually better.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Tomas Vondra | 2024-04-20 21:53:06 | Re: createdb compares strategy as case-sensitive |
Previous Message | Tomas Vondra | 2024-04-20 20:03:12 | createdb compares strategy as case-sensitive |