Skip to content

Commit

Permalink
Undo unintentional ABI break in struct ResultRelInfo.
Browse files Browse the repository at this point in the history
Commits aac2c9b4f et al. added a bool field to struct ResultRelInfo.
That's no problem in the master branch, but in released branches
care must be taken when modifying publicly-visible structs to avoid
an ABI break for extensions.  Frequently we solve that by adding the
new field at the end of the struct, and that's what was done here.
But ResultRelInfo has stricter constraints than just about any other
node type in Postgres.  Some executor APIs require extensions to index
into arrays of ResultRelInfo, which means that any change whatever in
sizeof(ResultRelInfo) causes a fatal ABI break.

Fortunately, this is easy to fix, because the new field can be
squeezed into available padding space instead --- indeed, that's where
it was put in master, so this fix also removes a cross-branch coding
variation.

Per report from Pavan Deolasee.  Patch v14-v17 only; earlier versions
did not gain the extra field, nor is there any problem in master.

Discussion: https://postgr.es/m/CABOikdNmVBC1LL6pY26dyxAS2f+gLZvTsNt=2XbcyG7WxXVBBQ@mail.gmail.com
(cherry picked from commit 17db248f318f09b143af208fdcc1f067b3b0b2cb)
  • Loading branch information
tglsfdc authored and shardgupta committed Dec 6, 2024
1 parent e06cd04 commit b94f988
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions src/include/nodes/execnodes.h
Original file line number Diff line number Diff line change
Expand Up @@ -456,6 +456,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;

Expand Down Expand Up @@ -556,9 +559,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;

/*
Expand Down

0 comments on commit b94f988

Please sign in to comment.