Re: pg_dump crash due to incomplete ordering of DO_SUBSCRIPTION_REL objects

Chao Li <li.evan.chao@gmail.com>

From: Chao Li <li.evan.chao@gmail.com>
To: Noah Misch <noah@leadboat.com>
Cc: vignesh C <vignesh21@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2025-12-18T08:35:14Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Sort DO_SUBSCRIPTION_REL dump objects independent of OIDs.

  2. Sort dump objects independent of OIDs, for the 7 holdout object types.


> On Dec 18, 2025, at 03:51, Noah Misch <noah@leadboat.com> wrote:
> 
> On Wed, Dec 17, 2025 at 10:11:58AM +0530, vignesh C wrote:
>> The attached v3 version patch has the changes for the same.
> 
> The "tag" variable needed a change to compensate for the subrinfo->dobj.name
> change.  I plan to push the attached version.
> <DO_SUBSCRIPTION_REL-v4.patch>

v4 looks solid. A couple of nitpicks:

1
```
+		SubRelInfo *srobj1 = *(SubRelInfo *const *) p1;
+		SubRelInfo *srobj2 = *(SubRelInfo *const *) p2;
```

These two temp pointers can be const, like:
```
const SubRelInfo *srobj1 = *(SubRelInfo *const *) p1;
const SubRelInfo *srobj2 = *(SubRelInfo *const *) p2;
```

2
```
+		/* Sort by subscription name, since (namespace, name) match the rel */
```

This comment is correct, but sounds a little insider-ish. Maybe:

/* Tiebreak by subscription name; (namespace, name) already identify the table */

Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/