subselect.h 1.5 KB

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