1
0
mirror of https://github.com/postgres/postgres.git synced 2025-12-19 17:02:53 +03:00

Add explanatory comment to prune_freeze_setup()

heap_page_prune_and_freeze() fills in PruneState->deadoffsets, the array
of OffsetNumbers of dead tuples. It is returned to the caller in the
PruneFreezeResult. To avoid having two copies of the array, the
PruneState saves only a pointer to the array. This was a bit unusual and
confusing, so add a clarifying comment.

Author: Melanie Plageman <melanieplageman@gmail.com>
Suggested-by: Chao Li <li.evan.chao@gmail.com>
Discussion: https://postgr.es/m/CAEoWx2=jiD1nqch4JQN+odAxZSD7mRvdoHUGJYN2r6tQG_66yQ@mail.gmail.com
This commit is contained in:
Melanie Plageman
2025-12-16 10:30:14 -05:00
parent 4877391ce8
commit bfe5c4bec7

View File

@@ -385,6 +385,13 @@ prune_freeze_setup(PruneFreezeParams *params,
prstate->recently_dead_tuples = 0; prstate->recently_dead_tuples = 0;
prstate->hastup = false; prstate->hastup = false;
prstate->lpdead_items = 0; prstate->lpdead_items = 0;
/*
* deadoffsets are filled in during pruning but are only used to populate
* PruneFreezeResult->deadoffsets. To avoid needing two copies of the
* array, just save a pointer to the result offsets array in the
* PruneState.
*/
prstate->deadoffsets = presult->deadoffsets; prstate->deadoffsets = presult->deadoffsets;
prstate->frz_conflict_horizon = InvalidTransactionId; prstate->frz_conflict_horizon = InvalidTransactionId;