diff options
author | Bruce Momjian <bruce@momjian.us> | 2002-07-18 04:41:46 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2002-07-18 04:41:46 +0000 |
commit | 3e22406ec63b60ed50d3d0c593f9e84b5e1d058b (patch) | |
tree | 9cd544d8f473a766e21629227f615bd536d0359d /src/backend/nodes/copyfuncs.c | |
parent | 7ea5f1d7f16e9771e90c020db93d7e8a9a3b22f5 (diff) |
Finished the Between patch Christopher started.
Implements between (symmetric / asymmetric) as a node.
Executes the left or right expression once, makes a Const out of the
resulting Datum and executes the >=, <= portions out of the Const sets.
Of course, the parser does a fair amount of preparatory work for this to
happen.
Rod Taylor
Diffstat (limited to 'src/backend/nodes/copyfuncs.c')
-rw-r--r-- | src/backend/nodes/copyfuncs.c | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/src/backend/nodes/copyfuncs.c b/src/backend/nodes/copyfuncs.c index 426180dc111..46cd8720637 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 - * $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.194 2002/07/16 22:12:19 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.195 2002/07/18 04:41:44 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -1000,6 +1000,32 @@ _copyCaseExpr(CaseExpr *from) } /* ---------------- + * _copyBetweenExpr + * ---------------- + */ +static BetweenExpr * +_copyBetweenExpr(BetweenExpr *from) +{ + BetweenExpr *newnode = makeNode(BetweenExpr); + + /* + * copy remainder of node + */ + Node_Copy(from, newnode, expr); + Node_Copy(from, newnode, lexpr); + Node_Copy(from, newnode, rexpr); + Node_Copy(from, newnode, lthan); + Node_Copy(from, newnode, gthan); + newnode->symmetric = from->symmetric; + newnode->not = from->not; + newnode->typeId = from->typeId; + newnode->typeLen = from->typeLen; + newnode->typeByVal = from->typeByVal; + + return newnode; +} + +/* ---------------- * _copyCaseWhen * ---------------- */ @@ -3052,6 +3078,9 @@ copyObject(void *from) case T_CaseExpr: retval = _copyCaseExpr(from); break; + case T_BetweenExpr: + retval = _copyBetweenExpr(from); + break; case T_CaseWhen: retval = _copyCaseWhen(from); break; |