mirror of https://github.com/postgres/postgres
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.
pull/14/head
parent
8008959773
commit
9fac5fd741
@ -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 */ |
||||
@ -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