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/sdir.h"
|
||||||
#include "access/skey.h"
|
#include "access/skey.h"
|
||||||
|
#include "nodes/lockoptions.h"
|
||||||
#include "nodes/primnodes.h"
|
#include "nodes/primnodes.h"
|
||||||
#include "storage/bufpage.h"
|
#include "storage/bufpage.h"
|
||||||
#include "storage/lock.h"
|
#include "storage/lock.h"
|
||||||
#include "utils/lockwaitpolicy.h"
|
|
||||||
#include "utils/relcache.h"
|
#include "utils/relcache.h"
|
||||||
#include "utils/snapshot.h"
|
#include "utils/snapshot.h"
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,6 @@
|
||||||
|
|
||||||
#include "executor/execdesc.h"
|
#include "executor/execdesc.h"
|
||||||
#include "nodes/parsenodes.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
|
#define PARSENODES_H
|
||||||
|
|
||||||
#include "nodes/bitmapset.h"
|
#include "nodes/bitmapset.h"
|
||||||
|
#include "nodes/lockoptions.h"
|
||||||
#include "nodes/primnodes.h"
|
#include "nodes/primnodes.h"
|
||||||
#include "nodes/value.h"
|
#include "nodes/value.h"
|
||||||
#include "utils/lockwaitpolicy.h"
|
|
||||||
|
|
||||||
/* Possible sources of a Query */
|
/* Possible sources of a Query */
|
||||||
typedef enum QuerySource
|
typedef enum QuerySource
|
||||||
|
@ -645,15 +645,6 @@ typedef struct DefElem
|
||||||
* a location field --- currently, parse analysis insists on unqualified
|
* a location field --- currently, parse analysis insists on unqualified
|
||||||
* names in LockingClause.)
|
* names in LockingClause.)
|
||||||
*/
|
*/
|
||||||
typedef enum LockClauseStrength
|
|
||||||
{
|
|
||||||
/* order is important -- see applyLockingClause */
|
|
||||||
LCS_FORKEYSHARE,
|
|
||||||
LCS_FORSHARE,
|
|
||||||
LCS_FORNOKEYUPDATE,
|
|
||||||
LCS_FORUPDATE
|
|
||||||
} LockClauseStrength;
|
|
||||||
|
|
||||||
typedef struct LockingClause
|
typedef struct LockingClause
|
||||||
{
|
{
|
||||||
NodeTag type;
|
NodeTag type;
|
||||||
|
|
|
@ -17,8 +17,8 @@
|
||||||
#include "access/sdir.h"
|
#include "access/sdir.h"
|
||||||
#include "lib/stringinfo.h"
|
#include "lib/stringinfo.h"
|
||||||
#include "nodes/bitmapset.h"
|
#include "nodes/bitmapset.h"
|
||||||
|
#include "nodes/lockoptions.h"
|
||||||
#include "nodes/primnodes.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