diff options
Diffstat (limited to 'src/backend/optimizer/plan/planmain.c')
-rw-r--r-- | src/backend/optimizer/plan/planmain.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/src/backend/optimizer/plan/planmain.c b/src/backend/optimizer/plan/planmain.c index 10e67b76cd2..ca5859cb04b 100644 --- a/src/backend/optimizer/plan/planmain.c +++ b/src/backend/optimizer/plan/planmain.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/planmain.c,v 1.18 1998/02/10 04:01:12 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/planmain.c,v 1.19 1998/02/13 03:36:57 vadim Exp $ * *------------------------------------------------------------------------- */ @@ -22,7 +22,9 @@ #include "nodes/makefuncs.h" #include "optimizer/planmain.h" +#include "optimizer/subselect.h" #include "optimizer/internal.h" +#include "optimizer/prep.h" #include "optimizer/paths.h" #include "optimizer/clauses.h" #include "optimizer/keys.h" @@ -72,7 +74,18 @@ query_planner(Query *root, List *var_only_tlist = NIL; List *level_tlist = NIL; Plan *subplan = NULL; - + + if ( PlannerQueryLevel > 1 ) + { + /* should copy be made ? */ + tlist = (List *) SS_replace_correlation_vars ((Node*)tlist); + qual = (List *) SS_replace_correlation_vars ((Node*)qual); + } + if (root->hasSubLinks) + qual = (List *) SS_process_sublinks ((Node*) qual); + + qual = cnfify((Expr *) qual, true); + /* * A command without a target list or qualification is an error, * except for "delete foo". @@ -145,7 +158,7 @@ query_planner(Query *root, if (constant_qual != NULL) { return ((Plan *) make_result(tlist, - (Node *) constant_qual, + (Node *) constant_qual, (Plan *) scan)); } else |