diff options
Diffstat (limited to 'src/backend/optimizer/plan/planmain.c')
-rw-r--r-- | src/backend/optimizer/plan/planmain.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/backend/optimizer/plan/planmain.c b/src/backend/optimizer/plan/planmain.c index 06d351bf59d..3729fd2b199 100644 --- a/src/backend/optimizer/plan/planmain.c +++ b/src/backend/optimizer/plan/planmain.c @@ -14,7 +14,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/plan/planmain.c,v 1.90 2005/11/22 18:17:13 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/plan/planmain.c,v 1.91 2005/12/20 02:30:36 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -83,6 +83,7 @@ query_planner(PlannerInfo *root, List *tlist, double tuple_fraction, { Query *parse = root->parse; List *constant_quals; + List *joinlist; RelOptInfo *final_rel; Path *cheapestpath; Path *sortedpath; @@ -134,6 +135,7 @@ query_planner(PlannerInfo *root, List *tlist, double tuple_fraction, root->left_join_clauses = NIL; root->right_join_clauses = NIL; root->full_join_clauses = NIL; + root->oj_info_list = NIL; /* * Construct RelOptInfo nodes for all base relations in query. @@ -144,7 +146,8 @@ query_planner(PlannerInfo *root, List *tlist, double tuple_fraction, * Examine the targetlist and qualifications, adding entries to baserel * targetlists for all referenced Vars. Restrict and join clauses are * added to appropriate lists belonging to the mentioned relations. We - * also build lists of equijoined keys for pathkey construction. + * also build lists of equijoined keys for pathkey construction, and + * form a target joinlist for make_one_rel() to work from. * * Note: all subplan nodes will have "flat" (var-only) tlists. This * implies that all expression evaluations are done at the root of the @@ -154,7 +157,7 @@ query_planner(PlannerInfo *root, List *tlist, double tuple_fraction, */ build_base_rel_tlists(root, tlist); - (void) distribute_quals_to_rels(root, (Node *) parse->jointree, false); + joinlist = deconstruct_jointree(root); /* * Use the completed lists of equijoined keys to deduce any implied but @@ -175,7 +178,7 @@ query_planner(PlannerInfo *root, List *tlist, double tuple_fraction, /* * Ready to do the primary planning. */ - final_rel = make_one_rel(root); + final_rel = make_one_rel(root, joinlist); if (!final_rel || !final_rel->cheapest_total_path) elog(ERROR, "failed to construct the join relation"); |