PostgreSQL Source Code  git master
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-2024, 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  LCS_FORKEYSHARE, /* FOR KEY SHARE */
25  LCS_FORSHARE, /* FOR SHARE */
26  LCS_FORNOKEYUPDATE, /* FOR NO KEY UPDATE */
27  LCS_FORUPDATE, /* FOR UPDATE */
29 
30 /*
31  * This enum controls how to deal with rows being locked by FOR UPDATE/SHARE
32  * clauses (i.e., it represents the NOWAIT and SKIP LOCKED options).
33  * The ordering here is important, because the highest numerical value takes
34  * precedence when a RTE is specified multiple ways. See applyLockingClause.
35  */
36 typedef enum LockWaitPolicy
37 {
38  /* Wait for the lock to become available (default behavior) */
40  /* Skip rows that can't be locked (SKIP LOCKED) */
42  /* Raise an error if a row cannot be locked (NOWAIT) */
45 
46 /*
47  * Possible lock modes for a tuple.
48  */
49 typedef enum LockTupleMode
50 {
51  /* SELECT FOR KEY SHARE */
53  /* SELECT FOR SHARE */
55  /* SELECT FOR NO KEY UPDATE, and UPDATEs that don't modify key columns */
57  /* SELECT FOR UPDATE, UPDATEs that modify key columns, and DELETE */
60 
61 #endif /* LOCKOPTIONS_H */
LockWaitPolicy
Definition: lockoptions.h:37
@ LockWaitSkip
Definition: lockoptions.h:41
@ LockWaitBlock
Definition: lockoptions.h:39
@ LockWaitError
Definition: lockoptions.h:43
LockTupleMode
Definition: lockoptions.h:50
@ LockTupleExclusive
Definition: lockoptions.h:58
@ LockTupleNoKeyExclusive
Definition: lockoptions.h:56
@ LockTupleShare
Definition: lockoptions.h:54
@ LockTupleKeyShare
Definition: lockoptions.h:52
LockClauseStrength
Definition: lockoptions.h:22
@ LCS_FORUPDATE
Definition: lockoptions.h:27
@ LCS_NONE
Definition: lockoptions.h:23
@ LCS_FORSHARE
Definition: lockoptions.h:25
@ LCS_FORKEYSHARE
Definition: lockoptions.h:24
@ LCS_FORNOKEYUPDATE
Definition: lockoptions.h:26