PostgreSQL Source Code
git master
|
#include "postgres.h"
#include "nodes/nodeFuncs.h"
#include "nodes/plannodes.h"
#include "optimizer/paramassign.h"
#include "optimizer/placeholder.h"
#include "rewrite/rewriteManip.h"
Go to the source code of this file.
Functions | |
static int | assign_param_for_var (PlannerInfo *root, Var *var) |
Param * | replace_outer_var (PlannerInfo *root, Var *var) |
static int | assign_param_for_placeholdervar (PlannerInfo *root, PlaceHolderVar *phv) |
Param * | replace_outer_placeholdervar (PlannerInfo *root, PlaceHolderVar *phv) |
Param * | replace_outer_agg (PlannerInfo *root, Aggref *agg) |
Param * | replace_outer_grouping (PlannerInfo *root, GroupingFunc *grp) |
Param * | replace_nestloop_param_var (PlannerInfo *root, Var *var) |
Param * | replace_nestloop_param_placeholdervar (PlannerInfo *root, PlaceHolderVar *phv) |
void | process_subquery_nestloop_params (PlannerInfo *root, List *subplan_params) |
List * | identify_current_nestloop_params (PlannerInfo *root, Relids leftrelids) |
Param * | generate_new_exec_param (PlannerInfo *root, Oid paramtype, int32 paramtypmod, Oid paramcollation) |
int | assign_special_exec_param (PlannerInfo *root) |
|
static |
Definition at line 148 of file paramassign.c.
References Assert(), copyObject, exprType(), PlannerInfo::glob, if(), IncrementVarSublevelsUp(), IsA, PlannerParamItem::item, lappend(), lappend_oid(), lfirst, list_length(), makeNode, PlannerGlobal::paramExecTypes, PlannerParamItem::paramId, PlaceHolderVar::phid, PlaceHolderVar::phlevelsup, and PlannerInfo::plan_params.
Referenced by replace_outer_placeholdervar().
|
static |
Definition at line 66 of file paramassign.c.
References copyObject, PlannerInfo::glob, if(), IsA, PlannerParamItem::item, lappend(), lappend_oid(), lfirst, list_length(), makeNode, PlannerGlobal::paramExecTypes, PlannerParamItem::paramId, PlannerInfo::plan_params, Var::varattno, Var::varlevelsup, and Var::varno.
Referenced by replace_outer_var().
int assign_special_exec_param | ( | PlannerInfo * | root | ) |
Definition at line 580 of file paramassign.c.
References PlannerInfo::glob, InvalidOid, lappend_oid(), list_length(), and PlannerGlobal::paramExecTypes.
Referenced by create_gather_merge_plan(), create_gather_plan(), grouping_planner(), SS_process_ctes(), and subquery_planner().
Param* generate_new_exec_param | ( | PlannerInfo * | root, |
Oid | paramtype, | ||
int32 | paramtypmod, | ||
Oid | paramcollation | ||
) |
Definition at line 553 of file paramassign.c.
References PlannerInfo::glob, lappend_oid(), list_length(), Param::location, makeNode, PARAM_EXEC, PlannerGlobal::paramExecTypes, Param::paramid, Param::paramkind, and Param::paramtype.
Referenced by build_subplan(), convert_EXISTS_to_ANY(), generate_subquery_params(), replace_nestloop_param_placeholdervar(), replace_nestloop_param_var(), and SS_make_initplan_output_param().
List* identify_current_nestloop_params | ( | PlannerInfo * | root, |
Relids | leftrelids | ||
) |
Definition at line 508 of file paramassign.c.
References bms_is_member(), bms_is_subset(), PlannerInfo::curOuterParams, find_placeholder_info(), foreach_delete_current, IsA, lappend(), lfirst, NIL, NestLoopParam::paramval, PlaceHolderInfo::ph_eval_at, and Var::varno.
Referenced by create_nestloop_plan().
void process_subquery_nestloop_params | ( | PlannerInfo * | root, |
List * | subplan_params | ||
) |
Definition at line 428 of file paramassign.c.
References Assert(), bms_is_member(), bms_is_subset(), copyObject, PlannerInfo::curOuterParams, PlannerInfo::curOuterRels, elog(), equal(), ERROR, find_placeholder_info(), if(), IsA, PlannerParamItem::item, lappend(), lfirst, lfirst_node, makeNode, PlannerParamItem::paramId, and Var::varno.
Referenced by create_subqueryscan_plan().
Param* replace_nestloop_param_placeholdervar | ( | PlannerInfo * | root, |
PlaceHolderVar * | phv | ||
) |
Definition at line 364 of file paramassign.c.
References copyObject, PlannerInfo::curOuterParams, equal(), exprCollation(), exprType(), exprTypmod(), generate_new_exec_param(), lappend(), lfirst, Param::location, makeNode, PARAM_EXEC, Param::paramid, Param::paramkind, NestLoopParam::paramno, Param::paramtype, and NestLoopParam::paramval.
Referenced by replace_nestloop_params_mutator().
Param* replace_nestloop_param_var | ( | PlannerInfo * | root, |
Var * | var | ||
) |
Definition at line 315 of file paramassign.c.
References copyObject, PlannerInfo::curOuterParams, equal(), generate_new_exec_param(), lappend(), lfirst, Var::location, Param::location, makeNode, PARAM_EXEC, Param::paramid, Param::paramkind, NestLoopParam::paramno, Param::paramtype, and NestLoopParam::paramval.
Referenced by replace_nestloop_params_mutator().
Param* replace_outer_agg | ( | PlannerInfo * | root, |
Aggref * | agg | ||
) |
Definition at line 223 of file paramassign.c.
References Assert(), copyObject, PlannerInfo::glob, IncrementVarSublevelsUp(), PlannerParamItem::item, lappend(), lappend_oid(), list_length(), Param::location, Aggref::location, makeNode, PARAM_EXEC, PlannerGlobal::paramExecTypes, PlannerParamItem::paramId, Param::paramid, Param::paramkind, Param::paramtype, PlannerInfo::plan_params, and PlannerInfo::query_level.
Referenced by replace_correlation_vars_mutator().
Param* replace_outer_grouping | ( | PlannerInfo * | root, |
GroupingFunc * | grp | ||
) |
Definition at line 269 of file paramassign.c.
References GroupingFunc::agglevelsup, Assert(), copyObject, exprType(), PlannerInfo::glob, IncrementVarSublevelsUp(), InvalidOid, PlannerParamItem::item, lappend(), lappend_oid(), list_length(), Param::location, GroupingFunc::location, makeNode, PARAM_EXEC, PlannerGlobal::paramExecTypes, PlannerParamItem::paramId, Param::paramid, Param::paramkind, Param::paramtype, PlannerInfo::plan_params, and PlannerInfo::query_level.
Referenced by replace_correlation_vars_mutator().
Param* replace_outer_placeholdervar | ( | PlannerInfo * | root, |
PlaceHolderVar * | phv | ||
) |
Definition at line 196 of file paramassign.c.
References Assert(), assign_param_for_placeholdervar(), exprCollation(), exprType(), exprTypmod(), i, Param::location, makeNode, PARAM_EXEC, Param::paramid, Param::paramkind, Param::paramtype, PlaceHolderVar::phlevelsup, and PlannerInfo::query_level.
Referenced by replace_correlation_vars_mutator().
Param* replace_outer_var | ( | PlannerInfo * | root, |
Var * | var | ||
) |
Definition at line 119 of file paramassign.c.
References Assert(), assign_param_for_var(), i, Var::location, Param::location, makeNode, PARAM_EXEC, Param::paramid, Param::paramkind, Param::paramtype, PlannerInfo::query_level, and Var::varlevelsup.
Referenced by replace_correlation_vars_mutator().