]> granicus.if.org Git - postgresql/blobdiff - src/include/optimizer/subselect.h
Implement SEMI and ANTI joins in the planner and executor. (Semijoins replace
[postgresql] / src / include / optimizer / subselect.h
index 64f9851909ec61d9850b406dfc0eb089a0aedaf9..b9bd76b07ff4b856276cb8305f6360ec4f37eef5 100644 (file)
@@ -1,20 +1,28 @@
 /*-------------------------------------------------------------------------
  *
- * subselect.h--
+ * subselect.h
+ *
+ * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1994, Regents of the University of California
+ *
+ * $PostgreSQL: pgsql/src/include/optimizer/subselect.h,v 1.32 2008/08/14 18:48:00 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
 #ifndef SUBSELECT_H
 #define SUBSELECT_H
 
-extern int             PlannerQueryLevel;              /* level of current query */
-extern List       *PlannerVarParam;            /* correlation Vars to Param mapper */
-extern List       *PlannerParamVar;            /* to get Var from Param->paramid */
-extern List       *PlannerInitPlan;            /* init subplans for current query */
-extern int             PlannerPlanId;                  /* to assigne unique ID to subquery plans */
+#include "nodes/plannodes.h"
+#include "nodes/relation.h"
 
-extern List       *SS_finalize_plan (Plan *plan);
-extern Node       *SS_replace_correlation_vars (Node *expr);
-extern Node       *SS_process_sublinks (Node *expr);
+extern Node *convert_ANY_sublink_to_join(PlannerInfo *root, SubLink *sublink);
+extern Node *convert_EXISTS_sublink_to_join(PlannerInfo *root,
+                                                                                       SubLink *sublink, bool under_not);
+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,
+                                                        bool attach_initplans);
+extern Param *SS_make_initplan_from_plan(PlannerInfo *root, Plan *plan,
+                                                  Oid resulttype, int32 resulttypmod);
 
-#endif                                                 /* SUBSELECT_H */
+#endif   /* SUBSELECT_H */