PostgreSQL Source Code: src/include/nodes/lockoptions.h Source File

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-2025, 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 */
28 } LockClauseStrength;
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) */
39 LockWaitBlock,
40 /* Skip rows that can't be locked (SKIP LOCKED) */
41 LockWaitSkip,
42 /* Raise an error if a row cannot be locked (NOWAIT) */
43 LockWaitError,
44 } LockWaitPolicy;
45
46/*
47 * Possible lock modes for a tuple.
48 */
49 typedef enum LockTupleMode
50{
51 /* SELECT FOR KEY SHARE */
52 LockTupleKeyShare,
53 /* SELECT FOR SHARE */
54 LockTupleShare,
55 /* SELECT FOR NO KEY UPDATE, and UPDATEs that don't modify key columns */
56 LockTupleNoKeyExclusive,
57 /* SELECT FOR UPDATE, UPDATEs that modify key columns, and DELETE */
58 LockTupleExclusive,
59 } LockTupleMode;
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

AltStyle によって変換されたページ (->オリジナル) /