Skip to content

Commit 74e5ea1

Browse files
Doc: indexUnchanged is strictly a hint.
Clearly spell out the limitations of aminsert()'s indexUnchanged hinting mechanism in the index AM documentation. Oversight in commit 9dc718b, which added the "logically unchanged index" hint (which is used to trigger bottom-up index deletion). Author: Peter Geoghegan <pg@bowt.ie> Reported-By: Tom Lane <tgl@sss.pgh.pa.us> Reviewed-By: Tom Lane <tgl@sss.pgh.pa.us> Discussion: https://postgr.es/m/CAH2-WzmU_BQ=-H9L+bxTSMQBqHMjp1DSwGypvL0gKs+dTOfkKg@mail.gmail.com Backpatch: 14-, where indexUnchanged hinting was introduced.
1 parent 00d7fb5 commit 74e5ea1

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

doc/src/sgml/indexam.sgml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -332,9 +332,13 @@ aminsert (Relation indexRelation,
332332
modify any columns covered by the index, but nevertheless requires a
333333
new version in the index. The index AM may use this hint to decide
334334
to apply bottom-up index deletion in parts of the index where many
335-
versions of the same logical row accumulate. Note that updating a
336-
non-key column does not affect the value of
337-
<literal>indexUnchanged</literal>.
335+
versions of the same logical row accumulate. Note that updating a non-key
336+
column or a column that only appears in a partial index predicate does not
337+
affect the value of <literal>indexUnchanged</literal>. The core code
338+
determines each tuple's <literal>indexUnchanged</literal> value using a low
339+
overhead approach that allows both false positives and false negatives.
340+
Index AMs must not treat <literal>indexUnchanged</literal> as an
341+
authoritative source of information about tuple visibility or versioning.
338342
</para>
339343

340344
<para>

0 commit comments

Comments
 (0)