mirror of
https://github.com/postgres/postgres.git
synced 2025-07-14 08:21:07 +03:00
Remove dependency on HeapTuple from predicate locking functions.
The following changes make the predicate locking functions more generic and suitable for use by future access methods: - PredicateLockTuple() is renamed to PredicateLockTID(). It takes ItemPointer and inserting transaction ID instead of HeapTuple. - CheckForSerializableConflictIn() takes blocknum instead of buffer. - CheckForSerializableConflictOut() no longer takes HeapTuple or buffer. Author: Ashwin Agrawal Reviewed-by: Andres Freund, Kuntal Ghosh, Thomas Munro Discussion: https://postgr.es/m/CALfoeiv0k3hkEb3Oqk%3DziWqtyk2Jys1UOK5hwRBNeANT_yX%2Bng%40mail.gmail.com
This commit is contained in:
@ -2171,10 +2171,11 @@ heapam_scan_bitmap_next_block(TableScanDesc scan,
|
||||
if (valid)
|
||||
{
|
||||
hscan->rs_vistuples[ntup++] = offnum;
|
||||
PredicateLockTuple(scan->rs_rd, &loctup, snapshot);
|
||||
PredicateLockTID(scan->rs_rd, &loctup.t_self, snapshot,
|
||||
HeapTupleHeaderGetXmin(loctup.t_data));
|
||||
}
|
||||
CheckForSerializableConflictOut(valid, scan->rs_rd, &loctup,
|
||||
buffer, snapshot);
|
||||
HeapCheckForSerializableConflictOut(valid, scan->rs_rd, &loctup,
|
||||
buffer, snapshot);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2361,8 +2362,8 @@ heapam_scan_sample_next_tuple(TableScanDesc scan, SampleScanState *scanstate,
|
||||
|
||||
/* in pagemode, heapgetpage did this for us */
|
||||
if (!pagemode)
|
||||
CheckForSerializableConflictOut(visible, scan->rs_rd, tuple,
|
||||
hscan->rs_cbuf, scan->rs_snapshot);
|
||||
HeapCheckForSerializableConflictOut(visible, scan->rs_rd, tuple,
|
||||
hscan->rs_cbuf, scan->rs_snapshot);
|
||||
|
||||
/* Try next tuple from same page. */
|
||||
if (!visible)
|
||||
|
Reference in New Issue
Block a user