Re: Make SPI_prepare argtypes argument const

Peter Eisentraut <peter@eisentraut.org>

From: Peter Eisentraut <peter@eisentraut.org>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2026-06-11T18:35:22Z
Lists: pgsql-hackers

Attachments

On 11.06.26 14:56, Tom Lane wrote:
> Peter Eisentraut <peter@eisentraut.org> writes:
>> This changes the argtypes argument of SPI_prepare(),
>> SPI_prepare_cursor(), SPI_cursor_open_with_args(), and
>> SPI_execute_with_args() from Oid *argtypes to const Oid *argtypes.
> 
> We've discussed that before, and held off because we weren't entirely
> sure if anyone would complain that it is an API/ABI break.  I think
> it's quite likely that the libabigail buildfarm machines will say
> it is, but is there any actual consequence?

I don't think we are tracking ABI compatibility in unreleased branches?

One related thing I remember being discussed is adding qualifiers to 
functions that are part of the index or table access method APIs, 
because that breaks source code compatibility.  I don't think that kind 
of concern applies here.  (Also, I think we could still do those kinds 
of changes, but it'd be better to do them all at once in one release.)

> Also, if we are going to use const in SPI, there are more parameters
> besides the datatype OIDs that could stand to be const-ified, eg
> the various Datum/isnull arrays.

Those were already done, except that there were two curious stragglers, 
which I've added another patch to fix.

Commits

  1. Make SPI_prepare argtypes argument const

  2. Fixes for SPI "const Datum *" use

  3. Add support for importing statistics from remote servers.