summaryrefslogtreecommitdiff
path: root/src/include/optimizer
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2007-02-19 07:03:34 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2007-02-19 07:03:34 +0000
commit7c5e5439d2a64ee82d54be2e064a4bb4602bad30 (patch)
treeda8d85b50e284413823da3bc98975c03278cb582 /src/include/optimizer
parent90c301aaa9377d385d00d93462f3f656ada8981e (diff)
downloadpostgresql-7c5e5439d2a64ee82d54be2e064a4bb4602bad30.tar.gz
Get rid of some old and crufty global variables in the planner. When
this code was last gone over, there wasn't really any alternative to globals because we didn't have the PlannerInfo struct being passed all through the planner code. Now that we do, we can restructure things to avoid non-reentrancy. I'm fooling with this because otherwise I'd have had to add another global variable for the planned compact range table list.
Diffstat (limited to 'src/include/optimizer')
-rw-r--r--src/include/optimizer/clauses.h4
-rw-r--r--src/include/optimizer/planner.h12
-rw-r--r--src/include/optimizer/subselect.h14
3 files changed, 11 insertions, 19 deletions
diff --git a/src/include/optimizer/clauses.h b/src/include/optimizer/clauses.h
index 5001125914..bd4a796435 100644
--- a/src/include/optimizer/clauses.h
+++ b/src/include/optimizer/clauses.h
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/optimizer/clauses.h,v 1.86 2007/01/22 01:35:22 tgl Exp $
+ * $PostgreSQL: pgsql/src/include/optimizer/clauses.h,v 1.87 2007/02/19 07:03:34 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -77,7 +77,7 @@ extern void set_coercionform_dontcare(Node *node);
extern Node *eval_const_expressions(Node *node);
-extern Node *estimate_expression_value(Node *node);
+extern Node *estimate_expression_value(PlannerInfo *root, Node *node);
extern bool expression_tree_walker(Node *node, bool (*walker) (),
void *context);
diff --git a/src/include/optimizer/planner.h b/src/include/optimizer/planner.h
index 6567e5b8b7..44d0360269 100644
--- a/src/include/optimizer/planner.h
+++ b/src/include/optimizer/planner.h
@@ -7,23 +7,21 @@
* Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/optimizer/planner.h,v 1.36 2007/01/05 22:19:56 momjian Exp $
+ * $PostgreSQL: pgsql/src/include/optimizer/planner.h,v 1.37 2007/02/19 07:03:34 tgl Exp $
*
*-------------------------------------------------------------------------
*/
#ifndef PLANNER_H
#define PLANNER_H
-#include "nodes/params.h"
-#include "nodes/parsenodes.h"
#include "nodes/plannodes.h"
+#include "nodes/relation.h"
-extern ParamListInfo PlannerBoundParamList; /* current boundParams */
-
extern Plan *planner(Query *parse, bool isCursor, int cursorOptions,
ParamListInfo boundParams);
-extern Plan *subquery_planner(Query *parse, double tuple_fraction,
- List **subquery_pathkeys);
+extern Plan *subquery_planner(PlannerGlobal *glob, Query *parse,
+ Index level, double tuple_fraction,
+ List **subquery_pathkeys);
#endif /* PLANNER_H */
diff --git a/src/include/optimizer/subselect.h b/src/include/optimizer/subselect.h
index 8a4328bd1f..17c94bf609 100644
--- a/src/include/optimizer/subselect.h
+++ b/src/include/optimizer/subselect.h
@@ -5,7 +5,7 @@
* Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/optimizer/subselect.h,v 1.28 2007/01/05 22:19:56 momjian Exp $
+ * $PostgreSQL: pgsql/src/include/optimizer/subselect.h,v 1.29 2007/02/19 07:03:34 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -15,16 +15,10 @@
#include "nodes/plannodes.h"
#include "nodes/relation.h"
-
-extern Index PlannerQueryLevel; /* level of current query */
-extern List *PlannerInitPlan; /* init subplans for current query */
-extern List *PlannerParamList; /* to keep track of cross-level Params */
-extern int PlannerPlanId; /* to assign unique ID to subquery plans */
-
extern Node *convert_IN_to_join(PlannerInfo *root, SubLink *sublink);
-extern Node *SS_replace_correlation_vars(Node *expr);
-extern Node *SS_process_sublinks(Node *expr, bool isQual);
-extern void SS_finalize_plan(Plan *plan, List *rtable);
+extern Node *SS_replace_correlation_vars(PlannerInfo *root, Node *expr);
+extern Node *SS_process_sublinks(PlannerInfo *root, Node *expr, bool isQual);
+extern void SS_finalize_plan(PlannerInfo *root, Plan *plan);
extern Param *SS_make_initplan_from_plan(PlannerInfo *root, Plan *plan,
Oid resulttype, int32 resulttypmod);