mirror of
https://github.com/postgres/postgres.git
synced 2025-11-24 00:23:06 +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:
@@ -57,16 +57,17 @@ extern void SetSerializableTransactionSnapshot(Snapshot snapshot,
|
||||
extern void RegisterPredicateLockingXid(TransactionId xid);
|
||||
extern void PredicateLockRelation(Relation relation, Snapshot snapshot);
|
||||
extern void PredicateLockPage(Relation relation, BlockNumber blkno, Snapshot snapshot);
|
||||
extern void PredicateLockTuple(Relation relation, HeapTuple tuple, Snapshot snapshot);
|
||||
extern void PredicateLockTID(Relation relation, ItemPointer tid, Snapshot snapshot,
|
||||
TransactionId insert_xid);
|
||||
extern void PredicateLockPageSplit(Relation relation, BlockNumber oldblkno, BlockNumber newblkno);
|
||||
extern void PredicateLockPageCombine(Relation relation, BlockNumber oldblkno, BlockNumber newblkno);
|
||||
extern void TransferPredicateLocksToHeapRelation(Relation relation);
|
||||
extern void ReleasePredicateLocks(bool isCommit, bool isReadOnlySafe);
|
||||
|
||||
/* conflict detection (may also trigger rollback) */
|
||||
extern void CheckForSerializableConflictOut(bool valid, Relation relation, HeapTuple tuple,
|
||||
Buffer buffer, Snapshot snapshot);
|
||||
extern void CheckForSerializableConflictIn(Relation relation, HeapTuple tuple, Buffer buffer);
|
||||
extern bool CheckForSerializableConflictOutNeeded(Relation relation, Snapshot snapshot);
|
||||
extern void CheckForSerializableConflictOut(Relation relation, TransactionId xid, Snapshot snapshot);
|
||||
extern void CheckForSerializableConflictIn(Relation relation, ItemPointer tid, BlockNumber blkno);
|
||||
extern void CheckTableForSerializableConflictIn(Relation relation);
|
||||
|
||||
/* final rollback checking */
|
||||
|
||||
Reference in New Issue
Block a user