PostgreSQL Source Code git master
Loading...
Searching...
No Matches
predicate.h
Go to the documentation of this file.
1/*-------------------------------------------------------------------------
2 *
3 * predicate.h
4 * POSTGRES public predicate locking definitions.
5 *
6 *
7 * Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group
8 * Portions Copyright (c) 1994, Regents of the University of California
9 *
10 * src/include/storage/predicate.h
11 *
12 *-------------------------------------------------------------------------
13 */
14#ifndef PREDICATE_H
15#define PREDICATE_H
16
17#include "access/transam.h"
18#include "storage/itemptr.h"
19#include "utils/relcache.h"
20#include "utils/snapshot.h"
21
22/*
23 * forward references in this file
24 */
26
27
28/*
29 * GUC variables
30 */
34
35/*
36 * A handle used for sharing SERIALIZABLEXACT objects between the participants
37 * in a parallel query.
38 */
40
41/*
42 * function prototypes
43 */
44extern void CheckPointPredicate(void);
45
46/* predicate lock reporting */
47extern bool PageIsPredicateLocked(Relation relation, BlockNumber blkno);
48
49/* predicate lock maintenance */
53 int sourcepid);
55extern void PredicateLockRelation(Relation relation, Snapshot snapshot);
56extern void PredicateLockPage(Relation relation, BlockNumber blkno, Snapshot snapshot);
57extern void PredicateLockTID(Relation relation, const ItemPointerData *tid, Snapshot snapshot,
62extern void ReleasePredicateLocks(bool isCommit, bool isReadOnlySafe);
63
64/* conflict detection (may also trigger rollback) */
65extern bool CheckForSerializableConflictOutNeeded(Relation relation, Snapshot snapshot);
66extern void CheckForSerializableConflictOut(Relation relation, TransactionId xid, Snapshot snapshot);
67extern void CheckForSerializableConflictIn(Relation relation, const ItemPointerData *tid, BlockNumber blkno);
69
70/* final rollback checking */
72
73/* two-phase commit support */
74extern void AtPrepare_PredicateLocks(void);
78 void *recdata, uint32 len);
79
80/* parallel query support */
83
84#endif /* PREDICATE_H */
uint32 BlockNumber
Definition block.h:31
#define PGDLLIMPORT
Definition c.h:1421
uint16_t uint16
Definition c.h:623
uint32_t uint32
Definition c.h:624
uint32 TransactionId
Definition c.h:736
const void size_t len
PGDLLIMPORT int max_predicate_locks_per_page
Definition predicate.c:375
void CheckPointPredicate(void)
Definition predicate.c:1022
void PredicateLockPageSplit(Relation relation, BlockNumber oldblkno, BlockNumber newblkno)
Definition predicate.c:3074
void CheckForSerializableConflictIn(Relation relation, const ItemPointerData *tid, BlockNumber blkno)
Definition predicate.c:4266
void SetSerializableTransactionSnapshot(Snapshot snapshot, VirtualTransactionId *sourcevxid, int sourcepid)
Definition predicate.c:1652
void PredicateLockPage(Relation relation, BlockNumber blkno, Snapshot snapshot)
Definition predicate.c:2529
void CheckForSerializableConflictOut(Relation relation, TransactionId xid, Snapshot snapshot)
Definition predicate.c:3953
bool PageIsPredicateLocked(Relation relation, BlockNumber blkno)
Definition predicate.c:1938
void PredicateLockTwoPhaseFinish(FullTransactionId fxid, bool isCommit)
Definition predicate.c:4812
void predicatelock_twophase_recover(FullTransactionId fxid, uint16 info, void *recdata, uint32 len)
Definition predicate.c:4839
void * SerializableXactHandle
Definition predicate.h:39
void CheckTableForSerializableConflictIn(Relation relation)
Definition predicate.c:4349
void AttachSerializableXact(SerializableXactHandle handle)
Definition predicate.c:4986
SerializableXactHandle ShareSerializableXact(void)
Definition predicate.c:4977
void PredicateLockPageCombine(Relation relation, BlockNumber oldblkno, BlockNumber newblkno)
Definition predicate.c:3159
void PreCommit_CheckForSerializationFailure(void)
Definition predicate.c:4633
void ReleasePredicateLocks(bool isCommit, bool isReadOnlySafe)
Definition predicate.c:3242
void PredicateLockRelation(Relation relation, Snapshot snapshot)
Definition predicate.c:2506
void PredicateLockTID(Relation relation, const ItemPointerData *tid, Snapshot snapshot, TransactionId tuple_xid)
Definition predicate.c:2551
PGDLLIMPORT int max_predicate_locks_per_relation
Definition predicate.c:374
void PostPrepare_PredicateLocks(FullTransactionId fxid)
Definition predicate.c:4789
PGDLLIMPORT int max_predicate_locks_per_xact
Definition predicate.c:373
void AtPrepare_PredicateLocks(void)
Definition predicate.c:4720
void RegisterPredicateLockingXid(TransactionId xid)
Definition predicate.c:1889
bool CheckForSerializableConflictOutNeeded(Relation relation, Snapshot snapshot)
Definition predicate.c:3921
void TransferPredicateLocksToHeapRelation(Relation relation)
Definition predicate.c:3053
Snapshot GetSerializableTransactionSnapshot(Snapshot snapshot)
Definition predicate.c:1612
static int fb(int x)