Re: pgaio_io_get_id() type (was Re: Datum as struct)

Peter Eisentraut <peter@eisentraut.org>

From: Peter Eisentraut <peter@eisentraut.org>
To: Andres Freund <andres@anarazel.de>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2025-08-21T17:56:23Z
Lists: pgsql-hackers
On 08.08.25 22:07, Andres Freund wrote:
> On 2025-08-05 19:20:20 +0200, Peter Eisentraut wrote:
>> On 31.07.25 19:17, Tom Lane wrote:
>>> Also I see a "// XXX" in pg_get_aios, which I guess is a note
>>> to confirm the data type to use for ioh_id?
>>
>> Yes, the stuff returned from pgaio_io_get_id() should be int, but some code
>> uses uint32, and also UINT32_MAX as a special marker.  Here is a patch that
>> tries to straighten that out by using int consistently and -1 as a special
>> marker.
> 
>>  From e1bb97e13af226cd15c9a59929aef48bc92c4ac2 Mon Sep 17 00:00:00 2001
>> From: Peter Eisentraut <peter@eisentraut.org>
>> Date: Tue, 5 Aug 2025 19:16:38 +0200
>> Subject: [PATCH] Use consistent type for pgaio_io_get_id() result
>>
>> The result of pgaio_io_get_id() was being assigned to a mix of int and
>> uint32 variables.  This fixes it to use int consistently, which seems
>> the most correct.  Also change the queue empty special value in
>> method_worker.c to -1 from UINT32_MAX.
> 
> WFM. I guess I could see some value going with an unsigned value instead of a
> signed one, but it really doesn't matter...

I have committed this.




Commits

  1. Use consistent type for pgaio_io_get_id() result

  2. Mop-up for Datum conversion cleanups.

  3. Add missing Datum conversions

  4. Remove useless/superfluous Datum conversions

  5. Fix incorrect lack of Datum conversion in _int_matchsel()

  6. Improve tests of date_trunc() with infinity and unsupported units

  7. Fix incorrect Datum conversion in timestamptz_trunc_internal()

  8. Fix various hash function uses

  9. Fix mixups of FooGetDatum() vs. DatumGetFoo()