Re: Refactor to eliminate cast-away-const in pg_dump object sort comparator - Mailing list pgsql-hackers

From Chao Li
Subject Re: Refactor to eliminate cast-away-const in pg_dump object sort comparator
Date
Msg-id CAEoWx2=h=voyWOyD23tPU=rytFob1HhVzp2QzvtKaExzb=cmRQ@mail.gmail.com
Whole thread Raw
In response to Re: Refactor to eliminate cast-away-const in pg_dump object sort comparator  (Bertrand Drouvot <bertranddrouvot.pg@gmail.com>)
List pgsql-hackers


On Mon, Dec 29, 2025 at 10:15 PM Bertrand Drouvot <bertranddrouvot.pg@gmail.com> wrote:
Hi,

On Mon, Dec 29, 2025 at 05:44:22PM +0800, Chao Li wrote:
> On Dec 24, 2025, at 09:58, Chao Li <li.evan.chao@gmail.com> wrote:
>
> Hi Hacker,
>
> While reviewing patch [1], I raised a comment about cast-away-const in
> pg_dump_sort.c. However, the comment was not accepted and the argument was
> that the nearby code did the same thing.
>
> I saw Tom recently had a commit [2] that removed some cast-away-const in
> ecpg, so I am filing this patch to eliminate all cast-away-const problems
> in pg_dump_sort.c.
>
> [1]
> https://postgr.es/m/CALDaNm2x3rd7C0_HjUpJFbxpAqXgm=QtoKfkEWDVA8h+JFpa_w@mail.gmail.com
> [2]
> https://git.postgresql.org/cgit/postgresql.git/commit/?id=4eda42e8bdf5bd3bf69576d54a45c10e7cbc3b35
>
>
> I just noticed this patch does the similar thing as [3] just handling a
> different file. As Peter had a comment on [3], I addressed the comment as
> well in v2.

I think that your v1 was correct but your v2 now contains things like:

@@ -199,8 +199,8 @@ sortDumpableObjectsByTypeName(DumpableObject **objs, int numObjs)
 static int
 DOTypeNameCompare(const void *p1, const void *p2)
 {
-       DumpableObject *obj1 = *(DumpableObject *const *) p1;
-       DumpableObject *obj2 = *(DumpableObject *const *) p2;
+       const DumpableObject *obj1 = p1;
+       const DumpableObject *obj2 = p2;

that don't look correct. Indeed in sortDumpableObjectsByTypeName(),
objs is pointer to pointer. So qsort passes &objs[0] and &objs[1] to the
comparator. So that dereference is still needed in DOTypeNameCompare().

Regards,

--
Bertrand Drouvot
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com

Hi Bertrand,

Thanks a lot for pointing out the error. v3 has reverted the changes to be the same as v1 and rebased.

Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
Attachment

pgsql-hackers by date:

Previous
From: Alexander Pyhalov
Date:
Subject: Re: Limit memory usage by postgres_fdw batches
Next
From: Chao Li
Date:
Subject: Re: Wrong comment for ReplicationSlotCreate