Re: table AM option passing

Zsolt Parragi <zsolt.parragi@percona.com>

From: Zsolt Parragi <zsolt.parragi@percona.com>
To: Álvaro Herrera <alvherre@kurilemu.de>
Cc: Andres Freund <andres@anarazel.de>, Pg Hackers <pgsql-hackers@lists.postgresql.org>, Nathan Bossart <nathandbossart@gmail.com>
Date: 2026-03-31T23:20:00Z
Lists: pgsql-hackers
 static inline TM_Result
 table_tuple_delete(Relation rel, ItemPointer tid, CommandId cid,
-    Snapshot snapshot, Snapshot crosscheck, bool wait,
-    TM_FailureData *tmfd, bool changingPart)
+    uint32 options, Snapshot snapshot, Snapshot crosscheck,
+    bool wait, TM_FailureData *tmfd)

The doc comment still referneces changingPart
Similarly table_tuple_update doesn't document the new options parameter.

@@ -339,7 +341,8 @@ heapam_tuple_update(Relation relation, ItemPointer
otid, TupleTableSlot *slot,
  slot->tts_tableOid = RelationGetRelid(relation);
  tuple->t_tableOid = slot->tts_tableOid;

- result = heap_update(relation, otid, tuple, cid, crosscheck, wait,
+ result = heap_update(relation, otid, tuple, cid, options,
+ crosscheck, wait,
  tmfd, lockmode, update_indexes);
  ItemPointerCopy(&tuple->t_self, &slot->tts_tid);

options is marked pg_attribute_unused above, that seems misleading.
Should the annotation be part of the heap_update signature instead?



Commits

  1. Give an 'options' parameter to tuple_delete/_update

  2. Fix vicinity of tuple_insert to use uint32, not int, for options

  3. Have table_insert and siblings use an unsigned type for options

  4. Remove the following unused type definitions: bool8, bool16, bool32, word8,