diff options
Diffstat (limited to 'src/backend/optimizer/util/clauses.c')
| -rw-r--r-- | src/backend/optimizer/util/clauses.c | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/backend/optimizer/util/clauses.c b/src/backend/optimizer/util/clauses.c index acd17ba87d..253c9e8813 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.124 2003/01/17 03:25:03 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/optimizer/util/clauses.c,v 1.125 2003/01/20 18:54:54 tgl Exp $ * * HISTORY * AUTHOR DATE MAJOR EVENT @@ -2200,6 +2200,15 @@ expression_tree_walker(Node *node, return true; } break; + case T_InClauseInfo: + { + InClauseInfo *ininfo = (InClauseInfo *) node; + + if (expression_tree_walker((Node *) ininfo->sub_targetlist, + walker, context)) + return true; + } + break; default: elog(ERROR, "expression_tree_walker: Unexpected node type %d", nodeTag(node)); @@ -2241,6 +2250,8 @@ query_tree_walker(Query *query, return true; if (walker(query->havingQual, context)) return true; + if (walker(query->in_info_list, context)) + return true; foreach(rt, query->rtable) { RangeTblEntry *rte = (RangeTblEntry *) lfirst(rt); @@ -2610,6 +2621,16 @@ expression_tree_mutator(Node *node, return (Node *) newnode; } break; + case T_InClauseInfo: + { + InClauseInfo *ininfo = (InClauseInfo *) node; + InClauseInfo *newnode; + + FLATCOPY(newnode, ininfo, InClauseInfo); + MUTATE(newnode->sub_targetlist, ininfo->sub_targetlist, List *); + return (Node *) newnode; + } + break; default: elog(ERROR, "expression_tree_mutator: Unexpected node type %d", nodeTag(node)); @@ -2662,6 +2683,7 @@ query_tree_mutator(Query *query, MUTATE(query->jointree, query->jointree, FromExpr *); MUTATE(query->setOperations, query->setOperations, Node *); MUTATE(query->havingQual, query->havingQual, Node *); + MUTATE(query->in_info_list, query->in_info_list, List *); foreach(rt, query->rtable) { RangeTblEntry *rte = (RangeTblEntry *) lfirst(rt); |
