diff --git a/src/include/access/heapam.h b/src/include/access/heapam.h index 939d93d66b..888cce7a2d 100644 --- a/src/include/access/heapam.h +++ b/src/include/access/heapam.h @@ -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" diff --git a/src/include/executor/executor.h b/src/include/executor/executor.h index 40fde83a20..c1e7477956 100644 --- a/src/include/executor/executor.h +++ b/src/include/executor/executor.h @@ -16,7 +16,6 @@ #include "executor/execdesc.h" #include "nodes/parsenodes.h" -#include "utils/lockwaitpolicy.h" /* diff --git a/src/include/nodes/lockoptions.h b/src/include/nodes/lockoptions.h new file mode 100644 index 0000000000..55324baf40 --- /dev/null +++ b/src/include/nodes/lockoptions.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 */ diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h index 38ed661122..50e98291bd 100644 --- a/src/include/nodes/parsenodes.h +++ b/src/include/nodes/parsenodes.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; diff --git a/src/include/nodes/plannodes.h b/src/include/nodes/plannodes.h index f6683f05e3..af44ddf5dc 100644 --- a/src/include/nodes/plannodes.h +++ b/src/include/nodes/plannodes.h @@ -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" /* ---------------------------------------------------------------- diff --git a/src/include/utils/lockwaitpolicy.h b/src/include/utils/lockwaitpolicy.h deleted file mode 100644 index 92fc20fbfa..0000000000 --- a/src/include/utils/lockwaitpolicy.h +++ /dev/null @@ -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 */