summaryrefslogtreecommitdiff
path: root/src/include
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2015-12-31 17:37:31 -0500
committerTom Lane <tgl@sss.pgh.pa.us>2015-12-31 17:37:31 -0500
commit0dab5ef39b3d9d86e45bbbb2f6ea60b4f5517d9a (patch)
treed9b7a923d9d00270142b0209f621e433b61e4133 /src/include
parente5d06f2b12a7c75f2b0c7fd2055a14efaa2b59ec (diff)
downloadpostgresql-0dab5ef39b3d9d86e45bbbb2f6ea60b4f5517d9a.tar.gz
Fix ALTER OPERATOR to update dependencies properly.
Fix an oversight in commit 321eed5f0f7563a0: replacing an operator's selectivity functions needs to result in a corresponding update in pg_depend. We have a function that can handle that, but it was not called by AlterOperator(). To fix this without enlarging pg_operator.h's #include list beyond what clients can safely include, split off the function definitions into a new file pg_operator_fn.h, similarly to what we've done for some other catalog header files. It's not entirely clear whether any client-side code needs to include pg_operator.h, but it seems prudent to assume that there is some such code somewhere.
Diffstat (limited to 'src/include')
-rw-r--r--src/include/catalog/pg_operator.h17
-rw-r--r--src/include/catalog/pg_operator_fn.h34
2 files changed, 34 insertions, 17 deletions
diff --git a/src/include/catalog/pg_operator.h b/src/include/catalog/pg_operator.h
index e79ce57f6e..facef0f335 100644
--- a/src/include/catalog/pg_operator.h
+++ b/src/include/catalog/pg_operator.h
@@ -23,8 +23,6 @@
#define PG_OPERATOR_H
#include "catalog/genbki.h"
-#include "catalog/objectaddress.h"
-#include "nodes/pg_list.h"
/* ----------------
* pg_operator definition. cpp turns this into
@@ -1826,19 +1824,4 @@ DESCR("delete array element");
DATA(insert OID = 3287 ( "#-" PGNSP PGUID b f f 3802 1009 3802 0 0 jsonb_delete_path - - ));
DESCR("delete path");
-/*
- * function prototypes
- */
-extern ObjectAddress OperatorCreate(const char *operatorName,
- Oid operatorNamespace,
- Oid leftTypeId,
- Oid rightTypeId,
- Oid procedureId,
- List *commutatorName,
- List *negatorName,
- Oid restrictionId,
- Oid joinId,
- bool canMerge,
- bool canHash);
-
#endif /* PG_OPERATOR_H */
diff --git a/src/include/catalog/pg_operator_fn.h b/src/include/catalog/pg_operator_fn.h
new file mode 100644
index 0000000000..bf236d6d74
--- /dev/null
+++ b/src/include/catalog/pg_operator_fn.h
@@ -0,0 +1,34 @@
+/*-------------------------------------------------------------------------
+ *
+ * pg_operator_fn.h
+* prototypes for functions in catalog/pg_operator.c
+ *
+ *
+ * Portions Copyright (c) 1996-2015, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1994, Regents of the University of California
+ *
+ * src/include/catalog/pg_operator_fn.h
+ *
+ *-------------------------------------------------------------------------
+ */
+#ifndef PG_OPERATOR_FN_H
+#define PG_OPERATOR_FN_H
+
+#include "catalog/objectaddress.h"
+#include "nodes/pg_list.h"
+
+extern ObjectAddress OperatorCreate(const char *operatorName,
+ Oid operatorNamespace,
+ Oid leftTypeId,
+ Oid rightTypeId,
+ Oid procedureId,
+ List *commutatorName,
+ List *negatorName,
+ Oid restrictionId,
+ Oid joinId,
+ bool canMerge,
+ bool canHash);
+
+extern ObjectAddress makeOperatorDependencies(HeapTuple tuple, bool isUpdate);
+
+#endif /* PG_OPERATOR_FN_H */