Skip to content

Commit 6bfacd3

Browse files
committed
Undo unintentional ABI break in struct ResultRelInfo.
Commits aac2c9b 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
1 parent 1c05004 commit 6bfacd3

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

src/include/nodes/execnodes.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -484,6 +484,9 @@ typedef struct ResultRelInfo
484484
/* Have the projection and the slots above been initialized? */
485485
bool ri_projectNewInfoValid;
486486

487+
/* updates do LockTuple() before oldtup read; see README.tuplock */
488+
bool ri_needLockTagTuple;
489+
487490
/* triggers to be fired, if any */
488491
TriggerDesc *ri_TrigDesc;
489492

@@ -592,9 +595,6 @@ typedef struct ResultRelInfo
592595
* one of its ancestors; see ExecCrossPartitionUpdateForeignKey().
593596
*/
594597
List *ri_ancestorResultRels;
595-
596-
/* updates do LockTuple() before oldtup read; see README.tuplock */
597-
bool ri_needLockTagTuple;
598598
} ResultRelInfo;
599599

600600
/* ----------------

0 commit comments

Comments
 (0)