summaryrefslogtreecommitdiff
path: root/src/backend/nodes
diff options
context:
space:
mode:
authorTom Lane2009-04-04 21:12:31 +0000
committerTom Lane2009-04-04 21:12:31 +0000
commit090173a3f937952b2a5c6d92a3ab139e79ca3033 (patch)
treef015510d48f341507f96ae5288e069700755799d /src/backend/nodes
parentc973051ae69228129aeb8eb413d451ba4b326cad (diff)
Remove the recently added node types ReloptElem and OptionDefElem in favor
of adding optional namespace and action fields to DefElem. Having three node types that do essentially the same thing bloats the code and leads to errors of confusion, such as in yesterday's bug report from Khee Chin.
Diffstat (limited to 'src/backend/nodes')
-rw-r--r--src/backend/nodes/copyfuncs.c33
-rw-r--r--src/backend/nodes/equalfuncs.c29
-rw-r--r--src/backend/nodes/makefuncs.c34
-rw-r--r--src/backend/nodes/outfuncs.c17
4 files changed, 26 insertions, 87 deletions
diff --git a/src/backend/nodes/copyfuncs.c b/src/backend/nodes/copyfuncs.c
index f9a1efdc447..bbeac655970 100644
--- a/src/backend/nodes/copyfuncs.c
+++ b/src/backend/nodes/copyfuncs.c
@@ -15,7 +15,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/nodes/copyfuncs.c,v 1.427 2009/03/21 00:04:39 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/nodes/copyfuncs.c,v 1.428 2009/04/04 21:12:31 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -2098,31 +2098,10 @@ _copyDefElem(DefElem *from)
{
DefElem *newnode = makeNode(DefElem);
+ COPY_STRING_FIELD(defnamespace);
COPY_STRING_FIELD(defname);
COPY_NODE_FIELD(arg);
-
- return newnode;
-}
-
-static OptionDefElem *
-_copyOptionDefElem(OptionDefElem *from)
-{
- OptionDefElem *newnode = makeNode(OptionDefElem);
-
- COPY_SCALAR_FIELD(alter_op);
- COPY_NODE_FIELD(def);
-
- return newnode;
-}
-
-static ReloptElem *
-_copyReloptElem(ReloptElem *from)
-{
- ReloptElem *newnode = makeNode(ReloptElem);
-
- COPY_STRING_FIELD(optname);
- COPY_STRING_FIELD(nmspc);
- COPY_NODE_FIELD(arg);
+ COPY_SCALAR_FIELD(defaction);
return newnode;
}
@@ -4076,12 +4055,6 @@ copyObject(void *from)
case T_DefElem:
retval = _copyDefElem(from);
break;
- case T_OptionDefElem:
- retval = _copyOptionDefElem(from);
- break;
- case T_ReloptElem:
- retval = _copyReloptElem(from);
- break;
case T_LockingClause:
retval = _copyLockingClause(from);
break;
diff --git a/src/backend/nodes/equalfuncs.c b/src/backend/nodes/equalfuncs.c
index 0950dd6131f..c5f09cab82a 100644
--- a/src/backend/nodes/equalfuncs.c
+++ b/src/backend/nodes/equalfuncs.c
@@ -22,7 +22,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/nodes/equalfuncs.c,v 1.350 2009/03/10 22:09:25 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/nodes/equalfuncs.c,v 1.351 2009/04/04 21:12:31 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -2074,27 +2074,10 @@ _equalConstraint(Constraint *a, Constraint *b)
static bool
_equalDefElem(DefElem *a, DefElem *b)
{
+ COMPARE_STRING_FIELD(defnamespace);
COMPARE_STRING_FIELD(defname);
COMPARE_NODE_FIELD(arg);
-
- return true;
-}
-
-static bool
-_equalOptionDefElem(OptionDefElem *a, OptionDefElem *b)
-{
- COMPARE_SCALAR_FIELD(alter_op);
- COMPARE_NODE_FIELD(def);
-
- return true;
-}
-
-static bool
-_equalReloptElem(ReloptElem *a, ReloptElem *b)
-{
- COMPARE_STRING_FIELD(nmspc);
- COMPARE_STRING_FIELD(optname);
- COMPARE_NODE_FIELD(arg);
+ COMPARE_SCALAR_FIELD(defaction);
return true;
}
@@ -2850,12 +2833,6 @@ equal(void *a, void *b)
case T_DefElem:
retval = _equalDefElem(a, b);
break;
- case T_OptionDefElem:
- retval = _equalOptionDefElem(a, b);
- break;
- case T_ReloptElem:
- retval = _equalReloptElem(a, b);
- break;
case T_LockingClause:
retval = _equalLockingClause(a, b);
break;
diff --git a/src/backend/nodes/makefuncs.c b/src/backend/nodes/makefuncs.c
index 39d7e20f83e..4a649ee2b48 100644
--- a/src/backend/nodes/makefuncs.c
+++ b/src/backend/nodes/makefuncs.c
@@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/nodes/makefuncs.c,v 1.63 2009/02/02 19:31:39 alvherre Exp $
+ * $PostgreSQL: pgsql/src/backend/nodes/makefuncs.c,v 1.64 2009/04/04 21:12:31 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -351,37 +351,37 @@ makeFuncExpr(Oid funcid, Oid rettype, List *args, CoercionForm fformat)
/*
* makeDefElem -
* build a DefElem node
+ *
+ * This is sufficient for the "typical" case with an unqualified option name
+ * and no special action.
*/
DefElem *
makeDefElem(char *name, Node *arg)
{
DefElem *res = makeNode(DefElem);
+ res->defnamespace = NULL;
res->defname = name;
res->arg = arg;
+ res->defaction = DEFELEM_UNSPEC;
+
return res;
}
/*
- * makeOptionDefElem -
- * build an OptionDefElem node
+ * makeDefElemExtended -
+ * build a DefElem node with all fields available to be specified
*/
-OptionDefElem *
-makeOptionDefElem(int op, DefElem *def)
-{
- OptionDefElem *res = makeNode(OptionDefElem);
- res->alter_op = op;
- res->def = def;
- return res;
-}
-
-ReloptElem *
-makeReloptElem(char *name, char *nmspc, Node *arg)
+DefElem *
+makeDefElemExtended(char *namespace, char *name, Node *arg,
+ DefElemAction defaction)
{
- ReloptElem *res = makeNode(ReloptElem);
+ DefElem *res = makeNode(DefElem);
- res->optname = name;
- res->nmspc = nmspc;
+ res->defnamespace = namespace;
+ res->defname = name;
res->arg = arg;
+ res->defaction = defaction;
+
return res;
}
diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c
index 3fdd9bab669..f3ca8d36228 100644
--- a/src/backend/nodes/outfuncs.c
+++ b/src/backend/nodes/outfuncs.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/nodes/outfuncs.c,v 1.356 2009/03/26 17:15:34 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/nodes/outfuncs.c,v 1.357 2009/04/04 21:12:31 tgl Exp $
*
* NOTES
* Every node type that can appear in stored rules' parsetrees *must*
@@ -1797,18 +1797,10 @@ _outDefElem(StringInfo str, DefElem *node)
{
WRITE_NODE_TYPE("DEFELEM");
+ WRITE_STRING_FIELD(defnamespace);
WRITE_STRING_FIELD(defname);
WRITE_NODE_FIELD(arg);
-}
-
-static void
-_outReloptElem(StringInfo str, ReloptElem *node)
-{
- WRITE_NODE_TYPE("RELOPTELEM");
-
- WRITE_STRING_FIELD(nmspc);
- WRITE_STRING_FIELD(optname);
- WRITE_NODE_FIELD(arg);
+ WRITE_ENUM_FIELD(defaction, DefElemAction);
}
static void
@@ -2774,9 +2766,6 @@ _outNode(StringInfo str, void *obj)
case T_DefElem:
_outDefElem(str, obj);
break;
- case T_ReloptElem:
- _outReloptElem(str, obj);
- break;
case T_LockingClause:
_outLockingClause(str, obj);
break;