diff options
author | Thomas G. Lockhart <lockhart@fourpalms.org> | 1998-12-04 15:34:49 +0000 |
---|---|---|
committer | Thomas G. Lockhart <lockhart@fourpalms.org> | 1998-12-04 15:34:49 +0000 |
commit | bedd04a551c30350ebb8da2aa2596d16053b5d15 (patch) | |
tree | e682a8c3fa0a7d849793a7cc0abb101256e6cec5 /src/backend/nodes/copyfuncs.c | |
parent | 19740e2fff22e07244183ac0e888794e63016c89 (diff) | |
download | postgresql-bedd04a551c30350ebb8da2aa2596d16053b5d15.tar.gz postgresql-bedd04a551c30350ebb8da2aa2596d16053b5d15.zip |
Implement CASE expression.
Diffstat (limited to 'src/backend/nodes/copyfuncs.c')
-rw-r--r-- | src/backend/nodes/copyfuncs.c | 49 |
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 |