diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2002-05-18 02:25:50 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2002-05-18 02:25:50 +0000 |
commit | 51fd22abdd9582e5b0edd545be93306a3edf0048 (patch) | |
tree | 61fa1b61c672a7fecc3acd3e393860de230f417e /src/backend/optimizer/util/var.c | |
parent | 0a757154bd4592b69e3715a7066645f4046ee57e (diff) |
Change set_plan_references and join_references to take an rtable List
rather than a Query node; this allows set_plan_references to recurse
into subplans correctly. Fixes core dump on full outer joins in
subplans. Also, invoke preprocess_expression on function RTEs'
function expressions. This seems to fix the planner's problems with
outer-level Vars in function RTEs.
Diffstat (limited to 'src/backend/optimizer/util/var.c')
-rw-r--r-- | src/backend/optimizer/util/var.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/backend/optimizer/util/var.c b/src/backend/optimizer/util/var.c index ee861c3557e..2bdb23897cf 100644 --- a/src/backend/optimizer/util/var.c +++ b/src/backend/optimizer/util/var.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/optimizer/util/var.c,v 1.36 2002/04/28 19:54:28 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/optimizer/util/var.c,v 1.37 2002/05/18 02:25:50 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -41,7 +41,7 @@ typedef struct typedef struct { - Query *root; + List *rtable; bool force; } flatten_join_alias_vars_context; @@ -328,11 +328,11 @@ pull_var_clause_walker(Node *node, pull_var_clause_context *context) * of sublinks to subplans! */ Node * -flatten_join_alias_vars(Node *node, Query *root, bool force) +flatten_join_alias_vars(Node *node, List *rtable, bool force) { flatten_join_alias_vars_context context; - context.root = root; + context.rtable = rtable; context.force = force; return flatten_join_alias_vars_mutator(node, &context); @@ -352,7 +352,7 @@ flatten_join_alias_vars_mutator(Node *node, if (var->varlevelsup != 0) return node; /* no need to copy, really */ - rte = rt_fetch(var->varno, context->root->rtable); + rte = rt_fetch(var->varno, context->rtable); if (rte->rtekind != RTE_JOIN) return node; Assert(var->varattno > 0); |