diff options
author | Thomas Munro <tmunro@postgresql.org> | 2020-01-28 13:13:04 +1300 |
---|---|---|
committer | Thomas Munro <tmunro@postgresql.org> | 2020-01-28 13:13:04 +1300 |
commit | 6f38d4dac381b5b8bead302a0b4f81761042cd25 (patch) | |
tree | 93c4f33eb15be92bc1b24ea5bee97f1201dfbbd0 /src/backend/access/heap/heapam_handler.c | |
parent | 4589c6a2a30faba53d0655a8e3a29b54d28bb6f6 (diff) | |
download | postgresql-6f38d4dac381b5b8bead302a0b4f81761042cd25.tar.gz postgresql-6f38d4dac381b5b8bead302a0b4f81761042cd25.zip |
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
Diffstat (limited to 'src/backend/access/heap/heapam_handler.c')
-rw-r--r-- | src/backend/access/heap/heapam_handler.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/backend/access/heap/heapam_handler.c b/src/backend/access/heap/heapam_handler.c index 1f6f6d0ea9e..3fa4b766db8 100644 --- a/src/backend/access/heap/heapam_handler.c +++ b/src/backend/access/heap/heapam_handler.c @@ -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) |