PostgreSQL Source Code: src/include/storage/predicate.h Source File

PostgreSQL Source Code git master
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-2025, 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 "storage/itemptr.h"
18#include "storage/lock.h"
19#include "utils/relcache.h"
20#include "utils/snapshot.h"
21
22
23/*
24 * GUC variables
25 */
26extern PGDLLIMPORT int max_predicate_locks_per_xact;
27extern PGDLLIMPORT int max_predicate_locks_per_relation;
28extern PGDLLIMPORT int max_predicate_locks_per_page;
29
30/*
31 * A handle used for sharing SERIALIZABLEXACT objects between the participants
32 * in a parallel query.
33 */
34 typedef void *SerializableXactHandle;
35
36/*
37 * function prototypes
38 */
39
40/* housekeeping for shared memory predicate lock structures */
41extern void PredicateLockShmemInit(void);
42extern Size PredicateLockShmemSize(void);
43
44extern void CheckPointPredicate(void);
45
46/* predicate lock reporting */
47extern bool PageIsPredicateLocked(Relation relation, BlockNumber blkno);
48
49/* predicate lock maintenance */
50extern Snapshot GetSerializableTransactionSnapshot(Snapshot snapshot);
51extern void SetSerializableTransactionSnapshot(Snapshot snapshot,
52 VirtualTransactionId *sourcevxid,
53 int sourcepid);
54extern void RegisterPredicateLockingXid(TransactionId xid);
55extern void PredicateLockRelation(Relation relation, Snapshot snapshot);
56extern void PredicateLockPage(Relation relation, BlockNumber blkno, Snapshot snapshot);
57extern void PredicateLockTID(Relation relation, ItemPointer tid, Snapshot snapshot,
58 TransactionId tuple_xid);
59extern void PredicateLockPageSplit(Relation relation, BlockNumber oldblkno, BlockNumber newblkno);
60extern void PredicateLockPageCombine(Relation relation, BlockNumber oldblkno, BlockNumber newblkno);
61extern void TransferPredicateLocksToHeapRelation(Relation relation);
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, ItemPointer tid, BlockNumber blkno);
68extern void CheckTableForSerializableConflictIn(Relation relation);
69
70/* final rollback checking */
71extern void PreCommit_CheckForSerializationFailure(void);
72
73/* two-phase commit support */
74extern void AtPrepare_PredicateLocks(void);
75extern void PostPrepare_PredicateLocks(FullTransactionId fxid);
76extern void PredicateLockTwoPhaseFinish(FullTransactionId xid, bool isCommit);
77extern void predicatelock_twophase_recover(FullTransactionId fxid, uint16 info,
78 void *recdata, uint32 len);
79
80/* parallel query support */
81extern SerializableXactHandle ShareSerializableXact(void);
82extern void AttachSerializableXact(SerializableXactHandle handle);
83
84#endif /* PREDICATE_H */
uint32 BlockNumber
Definition: block.h:31
#define PGDLLIMPORT
Definition: c.h:1319
uint16_t uint16
Definition: c.h:537
uint32_t uint32
Definition: c.h:538
uint32 TransactionId
Definition: c.h:657
size_t Size
Definition: c.h:610
const void size_t len
PGDLLIMPORT int max_predicate_locks_per_page
Definition: predicate.c:373
void CheckPointPredicate(void)
Definition: predicate.c:1041
void PredicateLockPageSplit(Relation relation, BlockNumber oldblkno, BlockNumber newblkno)
Definition: predicate.c:3144
void SetSerializableTransactionSnapshot(Snapshot snapshot, VirtualTransactionId *sourcevxid, int sourcepid)
Definition: predicate.c:1722
void PredicateLockPage(Relation relation, BlockNumber blkno, Snapshot snapshot)
Definition: predicate.c:2599
void CheckForSerializableConflictOut(Relation relation, TransactionId xid, Snapshot snapshot)
Definition: predicate.c:4023
bool PageIsPredicateLocked(Relation relation, BlockNumber blkno)
Definition: predicate.c:2008
void predicatelock_twophase_recover(FullTransactionId fxid, uint16 info, void *recdata, uint32 len)
Definition: predicate.c:4909
void * SerializableXactHandle
Definition: predicate.h:34
void CheckForSerializableConflictIn(Relation relation, ItemPointer tid, BlockNumber blkno)
Definition: predicate.c:4336
void CheckTableForSerializableConflictIn(Relation relation)
Definition: predicate.c:4419
void PredicateLockTID(Relation relation, ItemPointer tid, Snapshot snapshot, TransactionId tuple_xid)
Definition: predicate.c:2621
void AttachSerializableXact(SerializableXactHandle handle)
Definition: predicate.c:5056
void PredicateLockTwoPhaseFinish(FullTransactionId xid, bool isCommit)
Definition: predicate.c:4882
SerializableXactHandle ShareSerializableXact(void)
Definition: predicate.c:5047
void PredicateLockPageCombine(Relation relation, BlockNumber oldblkno, BlockNumber newblkno)
Definition: predicate.c:3229
void PreCommit_CheckForSerializationFailure(void)
Definition: predicate.c:4703
void ReleasePredicateLocks(bool isCommit, bool isReadOnlySafe)
Definition: predicate.c:3312
void PredicateLockRelation(Relation relation, Snapshot snapshot)
Definition: predicate.c:2576
void PredicateLockShmemInit(void)
Definition: predicate.c:1145
Size PredicateLockShmemSize(void)
Definition: predicate.c:1357
PGDLLIMPORT int max_predicate_locks_per_relation
Definition: predicate.c:372
void PostPrepare_PredicateLocks(FullTransactionId fxid)
Definition: predicate.c:4859
PGDLLIMPORT int max_predicate_locks_per_xact
Definition: predicate.c:371
void AtPrepare_PredicateLocks(void)
Definition: predicate.c:4790
void RegisterPredicateLockingXid(TransactionId xid)
Definition: predicate.c:1959
bool CheckForSerializableConflictOutNeeded(Relation relation, Snapshot snapshot)
Definition: predicate.c:3991
void TransferPredicateLocksToHeapRelation(Relation relation)
Definition: predicate.c:3123
Snapshot GetSerializableTransactionSnapshot(Snapshot snapshot)
Definition: predicate.c:1682
Definition: rel.h:56

AltStyle によって変換されたページ (->オリジナル) /