*** a/src/backend/access/heap/heapam.c --- b/src/backend/access/heap/heapam.c *************** *** 479,486 **** heapgettup(HeapScanDesc scan, if (valid) { - if (!scan->rs_relpredicatelocked) - PredicateLockTuple(scan->rs_rd, tuple, snapshot); LockBuffer(scan->rs_cbuf, BUFFER_LOCK_UNLOCK); return; } --- 479,484 ---- *************** *** 748,763 **** heapgettup_pagemode(HeapScanDesc scan, nkeys, key, valid); if (valid) { - if (!scan->rs_relpredicatelocked) - PredicateLockTuple(scan->rs_rd, tuple, scan->rs_snapshot); scan->rs_cindex = lineindex; return; } } else { - if (!scan->rs_relpredicatelocked) - PredicateLockTuple(scan->rs_rd, tuple, scan->rs_snapshot); scan->rs_cindex = lineindex; return; } --- 746,757 ---- *************** *** 1228,1234 **** heap_beginscan_internal(Relation relation, Snapshot snapshot, scan->rs_strategy = NULL; /* set in initscan */ scan->rs_allow_strat = allow_strat; scan->rs_allow_sync = allow_sync; - scan->rs_relpredicatelocked = false; /* * we can use page-at-a-time mode if it's an MVCC-safe snapshot --- 1222,1227 ---- *** a/src/backend/executor/nodeSeqscan.c --- b/src/backend/executor/nodeSeqscan.c *************** *** 115,121 **** ExecSeqScan(SeqScanState *node) { PredicateLockRelation(node->ss_currentRelation, node->ss_currentScanDesc->rs_snapshot); - node->ss_currentScanDesc->rs_relpredicatelocked = true; return ExecScan((ScanState *) node, (ExecScanAccessMtd) SeqNext, (ExecScanRecheckMtd) SeqRecheck); --- 115,120 ---- *** a/src/include/access/relscan.h --- b/src/include/access/relscan.h *************** *** 35,41 **** typedef struct HeapScanDescData BlockNumber rs_startblock; /* block # to start at */ BufferAccessStrategy rs_strategy; /* access strategy for reads */ bool rs_syncscan; /* report location to syncscan logic? */ - bool rs_relpredicatelocked; /* predicate lock on relation exists */ /* scan current state */ bool rs_inited; /* false = scan not init'd yet */ --- 35,40 ----