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 */
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 */
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 */
37typedef enum LockWaitPolicy
38{
39 /* Wait for the lock to become available (default behavior) */
41 /* Skip rows that can't be locked (SKIP LOCKED) */
43 /* Raise an error if a row cannot be locked (NOWAIT) */
46
47/*
48 * Possible lock modes for a tuple.
49 */
50typedef enum LockTupleMode
51{
52 /* SELECT FOR KEY SHARE */
54 /* SELECT FOR SHARE */
56 /* SELECT FOR NO KEY UPDATE, and UPDATEs that don't modify key columns */
58 /* SELECT FOR UPDATE, UPDATEs that modify key columns, and DELETE */
61
62#endif /* LOCKOPTIONS_H */
LockWaitPolicy
Definition lockoptions.h:38
@ LockWaitSkip
Definition lockoptions.h:42
@ LockWaitBlock
Definition lockoptions.h:40
@ LockWaitError
Definition lockoptions.h:44
LockTupleMode
Definition lockoptions.h:51
@ LockTupleExclusive
Definition lockoptions.h:59
@ LockTupleNoKeyExclusive
Definition lockoptions.h:57
@ LockTupleShare
Definition lockoptions.h:55
@ LockTupleKeyShare
Definition lockoptions.h:53
LockClauseStrength
Definition lockoptions.h:22
@ LCS_FORUPDATE
Definition lockoptions.h:28
@ LCS_NONE
Definition lockoptions.h:23
@ LCS_FORSHARE
Definition lockoptions.h:26
@ LCS_FORKEYSHARE
Definition lockoptions.h:25
@ LCS_FORNOKEYUPDATE
Definition lockoptions.h:27