Re: Noah Misch
> Based on a grep of PGXN code, here are some or all of the modules that react
> to sizeof(ResultRelInfo):
>
> $ grepx -r 'lloc.*ResultRelInfo' | tee /tmp/1 | sed 's/-[^:]*/:/'|sort -u
> apacheage:: resultRelInfo = palloc(sizeof(ResultRelInfo));
Confirmed, crashing: AGE for 14..17 (12..13 seem fine)
> citus:: resultRelInfo = makeNode(ResultRelInfo);
> citus:: ResultRelInfo *resultRelInfo = makeNode(ResultRelInfo);
> pg_bulkload:: checker->resultRelInfo = makeNode(ResultRelInfo);
> pg_bulkload:: self->relinfo = makeNode(ResultRelInfo);
> pg_pathman:: child_result_rel_info = makeNode(ResultRelInfo);
> pg_pathman:: parent_result_rel = makeNode(ResultRelInfo);
> pg_pathman:: parent_rri = makeNode(ResultRelInfo);
> pg_pathman:: part_result_rel_info = makeNode(ResultRelInfo);
> vops:: resultRelInfo = makeNode(ResultRelInfo);
(These are not on apt.pg.o)
I've also tested other packages where ResultRelInfo appears in the
source, but they all passed the tests (most have decent test but a few
have not):
Bad:
postgresql-16-age
timescaledb
Good:
hypopg
libpg-query
pglast
pglogical
pgpool2
pgsql-ogr-fdw
pg-squeeze
postgresql-mysql-fdw (impossible to test sanely because mysql/mariadb
take turns at being the default, and in some environments just don't
start)
> I don't know whether we should make a new release, amend the release
> announcement to call for extension rebuilds, or just stop here.
> https://wiki.postgresql.org/wiki/Committing_checklist#Maintaining_ABI_compatibility_while_backpatching
> mentions the problem, but neither it nor the new standard at
> postgr.es/c/e54a42a say how reticent we'll be to add to the end of a struct on
> which extensions do sizeof.
I'd say the ship has sailed, a new release would now break things the
other way round.
Christoph