subselect.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. /*-------------------------------------------------------------------------
  2. *
  3. * subselect.h
  4. *
  5. * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group
  6. * Portions Copyright (c) 1994, Regents of the University of California
  7. *
  8. * src/include/optimizer/subselect.h
  9. *
  10. *-------------------------------------------------------------------------
  11. */
  12. #ifndef SUBSELECT_H
  13. #define SUBSELECT_H
  14. #include "nodes/plannodes.h"
  15. #include "nodes/relation.h"
  16. extern void SS_process_ctes(PlannerInfo *root);
  17. extern JoinExpr *convert_ANY_sublink_to_join(PlannerInfo *root,
  18. SubLink *sublink,
  19. Relids available_rels);
  20. extern JoinExpr *convert_EXISTS_sublink_to_join(PlannerInfo *root,
  21. SubLink *sublink,
  22. bool under_not,
  23. Relids available_rels);
  24. extern Node *SS_replace_correlation_vars(PlannerInfo *root, Node *expr);
  25. extern Node *SS_process_sublinks(PlannerInfo *root, Node *expr, bool isQual);
  26. extern void SS_identify_outer_params(PlannerInfo *root);
  27. extern void SS_charge_for_initplans(PlannerInfo *root, RelOptInfo *final_rel);
  28. extern void SS_attach_initplans(PlannerInfo *root, Plan *plan);
  29. extern void SS_finalize_plan(PlannerInfo *root, Plan *plan);
  30. extern Param *SS_make_initplan_output_param(PlannerInfo *root,
  31. Oid resulttype, int32 resulttypmod,
  32. Oid resultcollation);
  33. extern void SS_make_initplan_from_plan(PlannerInfo *root,
  34. PlannerInfo *subroot, Plan *plan,
  35. Param *prm);
  36. extern Param *assign_nestloop_param_var(PlannerInfo *root, Var *var);
  37. extern Param *assign_nestloop_param_placeholdervar(PlannerInfo *root,
  38. PlaceHolderVar *phv);
  39. extern int SS_assign_special_param(PlannerInfo *root);
  40. #endif /* SUBSELECT_H */