aboutsummaryrefslogtreecommitdiff
path: root/src/backend/optimizer/util/clauses.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/optimizer/util/clauses.c')
-rw-r--r--src/backend/optimizer/util/clauses.c30
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:
{
/*