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 →
  1. pg_dump: Fix array literals in fetchAttributeStats().

Attachments

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