73 for (levelsup = var->
varlevelsup; levelsup > 0; levelsup--)
74 root = root->parent_root;
91 pvar->vartype == var->vartype &&
92 pvar->vartypmod == var->vartypmod &&
93 pvar->varcollid == var->varcollid)
133 retval->paramtypmod = var->vartypmod;
134 retval->paramcollid = var->varcollid;
155 for (levelsup = phv->
phlevelsup; levelsup > 0; levelsup--)
156 root = root->parent_root;
232 for (levelsup = agg->agglevelsup; levelsup > 0; levelsup--)
233 root = root->parent_root;
241 Assert(agg->agglevelsup == 0);
255 retval->paramtypmod = -1;
256 retval->paramcollid = agg->aggcollid;
279 for (levelsup = grp->
agglevelsup; levelsup > 0; levelsup--)
280 root = root->parent_root;
302 retval->paramtypmod = -1;
332 param->paramtypmod = var->vartypmod;
333 param->paramcollid = var->varcollid;
432 foreach(lc, subplan_params)
444 elog(
ERROR,
"non-LATERAL parameter required by subquery");
450 if (nlp->paramno == pitem->
paramId)
475 elog(
ERROR,
"non-LATERAL parameter required by subquery");
481 if (nlp->paramno == pitem->
paramId)
498 elog(
ERROR,
"unexpected type of subquery parameter");
596 retval->paramtypmod = paramtypmod;
597 retval->paramcollid = paramcollation;
bool bms_is_subset(const Bitmapset *a, const Bitmapset *b)
bool bms_is_member(int x, const Bitmapset *a)
Bitmapset * bms_intersect(const Bitmapset *a, const Bitmapset *b)
elog(ERROR, "%s: %s", p2, msg)
bool equal(const void *a, const void *b)
if(TABLE==NULL||TABLE_index==NULL)
Assert(fmt[strlen(fmt) - 1] !='\n')
List * lappend(List *list, void *datum)
List * lappend_oid(List *list, Oid datum)
Oid exprType(const Node *expr)
int32 exprTypmod(const Node *expr)
Oid exprCollation(const Node *expr)
#define IsA(nodeptr, _type_)
static int assign_param_for_var(PlannerInfo *root, Var *var)
static int assign_param_for_placeholdervar(PlannerInfo *root, PlaceHolderVar *phv)
Param * generate_new_exec_param(PlannerInfo *root, Oid paramtype, int32 paramtypmod, Oid paramcollation)
Param * replace_outer_var(PlannerInfo *root, Var *var)
void process_subquery_nestloop_params(PlannerInfo *root, List *subplan_params)
Param * replace_outer_grouping(PlannerInfo *root, GroupingFunc *grp)
Param * replace_nestloop_param_var(PlannerInfo *root, Var *var)
List * identify_current_nestloop_params(PlannerInfo *root, Relids leftrelids)
Param * replace_outer_placeholdervar(PlannerInfo *root, PlaceHolderVar *phv)
Param * replace_outer_agg(PlannerInfo *root, Aggref *agg)
Param * replace_nestloop_param_placeholdervar(PlannerInfo *root, PlaceHolderVar *phv)
int assign_special_exec_param(PlannerInfo *root)
#define lfirst_node(type, lc)
static int list_length(const List *l)
#define foreach_delete_current(lst, cell)
PlaceHolderInfo * find_placeholder_info(PlannerInfo *root, PlaceHolderVar *phv)
void IncrementVarSublevelsUp(Node *node, int delta_sublevels_up, int min_sublevels_up)