YugabyteDB (2.13.0.0-b42, bfc6a6643e7399ac8a0e81d06a3ee6d6571b33ab)

Coverage Report

Created: 2022-03-09 17:30

/Users/deen/code/yugabyte-db/src/postgres/src/include/storage/predicate.h
Line
Count
Source
1
/*-------------------------------------------------------------------------
2
 *
3
 * predicate.h
4
 *    POSTGRES public predicate locking definitions.
5
 *
6
 *
7
 * Portions Copyright (c) 1996-2018, 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/lock.h"
18
#include "utils/relcache.h"
19
#include "utils/snapshot.h"
20
21
22
/*
23
 * GUC variables
24
 */
25
extern int  max_predicate_locks_per_xact;
26
extern int  max_predicate_locks_per_relation;
27
extern int  max_predicate_locks_per_page;
28
29
30
/* Number of SLRU buffers to use for predicate locking */
31
7.22k
#define NUM_OLDSERXID_BUFFERS 16
32
33
34
/*
35
 * function prototypes
36
 */
37
38
/* housekeeping for shared memory predicate lock structures */
39
extern void InitPredicateLocks(void);
40
extern Size PredicateLockShmemSize(void);
41
42
extern void CheckPointPredicate(void);
43
44
/* predicate lock reporting */
45
extern bool PageIsPredicateLocked(Relation relation, BlockNumber blkno);
46
47
/* predicate lock maintenance */
48
extern Snapshot GetSerializableTransactionSnapshot(Snapshot snapshot);
49
extern void SetSerializableTransactionSnapshot(Snapshot snapshot,
50
                   VirtualTransactionId *sourcevxid,
51
                   int sourcepid);
52
extern void RegisterPredicateLockingXid(TransactionId xid);
53
extern void PredicateLockRelation(Relation relation, Snapshot snapshot);
54
extern void PredicateLockPage(Relation relation, BlockNumber blkno, Snapshot snapshot);
55
extern void PredicateLockTuple(Relation relation, HeapTuple tuple, Snapshot snapshot);
56
extern void PredicateLockPageSplit(Relation relation, BlockNumber oldblkno, BlockNumber newblkno);
57
extern void PredicateLockPageCombine(Relation relation, BlockNumber oldblkno, BlockNumber newblkno);
58
extern void TransferPredicateLocksToHeapRelation(Relation relation);
59
extern void ReleasePredicateLocks(bool isCommit);
60
61
/* conflict detection (may also trigger rollback) */
62
extern void CheckForSerializableConflictOut(bool valid, Relation relation, HeapTuple tuple,
63
                Buffer buffer, Snapshot snapshot);
64
extern void CheckForSerializableConflictIn(Relation relation, HeapTuple tuple, Buffer buffer);
65
extern void CheckTableForSerializableConflictIn(Relation relation);
66
67
/* final rollback checking */
68
extern void PreCommit_CheckForSerializationFailure(void);
69
70
/* two-phase commit support */
71
extern void AtPrepare_PredicateLocks(void);
72
extern void PostPrepare_PredicateLocks(TransactionId xid);
73
extern void PredicateLockTwoPhaseFinish(TransactionId xid, bool isCommit);
74
extern void predicatelock_twophase_recover(TransactionId xid, uint16 info,
75
                 void *recdata, uint32 len);
76
77
#endif              /* PREDICATE_H */