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-2017, 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 #endif /* LOCKOPTIONS_H */
LockClauseStrength
Definition: lockoptions.h:21
LockWaitPolicy
Definition: lockoptions.h:36