>>>>> "Amit" == Amit Kapila <amit.kapila16@gmail.com> writes:
>> Presumably the problem is that the standby isn't authorized to change
>> the btree index's "entry is dead" bits,
Amit> I don't see anything like that in the code. We use _bt_killitems
Amit> to mark the items as dead and neither that function or any of its
Amit> caller has any such assumption.
See index_fetch_heap:
/*
* If we scanned a whole HOT chain and found only dead tuples, tell index
* AM to kill its entry for that TID (this will take effect in the next
* amgettuple call, in index_getnext_tid). We do not do this when in
* recovery because it may violate MVCC to do so. See comments in
* RelationGetIndexScan().
*/
if (!scan->xactStartedInRecovery)
scan->kill_prior_tuple = all_dead;
(this is the only place where kill_prior_tuple can be set to true)
--
Andrew (irc:RhodiumToad)