PostgreSQL Source Code
git master
Loading...
Searching...
No Matches
lockoptions.h
Go to the documentation of this file.
1
/*-------------------------------------------------------------------------
2
*
3
* lockoptions.h
4
* Common header for some locking-related declarations.
5
*
6
*
7
* Copyright (c) 2014-2026, PostgreSQL Global Development Group
8
*
9
* src/include/nodes/lockoptions.h
10
*
11
*-------------------------------------------------------------------------
12
*/
13
#ifndef LOCKOPTIONS_H
14
#define LOCKOPTIONS_H
15
16
/*
17
* This enum represents the different strengths of FOR UPDATE/SHARE clauses.
18
* The ordering here is important, because the highest numerical value takes
19
* precedence when a RTE is specified multiple ways. See applyLockingClause.
20
*/
21
typedef
enum
LockClauseStrength
22
{
23
LCS_NONE
,
/* no such clause - only used in PlanRowMark
24
* and ON CONFLICT DO SELECT */
25
LCS_FORKEYSHARE
,
/* FOR KEY SHARE */
26
LCS_FORSHARE
,
/* FOR SHARE */
27
LCS_FORNOKEYUPDATE
,
/* FOR NO KEY UPDATE */
28
LCS_FORUPDATE
,
/* FOR UPDATE */
29
}
LockClauseStrength
;
30
31
/*
32
* This enum controls how to deal with rows being locked by FOR UPDATE/SHARE
33
* clauses (i.e., it represents the NOWAIT and SKIP LOCKED options).
34
* The ordering here is important, because the highest numerical value takes
35
* precedence when a RTE is specified multiple ways. See applyLockingClause.
36
*/
37
typedef
enum
LockWaitPolicy
38
{
39
/* Wait for the lock to become available (default behavior) */
40
LockWaitBlock
,
41
/* Skip rows that can't be locked (SKIP LOCKED) */
42
LockWaitSkip
,
43
/* Raise an error if a row cannot be locked (NOWAIT) */
44
LockWaitError
,
45
}
LockWaitPolicy
;
46
47
/*
48
* Possible lock modes for a tuple.
49
*/
50
typedef
enum
LockTupleMode
51
{
52
/* SELECT FOR KEY SHARE */
53
LockTupleKeyShare
,
54
/* SELECT FOR SHARE */
55
LockTupleShare
,
56
/* SELECT FOR NO KEY UPDATE, and UPDATEs that don't modify key columns */
57
LockTupleNoKeyExclusive
,
58
/* SELECT FOR UPDATE, UPDATEs that modify key columns, and DELETE */
59
LockTupleExclusive
,
60
}
LockTupleMode
;
61
62
#endif
/* LOCKOPTIONS_H */
LockWaitPolicy
LockWaitPolicy
Definition
lockoptions.h:38
LockWaitSkip
@ LockWaitSkip
Definition
lockoptions.h:42
LockWaitBlock
@ LockWaitBlock
Definition
lockoptions.h:40
LockWaitError
@ LockWaitError
Definition
lockoptions.h:44
LockTupleMode
LockTupleMode
Definition
lockoptions.h:51
LockTupleExclusive
@ LockTupleExclusive
Definition
lockoptions.h:59
LockTupleNoKeyExclusive
@ LockTupleNoKeyExclusive
Definition
lockoptions.h:57
LockTupleShare
@ LockTupleShare
Definition
lockoptions.h:55
LockTupleKeyShare
@ LockTupleKeyShare
Definition
lockoptions.h:53
LockClauseStrength
LockClauseStrength
Definition
lockoptions.h:22
LCS_FORUPDATE
@ LCS_FORUPDATE
Definition
lockoptions.h:28
LCS_NONE
@ LCS_NONE
Definition
lockoptions.h:23
LCS_FORSHARE
@ LCS_FORSHARE
Definition
lockoptions.h:26
LCS_FORKEYSHARE
@ LCS_FORKEYSHARE
Definition
lockoptions.h:25
LCS_FORNOKEYUPDATE
@ LCS_FORNOKEYUPDATE
Definition
lockoptions.h:27
src
include
nodes
lockoptions.h
Generated on Sun Mar 1 2026 12:13:17 for PostgreSQL Source Code by
1.9.8