1/*-------------------------------------------------------------------------
2 *
3 * paramassign.h
4 * Functions for assigning PARAM_EXEC slots during planning.
5 *
6 * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group
7 * Portions Copyright (c) 1994, Regents of the University of California
8 *
9 * src/include/optimizer/paramassign.h
10 *
11 *-------------------------------------------------------------------------
12 */
13#ifndef PARAMASSIGN_H
14#define PARAMASSIGN_H
15
16#include "nodes/pathnodes.h"
17
18extern Param *replace_outer_var(PlannerInfo *root, Var *var);
19extern Param *replace_outer_placeholdervar(PlannerInfo *root,
20 PlaceHolderVar *phv);
21extern Param *replace_outer_agg(PlannerInfo *root, Aggref *agg);
22extern Param *replace_outer_grouping(PlannerInfo *root, GroupingFunc *grp);
23extern Param *replace_nestloop_param_var(PlannerInfo *root, Var *var);
24extern Param *replace_nestloop_param_placeholdervar(PlannerInfo *root,
25 PlaceHolderVar *phv);
26extern void process_subquery_nestloop_params(PlannerInfo *root,
27 List *subplan_params);
28extern List *identify_current_nestloop_params(PlannerInfo *root,
29 Relids leftrelids);
30extern Param *generate_new_exec_param(PlannerInfo *root, Oid paramtype,
31 int32 paramtypmod, Oid paramcollation);
32extern int assign_special_exec_param(PlannerInfo *root);
33
34#endif /* PARAMASSIGN_H */
35