Re: pg_dump: assert failure sorting casts/transforms

From: Noah Misch <noah(at)leadboat(dot)com>
To: Alexander Kukushkin <cyberdemn(at)gmail(dot)com>
Cc: Nitin Jadhav <nitinjadhavpostgres(at)gmail(dot)com>, Pg Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: pg_dump: assert failure sorting casts/transforms
Date: 2026-09-09 00:03:57
Message-ID: 20260909000357.b2.noahmisch@microsoft.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Fri, Aug 21, 2026 at 11:59:53AM +0200, Alexander Kukushkin wrote:
> here is v3 version of the patch addressing all nit-picks

Thanks.

> With no DO_CAST or DO_TRANSFORM tiebreaker, such pairs reach the
> Assert(false) fall-through added in commit 0decd5e89db (aborting
> assert-enabled pg_dump), or on non-assert builds sort by OID, reintroducing
> exactly the schema-diff instability that commit and its follow-ups
> (b61a5c4bed7, 4921a5972a3, d49936f3028) have been eliminating.

Since this is already the fourth follow-up to my original change, I had Opus 5
look for more ways to reach the assertion. It found one more:

D1 DO_POLICY: the "RLS enabled" pseudo-object borrows its table's relname, so
it ties with a policy named after that same table. An assert-enabled
pg_dump aborts; a production build orders the two by comparing a pg_class
OID against a pg_policy OID, which pg_upgrade inverts.

Let's fix that at the same time. Would you like to add that, or would you
like me to add it?

I'm attaching the larger Opus 5 report as an FYI. It found many other pg_dump
ordering problems distinct from the DOTypeNameCompare() assertion, and D3 is a
notable functional bug. They're off-topic for $SUBJECT, though.

Attachment Content-Type Size
0001-Audit-report-and-regression-tests-for-pg_dump-dump-o.patch text/plain 73.3 KB
0002-SAMPLE-fixes-for-the-eleven-testable-dump-order-defe.patch text/plain 18.8 KB

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message jian he 2026-09-09 00:40:31 Re: Fix inherited constraint loss in ALTER COLUMN SET EXPRESSION
Previous Message Michael Paquier 2026-09-09 00:03:46 Re: ExecForceStoreHeapTuple() loses tts_tid, so ORDER BY-op index scans project an invalid ctid