Re: BUG #18923: pg_dump 18beta1 fails to process complex table names
Stepan Neretin <slpmcf@gmail.com>
From: Stepan Neretin <slpmcf@gmail.com>
To: jian he <jian.universality@gmail.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Nathan Bossart <nathandbossart@gmail.com>,
phb.emaj@free.fr, pgsql-bugs@lists.postgresql.org
Date: 2025-05-19T07:24:47Z
Lists: pgsql-bugs
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
pg_dump: Fix array literals in fetchAttributeStats().
- a6060f1cbec3 18.0 landed
Attachments
- v2-0001-Fix-quoting-of-complex-schema-and-table-names-in-.patch (text/x-patch) patch v2-0001
On Fri, May 16, 2025 at 9:51 PM jian he <jian.universality@gmail.com> wrote:
> On Fri, May 16, 2025 at 3:03 AM Tom Lane <tgl@sss.pgh.pa.us> wrote:
> >
> > Yeah, I think so. I was confused for a bit because the one extant
> > user of appendPGArray is getNamespaces which does an additional layer
> > of quote-doubling via quoteAclUserName. However, that seems to be
> because
> > it's trying to build aclitem[] arrays whose elements will be read by
> > aclitemin, and that de-dups double quotes.
> >
>
> getNamespaces use appendPGArray for object's initial ACL string
>
> getNamespaces
> ``
> nsinfo[i].dacl.initprivs = pstrdup(aclarray->data);
> ``
>
> and we seems *only* use it dumpACL->buildACLCommands
> ``
> if (!parsePGArray(baseacls, &baseitems, &nbaseitems))
> {
> free(aclitems);
> free(baseitems);
> return false;
> }
> ``
> parsePGArray didn't handle single-quotes.
>
> I think the above is the reason single-quotes within array elements didn't
> cause
> trouble.
>
>
>
Hi,
I’ve added a regression test covering problem
This patch combines Nathan Bossart’s original fix with suggestions from Tom
Lane and Jian He. It uses appendPGArray() to build the arrays and
appendStringLiteralAH() to quote them correctly in the EXECUTE statement.
Patch attached. Looking forward to your feedback.
Best regards,
Stepan Neretin