Re: get rid of Pointer type, mostly
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Peter Eisentraut <peter@eisentraut.org>,
pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2025-11-24T16:33:57Z
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 →
-
Remove no longer needed casts from Pointer
- e158fd4d68f4 19 (unreleased) landed
-
Remove no longer needed casts to Pointer
- c6be3daa054a 19 (unreleased) landed
-
Change Pointer to void *
- 1b2bb5077e9e 19 (unreleased) landed
-
Don't rely on pointer arithmetic with Pointer type
- 756a43689324 19 (unreleased) landed
-
Use more appropriate DatumGet* function
- 8c6bbd674ed8 19 (unreleased) landed
-
Remove useless casts to Pointer
- 623801b3bdb4 19 (unreleased) landed
Robert Haas <robertmhaas@gmail.com> writes: > On Mon, Nov 24, 2025 at 11:09 AM Tom Lane <tgl@sss.pgh.pa.us> wrote: >>> The second is getting rid of uses of Pointer for variables where you >>> might as well use void * directly. These are actually not that many. >> ... but not of that. In particular, I think it's just fine if >> DatumGetPointer and PointerGetDatum take and return Pointer. > What's your objection? We have lots of places where we use trivial typedefs to annotate what something is. For instance "text *" is not really different from "struct varlena *", but I don't think anyone would be in favor of removing the "text" typedef. In this case we have decades of practice using Pointer to annotate something as being a generic pointer. I'm in favor of switching it to be "void *" to conform more closely to modern C semantics, but not of just trying to get rid of it. Especially so if the removal is incomplete. What have you really accomplished then? > (I don't have a considered opinion on this particular point, but in > general I've found that using Pointer seems to make life worse rather > than better.) How much of that comes from "char *" versus "void *"? regards, tom lane