Move LockClauseStrength, LockWaitPolicy into new file nodes/lockoptions.h.
Commit df630b0dd5
moved enum LockWaitPolicy
into its very own header file utils/lockwaitpolicy.h, which does not seem
like a great idea from here. First, it's still a node-related declaration,
and second, a file named like that can never sensibly be used for anything
else. I do not think we want to encourage a one-typedef-per-header-file
approach. The upcoming foreign table inheritance patch was doubling down
on this bad idea by moving enum LockClauseStrength into its *own*
can-never-be-used-for-anything-else file. Instead, let's put them both in
a file named nodes/lockoptions.h. (They do seem to need a separate header
file because we need them in both parsenodes.h and plannodes.h, and we
don't want either of those including the other. Past practice might
suggest adding them to nodes/nodes.h, but they don't seem sufficiently
globally useful to justify that.)
Committed separately since there's no functional change here, just some
header-file refactoring.
This commit is contained in:
parent
8008959773
commit
9fac5fd741
|
@ -16,10 +16,10 @@
|
|||
|
||||
#include "access/sdir.h"
|
||||
#include "access/skey.h"
|
||||
#include "nodes/lockoptions.h"
|
||||
#include "nodes/primnodes.h"
|
||||
#include "storage/bufpage.h"
|
||||
#include "storage/lock.h"
|
||||
#include "utils/lockwaitpolicy.h"
|
||||
#include "utils/relcache.h"
|
||||
#include "utils/snapshot.h"
|
||||
|
||||
|
|
|
@ -16,7 +16,6 @@
|
|||
|
||||
#include "executor/execdesc.h"
|
||||
#include "nodes/parsenodes.h"
|
||||
#include "utils/lockwaitpolicy.h"
|
||||
|
||||
|
||||
/*
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
/*-------------------------------------------------------------------------
|
||||
*
|
||||
* lockoptions.h
|
||||
* Common header for some locking-related declarations.
|
||||
*
|
||||
*
|
||||
* Copyright (c) 2014-2015, PostgreSQL Global Development Group
|
||||
*
|
||||
* src/include/nodes/lockoptions.h
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
#ifndef LOCKOPTIONS_H
|
||||
#define LOCKOPTIONS_H
|
||||
|
||||
/*
|
||||
* This enum represents the different strengths of FOR UPDATE/SHARE clauses.
|
||||
* The ordering here is important, because the highest numerical value takes
|
||||
* precedence when a RTE is specified multiple ways. See applyLockingClause.
|
||||
*/
|
||||
typedef enum LockClauseStrength
|
||||
{
|
||||
LCS_FORKEYSHARE, /* FOR KEY SHARE */
|
||||
LCS_FORSHARE, /* FOR SHARE */
|
||||
LCS_FORNOKEYUPDATE, /* FOR NO KEY UPDATE */
|
||||
LCS_FORUPDATE /* FOR UPDATE */
|
||||
} LockClauseStrength;
|
||||
|
||||
/*
|
||||
* This enum controls how to deal with rows being locked by FOR UPDATE/SHARE
|
||||
* clauses (i.e., it represents the NOWAIT and SKIP LOCKED options).
|
||||
* The ordering here is important, because the highest numerical value takes
|
||||
* precedence when a RTE is specified multiple ways. See applyLockingClause.
|
||||
*/
|
||||
typedef enum LockWaitPolicy
|
||||
{
|
||||
/* Wait for the lock to become available (default behavior) */
|
||||
LockWaitBlock,
|
||||
/* Skip rows that can't be locked (SKIP LOCKED) */
|
||||
LockWaitSkip,
|
||||
/* Raise an error if a row cannot be locked (NOWAIT) */
|
||||
LockWaitError
|
||||
} LockWaitPolicy;
|
||||
|
||||
#endif /* LOCKOPTIONS_H */
|
|
@ -21,9 +21,9 @@
|
|||
#define PARSENODES_H
|
||||
|
||||
#include "nodes/bitmapset.h"
|
||||
#include "nodes/lockoptions.h"
|
||||
#include "nodes/primnodes.h"
|
||||
#include "nodes/value.h"
|
||||
#include "utils/lockwaitpolicy.h"
|
||||
|
||||
/* Possible sources of a Query */
|
||||
typedef enum QuerySource
|
||||
|
@ -645,15 +645,6 @@ typedef struct DefElem
|
|||
* a location field --- currently, parse analysis insists on unqualified
|
||||
* names in LockingClause.)
|
||||
*/
|
||||
typedef enum LockClauseStrength
|
||||
{
|
||||
/* order is important -- see applyLockingClause */
|
||||
LCS_FORKEYSHARE,
|
||||
LCS_FORSHARE,
|
||||
LCS_FORNOKEYUPDATE,
|
||||
LCS_FORUPDATE
|
||||
} LockClauseStrength;
|
||||
|
||||
typedef struct LockingClause
|
||||
{
|
||||
NodeTag type;
|
||||
|
|
|
@ -17,8 +17,8 @@
|
|||
#include "access/sdir.h"
|
||||
#include "lib/stringinfo.h"
|
||||
#include "nodes/bitmapset.h"
|
||||
#include "nodes/lockoptions.h"
|
||||
#include "nodes/primnodes.h"
|
||||
#include "utils/lockwaitpolicy.h"
|
||||
|
||||
|
||||
/* ----------------------------------------------------------------
|
||||
|
|
|
@ -1,31 +0,0 @@
|
|||
/*-------------------------------------------------------------------------
|
||||
* lockwaitpolicy.h
|
||||
* Header file for LockWaitPolicy enum.
|
||||
*
|
||||
* Copyright (c) 2014-2015, PostgreSQL Global Development Group
|
||||
*
|
||||
* src/include/utils/lockwaitpolicy.h
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
#ifndef LOCKWAITPOLICY_H
|
||||
#define LOCKWAITPOLICY_H
|
||||
|
||||
/*
|
||||
* This enum controls how to deal with rows being locked by FOR UPDATE/SHARE
|
||||
* clauses (i.e., NOWAIT and SKIP LOCKED clauses). The ordering here is
|
||||
* important, because the highest numerical value takes precedence when a
|
||||
* RTE is specified multiple ways. See applyLockingClause.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
/* Wait for the lock to become available (default behavior) */
|
||||
LockWaitBlock,
|
||||
|
||||
/* Skip rows that can't be locked (SKIP LOCKED) */
|
||||
LockWaitSkip,
|
||||
|
||||
/* Raise an error if a row cannot be locked (NOWAIT) */
|
||||
LockWaitError
|
||||
} LockWaitPolicy;
|
||||
|
||||
#endif /* LOCKWAITPOLICY_H */
|
Loading…
Reference in New Issue