]> granicus.if.org Git - postgresql/blobdiff - src/include/optimizer/planmain.h
Fix the plan-invalidation mechanism to treat regclass constants that refer to
[postgresql] / src / include / optimizer / planmain.h
index 6bf34e162a7c479f45cf951ee15d27a77b92425d..43769c71e11e725a801b8f4d43a8432f1082ead2 100644 (file)
@@ -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/planmain.h,v 1.99 2007/01/22 01:35:22 tgl Exp $
+ * $PostgreSQL: pgsql/src/include/optimizer/planmain.h,v 1.103 2007/10/11 18:05:27 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -21,7 +21,7 @@
  * prototypes for plan/planmain.c
  */
 extern void query_planner(PlannerInfo *root, List *tlist,
-                         double tuple_fraction,
+                         double tuple_fraction, double limit_tuples,
                          Path **cheapest_path, Path **sorted_path,
                          double *num_groups);
 
@@ -36,10 +36,10 @@ extern Plan *optimize_minmax_aggregates(PlannerInfo *root, List *tlist,
  */
 extern Plan *create_plan(PlannerInfo *root, Path *best_path);
 extern SubqueryScan *make_subqueryscan(List *qptlist, List *qpqual,
-                                 Index scanrelid, Plan *subplan);
+                                 Index scanrelid, Plan *subplan, List *subrtable);
 extern Append *make_append(List *appendplans, bool isTarget, List *tlist);
 extern Sort *make_sort_from_pathkeys(PlannerInfo *root, Plan *lefttree,
-                                               List *pathkeys);
+                                               List *pathkeys, double limit_tuples);
 extern Sort *make_sort_from_sortclauses(PlannerInfo *root, List *sortcls,
                                                   Plan *lefttree);
 extern Sort *make_sort_from_groupcols(PlannerInfo *root, List *groupcls,
@@ -60,7 +60,8 @@ extern Limit *make_limit(Plan *lefttree, Node *limitOffset, Node *limitCount,
                   int64 offset_est, int64 count_est);
 extern SetOp *make_setop(SetOpCmd cmd, Plan *lefttree,
                   List *distinctList, AttrNumber flagColIdx);
-extern Result *make_result(List *tlist, Node *resconstantqual, Plan *subplan);
+extern Result *make_result(PlannerInfo *root, List *tlist,
+                                                  Node *resconstantqual, Plan *subplan);
 extern bool is_projection_capable_plan(Plan *plan);
 
 /*
@@ -71,6 +72,7 @@ extern int    join_collapse_limit;
 
 extern void add_base_rels_to_query(PlannerInfo *root, Node *jtnode);
 extern void build_base_rel_tlists(PlannerInfo *root, List *final_tlist);
+extern void add_IN_vars_to_tlists(PlannerInfo *root);
 extern void add_vars_to_targetlist(PlannerInfo *root, List *vars,
                                                                   Relids where_needed);
 extern List *deconstruct_jointree(PlannerInfo *root);
@@ -91,8 +93,11 @@ extern RestrictInfo *build_implied_join_equality(Oid opno,
 /*
  * prototypes for plan/setrefs.c
  */
-extern Plan *set_plan_references(Plan *plan, List *rtable);
-extern List *set_returning_clause_references(List *rlist,
+extern Plan *set_plan_references(PlannerGlobal *glob,
+                                                                Plan *plan,
+                                                                List *rtable);
+extern List *set_returning_clause_references(PlannerGlobal *glob,
+                                                               List *rlist,
                                                                Plan *topplan,
                                                                Index resultRelation);
 extern void fix_opfuncids(Node *node);