diff options
Diffstat (limited to 'src/backend/optimizer/util/clauses.c')
-rw-r--r-- | src/backend/optimizer/util/clauses.c | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/src/backend/optimizer/util/clauses.c b/src/backend/optimizer/util/clauses.c index 889a10b9ee3..571c7386ee5 100644 --- a/src/backend/optimizer/util/clauses.c +++ b/src/backend/optimizer/util/clauses.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/optimizer/util/clauses.c,v 1.103 2002/07/06 20:16:35 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/optimizer/util/clauses.c,v 1.104 2002/07/18 04:41:45 momjian Exp $ * * HISTORY * AUTHOR DATE MAJOR EVENT @@ -1817,8 +1817,6 @@ expression_tree_walker(Node *node, case T_Var: case T_Param: case T_RangeTblRef: - /* primitive node types with no subnodes */ - break; case T_Expr: { Expr *expr = (Expr *) node; @@ -1965,6 +1963,18 @@ expression_tree_walker(Node *node, return true; } break; + case T_BetweenExpr: + { + BetweenExpr *betwn = (BetweenExpr *) node; + + if (walker(betwn->expr, context)) + return true; + if (walker(betwn->lexpr, context)) + return true; + if (walker(betwn->rexpr, context)) + return true; + } + break; default: elog(ERROR, "expression_tree_walker: Unexpected node type %d", nodeTag(node)); @@ -2123,8 +2133,6 @@ expression_tree_mutator(Node *node, case T_Var: case T_Param: case T_RangeTblRef: - /* primitive node types with no subnodes */ - return (Node *) copyObject(node); case T_Expr: { Expr *expr = (Expr *) node; @@ -2272,6 +2280,18 @@ expression_tree_mutator(Node *node, return (Node *) newnode; } break; + case T_BetweenExpr: + { + BetweenExpr *bexpr = (BetweenExpr *) node; + BetweenExpr *newnode; + + FLATCOPY(newnode, bexpr, BetweenExpr); + MUTATE(newnode->expr, bexpr->expr, Node *); + MUTATE(newnode->lexpr, bexpr->lexpr, Node *); + MUTATE(newnode->rexpr, bexpr->rexpr, Node *); + return (Node *) newnode; + } + break; case T_SubLink: { /* |