diff options
Diffstat (limited to 'src/backend/optimizer/util/clauses.c')
-rw-r--r-- | src/backend/optimizer/util/clauses.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/backend/optimizer/util/clauses.c b/src/backend/optimizer/util/clauses.c index 972c7f94633..9f059521f4d 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.99 2002/05/12 23:43:03 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/optimizer/util/clauses.c,v 1.100 2002/05/18 18:49:41 tgl Exp $ * * HISTORY * AUTHOR DATE MAJOR EVENT @@ -1915,7 +1915,6 @@ query_tree_walker(Query *query, { case RTE_RELATION: case RTE_SPECIAL: - case RTE_FUNCTION: /* nothing to do */ break; case RTE_SUBQUERY: @@ -1927,6 +1926,10 @@ query_tree_walker(Query *query, if (walker(rte->joinaliasvars, context)) return true; break; + case RTE_FUNCTION: + if (walker(rte->funcexpr, context)) + return true; + break; } } return false; @@ -2293,7 +2296,6 @@ query_tree_mutator(Query *query, { case RTE_RELATION: case RTE_SPECIAL: - case RTE_FUNCTION: /* nothing to do, don't bother to make a copy */ break; case RTE_SUBQUERY: @@ -2310,6 +2312,11 @@ query_tree_mutator(Query *query, MUTATE(newrte->joinaliasvars, rte->joinaliasvars, List *); rte = newrte; break; + case RTE_FUNCTION: + FLATCOPY(newrte, rte, RangeTblEntry); + MUTATE(newrte->funcexpr, rte->funcexpr, Node *); + rte = newrte; + break; } newrt = lappend(newrt, rte); } |