Re: PSQL schema "describe" \dn is not escaping quotes

From: Jim Jones <jim(dot)jones(at)uni-muenster(dot)de>
To: Steven Niu <niushiji(at)gmail(dot)com>, Peter Smith <smithpb2250(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: PSQL schema "describe" \dn is not escaping quotes
Date: 2026-07-28 13:18:31
Message-ID: c5fe28b1-9f53-4aed-84c6-77a8e13da08f@uni-muenster.de
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi Peter & Steven

On 28/07/2026 10:19, Steven Niu wrote:
> 1. Indentation
>
> if (!validateSQLNamePattern(...))
> goto error_return; // should be indented one more tab
>
> 2. The new validateSQLNamePattern() call duplicates validation that
> already happened.
>
> The validateSQLNamePattern() has been called before your change. Since only the escaping/query-building side effect is actually
> needed here. You can call the lower-level processSQLNamePattern() directly and doesn't check its return value, because no additional validation is needed:
>
> processSQLNamePattern(pset.db, &buf, pattern, false, false,
> NULL, "n.nspname", NULL,
> NULL, NULL, NULL);

I'm also wondering if we should use appendPQExpBufferStr instead of
appendPQExpBuffer here, since there are no format strings -- just to be
consistent with the other queries in the same file.

appendPQExpBuffer(&buf,
"SELECT pubname \n"
"FROM pg_catalog.pg_publication p\n"
" JOIN pg_catalog.pg_publication_namespace pn ON p.oid = pn.pnpubid\n"
" JOIN pg_catalog.pg_namespace n ON n.oid = pn.pnnspid \n");
...
appendPQExpBuffer(&buf, "ORDER BY 1;");

Other than that the patch LGTM.

Thanks!

Best, Jim

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Daniel Gustafsson 2026-07-28 13:21:00 Re: Skip .DS_Store files in check_mode_recursive
Previous Message Andrey Borodin 2026-07-28 13:15:30 Re: FROM clause before SELECT