]> 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 9c56a7592ba380ce8880130ef4ace5488376cd48..b9bd76b07ff4b856276cb8305f6360ec4f37eef5 100644 (file)
@@ -2,20 +2,27 @@
  *
  * 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
 
 #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 *PlannerParamVar;  /* to get Var from Param->paramid */
-extern int     PlannerPlanId;          /* to assign unique ID to subquery plans */
-
-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 */