What's the purpose of the "HeapScanHintPagePrune" mechanism in index builds? I lost track of the discussion on create index, is the it necessary for correctness?
Its not required strictly for correctness, but it helps us prune the HOT-chains while index building. During index build, if we skip a tuple which is RECENTLY_DEAD, existing transactions can not use the index for queries. Pruning the HOT-chains reduces the possibility of finding such tuples while building the index.
A comment in IndexBuildHeapScan explaining why it's done would be nice.
I would do that.
In any case a PG_TRY/CATCH block should be used to make sure it's turned off after an unsuccessful index build.
Oh thanks. Would do that too
I would wait for other review comments before submitting a fresh patch. I hope thats ok.