Commit
df630b0dd5ea2de52972d456f5978a012436115e 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.
#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"
#include "executor/execdesc.h"
#include "nodes/parsenodes.h"
-#include "utils/lockwaitpolicy.h"
/*
--- /dev/null
+/*-------------------------------------------------------------------------
+ *
+ * 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 */
#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
* 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;
#include "access/sdir.h"
#include "lib/stringinfo.h"
#include "nodes/bitmapset.h"
+#include "nodes/lockoptions.h"
#include "nodes/primnodes.h"
-#include "utils/lockwaitpolicy.h"
/* ----------------------------------------------------------------
+++ /dev/null
-/*-------------------------------------------------------------------------
- * 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 */