73 for (levelsup = var->
varlevelsup; levelsup > 0; levelsup--)
77 foreach(ppl,
root->plan_params)
91 pvar->vartype == var->vartype &&
92 pvar->vartypmod == var->vartypmod &&
93 pvar->varcollid == var->varcollid &&
95 bms_equal(pvar->varnullingrels, var->varnullingrels))
135 retval->paramtypmod = var->vartypmod;
136 retval->paramcollid = var->varcollid;
157 for (levelsup = phv->
phlevelsup; levelsup > 0; levelsup--)
161 foreach(ppl,
root->plan_params)
231 Assert(agg->agglevelsup > 0 && agg->agglevelsup <
root->query_level);
234 for (levelsup = agg->agglevelsup; levelsup > 0; levelsup--)
243 Assert(agg->agglevelsup == 0);
257 retval->paramtypmod = -1;
258 retval->paramcollid = agg->aggcollid;
281 for (levelsup = grp->
agglevelsup; levelsup > 0; levelsup--)
304 retval->paramtypmod = -1;
334 elog(
ERROR,
"MergeSupportFunc found outside MERGE");
355 retval->paramtypmod = -1;
378 for (levelsup = rexpr->
retlevelsup; levelsup > 0; levelsup--)
421 foreach(lc,
root->curOuterParams)
431 param->paramtypmod = var->vartypmod;
432 param->paramcollid = var->varcollid;
470 foreach(lc,
root->curOuterParams)
531 foreach(lc, subplan_params)
543 elog(
ERROR,
"non-LATERAL parameter required by subquery");
546 foreach(lc2,
root->curOuterParams)
549 if (nlp->paramno == pitem->
paramId)
574 elog(
ERROR,
"non-LATERAL parameter required by subquery");
577 foreach(lc2,
root->curOuterParams)
580 if (nlp->paramno == pitem->
paramId)
597 elog(
ERROR,
"unexpected type of subquery parameter");
635 foreach(cell,
root->curOuterParams)
695 retval->paramtypmod = paramtypmod;
696 retval->paramcollid = paramcollation;
Bitmapset * bms_intersect(const Bitmapset *a, const Bitmapset *b)
bool bms_equal(const Bitmapset *a, const Bitmapset *b)
bool bms_is_subset(const Bitmapset *a, const Bitmapset *b)
bool bms_is_member(int x, const Bitmapset *a)
#define Assert(condition)
bool equal(const void *a, const void *b)
if(TABLE==NULL||TABLE_index==NULL)
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)
int exprLocation(const Node *expr)
#define IsA(nodeptr, _type_)
Param * replace_outer_merge_support(PlannerInfo *root, MergeSupportFunc *msf)
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_agg(PlannerInfo *root, Aggref *agg)
List * identify_current_nestloop_params(PlannerInfo *root, Relids leftrelids)
Param * replace_outer_returning(PlannerInfo *root, ReturningExpr *rexpr)
Param * replace_outer_grouping(PlannerInfo *root, GroupingFunc *grp)
Param * replace_outer_var(PlannerInfo *root, Var *var)
void process_subquery_nestloop_params(PlannerInfo *root, List *subplan_params)
Param * replace_outer_placeholdervar(PlannerInfo *root, PlaceHolderVar *phv)
Param * replace_nestloop_param_placeholdervar(PlannerInfo *root, PlaceHolderVar *phv)
int assign_special_exec_param(PlannerInfo *root)
Param * replace_nestloop_param_var(PlannerInfo *root, Var *var)
#define lfirst_node(type, lc)
static int list_length(const List *l)
#define foreach_delete_current(lst, var_or_cell)
PlaceHolderInfo * find_placeholder_info(PlannerInfo *root, PlaceHolderVar *phv)
void IncrementVarSublevelsUp(Node *node, int delta_sublevels_up, int min_sublevels_up)
VarReturningType varreturningtype