| From: | Peter Eisentraut <peter(at)eisentraut(dot)org> |
|---|---|
| To: | pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
| Subject: | get rid of Pointer type, mostly |
| Date: | 2025-11-24 10:20:56 |
| Message-ID: | 4154950a-47ae-4223-bd01-1235cc50e933@eisentraut.org |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
In a previous thread[0], the question was asked, 'Why do we bother with
a "Pointer" type?'. So I looked into get rid of it.
There are two stages to this. One is changing all code that wants to do
pointer arithmetic to use char * instead of relying on Pointer being
char *. Then we can change Pointer to be void * and remove a bunch of
casts.
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.
This gets rid of all uses, except in the GIN code, which is full of
Pointer use, and it's part of the documented API. I'm not touching
that, not least because this kind of code
Pointer **extra_data = (Pointer **) PG_GETARG_POINTER(4);
needs more brain-bending to understand that I'm prepared to spend. So
as far as I'm concerned, the pointer type can continue to exist as a
curiosity of the GIN API, but in all other places, it wasn't really
doing much of anything anyway.
| Attachment | Content-Type | Size |
|---|---|---|
| 0001-Remove-useless-casts-to-Pointer.patch | text/plain | 2.6 KB |
| 0002-Use-better-DatumGet-function.patch | text/plain | 1.2 KB |
| 0003-Don-t-rely-on-pointer-arithmetic-with-Pointer-type.patch | text/plain | 14.2 KB |
| 0004-Change-Pointer-to-void.patch | text/plain | 834 bytes |
| 0005-Remove-no-longer-needed-casts-to-Pointer.patch | text/plain | 12.9 KB |
| 0006-Remove-some-uses-of-the-Pointer-type.patch | text/plain | 6.3 KB |
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Bertrand Drouvot | 2025-11-24 10:26:32 | Remove useless casting to the same type |
| Previous Message | Álvaro Herrera | 2025-11-24 10:07:41 | Re: [PATCH] Expose checkpoint timestamp and duration in pg_stat_checkpointer |