Re: Making type Datum be 8 bytes everywhere

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Andres Freund <andres@anarazel.de>
Cc: Peter Eisentraut <peter@eisentraut.org>, Joe Conway <mail@joeconway.com>, Michael Paquier <michael@paquier.xyz>, pgsql-hackers@lists.postgresql.org, Robert Haas <robertmhaas@gmail.com>
Date: 2025-08-12T16:20:58Z
Lists: pgsql-hackers
Andres Freund <andres@anarazel.de> writes:
> On 2025-08-12 08:30:43 +0200, Peter Eisentraut wrote:
>> I'm also thinking, as a follow-on project, we could get rid of typbyval and
>> require that typbyval == (typlen > 0 && typlen <= 8).  Something to think
>> about.

> We currently have types that aren't typbyval despite fitting those criteria:

We could change those three if we had a mind to.  Changing TID would
probably risk some bugs, but we pass it around enough in UPDATE/DELETE
that making it typbyval would surely buy some small performance win.
(I doubt anyone would notice about the macaddr types though.)

However, I'm really hesitant to start enforcing such a thing against
user-defined types.  I think that would translate to breaking some
extensions in return for not much.

			regards, tom lane



Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Avoid faulty alignment of Datums in build_sorted_items().

  2. Grab the low-hanging fruit from forcing USE_FLOAT8_BYVAL to true.

  3. Grab the low-hanging fruit from forcing sizeof(Datum) to 8.

  4. Make type Datum be 8 bytes wide everywhere.

  5. Mop-up for Datum conversion cleanups.