PostgreSQL Source Code
git master
lockdefs.h
Go to the documentation of this file.
1
/*-------------------------------------------------------------------------
2
*
3
* lockdefs.h
4
* Frontend exposed parts of postgres' low level lock mechanism
5
*
6
* The split between lockdefs.h and lock.h is not very principled. This file
7
* contains definition that have to (indirectly) be available when included by
8
* FRONTEND code.
9
*
10
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
11
* Portions Copyright (c) 1994, Regents of the University of California
12
*
13
* src/include/storage/lockdefs.h
14
*
15
*-------------------------------------------------------------------------
16
*/
17
#ifndef LOCKDEFS_H_
18
#define LOCKDEFS_H_
19
20
/*
21
* LOCKMODE is an integer (1..N) indicating a lock type. LOCKMASK is a bit
22
* mask indicating a set of held or requested lock types (the bit 1<<mode
23
* corresponds to a particular lock mode).
24
*/
25
typedef
int
LOCKMASK
;
26
typedef
int
LOCKMODE
;
27
28
/*
29
* These are the valid values of type LOCKMODE for all the standard lock
30
* methods (both DEFAULT and USER).
31
*/
32
33
/* NoLock is not a lock mode, but a flag value meaning "don't get a lock" */
34
#define NoLock 0
35
36
#define AccessShareLock 1
/* SELECT */
37
#define RowShareLock 2
/* SELECT FOR UPDATE/FOR SHARE */
38
#define RowExclusiveLock 3
/* INSERT, UPDATE, DELETE */
39
#define ShareUpdateExclusiveLock 4
/* VACUUM (non-FULL), ANALYZE, CREATE
40
* INDEX CONCURRENTLY */
41
#define ShareLock 5
/* CREATE INDEX (WITHOUT CONCURRENTLY) */
42
#define ShareRowExclusiveLock 6
/* like EXCLUSIVE MODE, but allows ROW
43
* SHARE */
44
#define ExclusiveLock 7
/* blocks ROW SHARE/SELECT...FOR UPDATE */
45
#define AccessExclusiveLock 8
/* ALTER TABLE, DROP TABLE, VACUUM FULL,
46
* and unqualified LOCK TABLE */
47
48
#define MaxLockMode 8
/* highest standard lock mode */
49
50
/* See README.tuplock section "Locking to write inplace-updated tables" */
51
#define InplaceUpdateTupleLock ExclusiveLock
52
53
/* WAL representation of an AccessExclusiveLock on a table */
54
typedef
struct
xl_standby_lock
55
{
56
TransactionId
xid
;
/* xid of holder of AccessExclusiveLock */
57
Oid
dbOid
;
/* DB containing table */
58
Oid
relOid
;
/* OID of table */
59
}
xl_standby_lock
;
60
61
#endif
/* LOCKDEFS_H_ */
TransactionId
uint32 TransactionId
Definition:
c.h:606
LOCKMODE
int LOCKMODE
Definition:
lockdefs.h:26
LOCKMASK
int LOCKMASK
Definition:
lockdefs.h:25
xl_standby_lock
struct xl_standby_lock xl_standby_lock
Oid
unsigned int Oid
Definition:
postgres_ext.h:31
xl_standby_lock
Definition:
lockdefs.h:52
xl_standby_lock::relOid
Oid relOid
Definition:
lockdefs.h:55
xl_standby_lock::dbOid
Oid dbOid
Definition:
lockdefs.h:54
xl_standby_lock::xid
TransactionId xid
Definition:
lockdefs.h:53
src
include
storage
lockdefs.h
Generated on Thu Dec 12 2024 18:13:26 for PostgreSQL Source Code by
1.9.1