| From: | Chao Li <li(dot)evan(dot)chao(at)gmail(dot)com> |
|---|---|
| To: | Bertrand Drouvot <bertranddrouvot(dot)pg(at)gmail(dot)com> |
| Cc: | Postgres hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, Noah Misch <noah(at)leadboat(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Peter Eisentraut <peter(at)eisentraut(dot)org> |
| Subject: | Re: Refactor to eliminate cast-away-const in pg_dump object sort comparator |
| Date: | 2025-12-30 09:03:51 |
| Message-ID: | CAEoWx2=h=voyWOyD23tPU=rytFob1HhVzp2QzvtKaExzb=cmRQ@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
On Mon, Dec 29, 2025 at 10:15 PM Bertrand Drouvot <
bertranddrouvot(dot)pg(at)gmail(dot)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(dot)evan(dot)chao(at)gmail(dot)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.
https://www.highgo.com/
| Attachment | Content-Type | Size |
|---|---|---|
| v3-0001-Refactor-to-eliminate-cast-away-const-in-pg_dump-.patch | application/octet-stream | 7.7 KB |
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Chao Li | 2025-12-30 09:18:10 | Re: Wrong comment for ReplicationSlotCreate |
| Previous Message | Alexander Pyhalov | 2025-12-30 09:02:00 | Re: Limit memory usage by postgres_fdw batches |