diff options
author | Vadim B. Mikheev <vadim4o@yahoo.com> | 1998-02-13 03:37:04 +0000 |
---|---|---|
committer | Vadim B. Mikheev <vadim4o@yahoo.com> | 1998-02-13 03:37:04 +0000 |
commit | 4a6e3a6a9fa18e01d6ae65015e55a42f36030d0d (patch) | |
tree | 6ec2fc20051c9097ff94f4778d6cd660b6c66879 /src/backend/optimizer/plan/planmain.c | |
parent | a3f1c3673fb56752ebb1c6d9bab0706e7f8ae7ac (diff) | |
download | postgresql-4a6e3a6a9fa18e01d6ae65015e55a42f36030d0d.tar.gz postgresql-4a6e3a6a9fa18e01d6ae65015e55a42f36030d0d.zip |
Old planner() becomes union_planner(); new planner() makes initialization
of some global variables to support subselects and calls union_planner().
Calls to SS_replace_correlation_vars() and SS_process_sublinks() in
query_planner() before planning.
Get rid of #ifdef INDEXSCAN_PATCH in createplan.c.
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 |