aboutsummaryrefslogtreecommitdiff
path: root/src/backend/nodes/copyfuncs.c
diff options
context:
space:
mode:
authorThomas G. Lockhart <lockhart@fourpalms.org>1998-12-04 15:34:49 +0000
committerThomas G. Lockhart <lockhart@fourpalms.org>1998-12-04 15:34:49 +0000
commitbedd04a551c30350ebb8da2aa2596d16053b5d15 (patch)
treee682a8c3fa0a7d849793a7cc0abb101256e6cec5 /src/backend/nodes/copyfuncs.c
parent19740e2fff22e07244183ac0e888794e63016c89 (diff)
downloadpostgresql-bedd04a551c30350ebb8da2aa2596d16053b5d15.tar.gz
postgresql-bedd04a551c30350ebb8da2aa2596d16053b5d15.zip
Implement CASE expression.
Diffstat (limited to 'src/backend/nodes/copyfuncs.c')
-rw-r--r--src/backend/nodes/copyfuncs.c49
1 files changed, 48 insertions, 1 deletions
diff --git a/src/backend/nodes/copyfuncs.c b/src/backend/nodes/copyfuncs.c
index 5809a4044c3..33f7b14894a 100644
--- a/src/backend/nodes/copyfuncs.c
+++ b/src/backend/nodes/copyfuncs.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.50 1998/11/22 10:48:38 vadim Exp $
+ * $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.51 1998/12/04 15:33:33 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -943,6 +943,47 @@ _copySubLink(SubLink *from)
return newnode;
}
+/* ----------------
+ * _copyCaseExpr
+ * ----------------
+ */
+static CaseExpr *
+_copyCaseExpr(CaseExpr *from)
+{
+ CaseExpr *newnode = makeNode(CaseExpr);
+
+ /* ----------------
+ * copy remainder of node
+ * ----------------
+ */
+ newnode->casetype = from->casetype;
+
+ Node_Copy(from, newnode, arg);
+ Node_Copy(from, newnode, args);
+ Node_Copy(from, newnode, defresult);
+
+ return newnode;
+}
+
+/* ----------------
+ * _copyCaseWhen
+ * ----------------
+ */
+static CaseWhen *
+_copyCaseWhen(CaseWhen *from)
+{
+ CaseWhen *newnode = makeNode(CaseWhen);
+
+ /* ----------------
+ * copy remainder of node
+ * ----------------
+ */
+ Node_Copy(from, newnode, expr);
+ Node_Copy(from, newnode, result);
+
+ return newnode;
+}
+
static Array *
_copyArray(Array *from)
{
@@ -1734,6 +1775,12 @@ copyObject(void *from)
case T_SubLink:
retval = _copySubLink(from);
break;
+ case T_CaseExpr:
+ retval = _copyCaseExpr(from);
+ break;
+ case T_CaseWhen:
+ retval = _copyCaseWhen(from);
+ break;
/*
* RELATION NODES