Re: Potential ABI breakage in upcoming minor releases
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Noah Misch <noah@leadboat.com>
Cc: Aleksander Alekseev <aleksander@timescale.com>,
pgsql-hackers <pgsql-hackers@postgresql.org>,
Marco Slot <marco.slot@gmail.com>,
Alvaro Herrera <alvherre@alvh.no-ip.org>,
Christoph Berg <myon@debian.org>,
Pavan Deolasee <pavan.deolasee@gmail.com>
Date: 2024-11-15T21:13:16Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Undo unintentional ABI break in struct ResultRelInfo.
- ee33d58471de 16.6 landed
- 6bfacd368bb4 17.2 landed
- 17db248f318f 15.10 landed
- 099e711b77b8 14.15 landed
-
For inplace update durability, make heap_update() callers wait.
- 51ff46de29f6 16.5 cited
-
Fix btmarkpos/btrestrpos array key wraparound bug.
- 3fa81b62e09b 16.1 cited
-
Fix calculation of which GENERATED columns need to be updated.
- 8cd190e13a22 14.7 cited
After some quick checking with "git diff", I can confirm that there is no ABI break for ResultRelInfo in v12 or v13. To fix it in v14-v17, we could do this: diff --git a/src/include/nodes/execnodes.h b/src/include/nodes/execnodes.h index 418c81f4be..17b0ec5138 100644 --- a/src/include/nodes/execnodes.h +++ b/src/include/nodes/execnodes.h @@ -484,6 +484,9 @@ typedef struct ResultRelInfo /* Have the projection and the slots above been initialized? */ bool ri_projectNewInfoValid; + /* updates do LockTuple() before oldtup read; see README.tuplock */ + bool ri_needLockTagTuple; + /* triggers to be fired, if any */ TriggerDesc *ri_TrigDesc; @@ -592,9 +595,6 @@ typedef struct ResultRelInfo * one of its ancestors; see ExecCrossPartitionUpdateForeignKey(). */ List *ri_ancestorResultRels; - - /* updates do LockTuple() before oldtup read; see README.tuplock */ - bool ri_needLockTagTuple; } ResultRelInfo; /* ---------------- (The next-to-last field varies across branches, but this general idea will work.) In other words, put ri_needLockTagTuple in the same place it is in HEAD. In other words, our current guidelines for preserving ABI compatibility actually *created* this disaster, because the HEAD change was fine from an ABI standpoint but what was done in back branches was not. So we do need to rethink how that's worded. regards, tom lane