PostgreSQL Source Code
git master
|
#include "nodes/pathnodes.h"
Go to the source code of this file.
Functions | |
PlaceHolderVar * | make_placeholder_expr (PlannerInfo *root, Expr *expr, Relids phrels) |
PlaceHolderInfo * | find_placeholder_info (PlannerInfo *root, PlaceHolderVar *phv, bool create_new_ph) |
void | find_placeholders_in_jointree (PlannerInfo *root) |
void | update_placeholder_eval_levels (PlannerInfo *root, SpecialJoinInfo *new_sjinfo) |
void | fix_placeholder_input_needed_levels (PlannerInfo *root) |
void | add_placeholders_to_base_rels (PlannerInfo *root) |
void | add_placeholders_to_joinrel (PlannerInfo *root, RelOptInfo *joinrel, RelOptInfo *outer_rel, RelOptInfo *inner_rel) |
void add_placeholders_to_base_rels | ( | PlannerInfo * | root | ) |
Definition at line 379 of file placeholder.c.
References bms_get_singleton_member(), bms_nonempty_difference(), copyObject, PathTarget::exprs, find_base_rel(), lappend(), lfirst, PlaceHolderInfo::ph_eval_at, PlaceHolderInfo::ph_needed, PlaceHolderInfo::ph_var, PlannerInfo::placeholder_list, and RelOptInfo::reltarget.
Referenced by query_planner().
void add_placeholders_to_joinrel | ( | PlannerInfo * | root, |
RelOptInfo * | joinrel, | ||
RelOptInfo * | outer_rel, | ||
RelOptInfo * | inner_rel | ||
) |
Definition at line 413 of file placeholder.c.
References bms_add_members(), bms_is_subset(), bms_nonempty_difference(), PathTarget::cost, cost_qual_eval_node(), RelOptInfo::direct_lateral_relids, PathTarget::exprs, lappend(), lfirst, QualCost::per_tuple, PlaceHolderInfo::ph_eval_at, PlaceHolderInfo::ph_lateral, PlaceHolderInfo::ph_needed, PlaceHolderInfo::ph_var, PlaceHolderInfo::ph_width, PlaceHolderVar::phexpr, PlannerInfo::placeholder_list, RelOptInfo::relids, RelOptInfo::reltarget, QualCost::startup, and PathTarget::width.
Referenced by build_join_rel().
PlaceHolderInfo* find_placeholder_info | ( | PlannerInfo * | root, |
PlaceHolderVar * | phv, | ||
bool | create_new_ph | ||
) |
Definition at line 69 of file placeholder.c.
References Assert(), bms_copy(), bms_difference(), bms_int_members(), bms_is_empty(), copyObject, elog, ERROR, exprType(), exprTypmod(), find_placeholders_in_expr(), get_typavgwidth(), lappend(), lfirst, makeNode, PlaceHolderInfo::ph_eval_at, PlaceHolderInfo::ph_lateral, PlaceHolderInfo::ph_needed, PlaceHolderInfo::ph_var, PlaceHolderInfo::ph_width, PlaceHolderVar::phexpr, PlaceHolderVar::phid, PlaceHolderInfo::phid, PlaceHolderVar::phlevelsup, PlaceHolderVar::phrels, PlannerInfo::placeholder_list, and pull_varnos().
Referenced by add_vars_to_targetlist(), create_lateral_join_info(), find_placeholders_in_expr(), identify_current_nestloop_params(), process_subquery_nestloop_params(), replace_nestloop_params_mutator(), and set_rel_width().
void find_placeholders_in_jointree | ( | PlannerInfo * | root | ) |
Definition at line 144 of file placeholder.c.
References Assert(), find_placeholders_recurse(), PlannerInfo::glob, IsA, Query::jointree, PlannerGlobal::lastPHId, and PlannerInfo::parse.
Referenced by query_planner().
void fix_placeholder_input_needed_levels | ( | PlannerInfo * | root | ) |
Definition at line 350 of file placeholder.c.
References add_vars_to_targetlist(), lfirst, list_free(), PlaceHolderInfo::ph_eval_at, PlaceHolderInfo::ph_var, PlaceHolderVar::phexpr, PlannerInfo::placeholder_list, pull_var_clause(), PVC_INCLUDE_PLACEHOLDERS, PVC_RECURSE_AGGREGATES, and PVC_RECURSE_WINDOWFUNCS.
Referenced by query_planner().
PlaceHolderVar* make_placeholder_expr | ( | PlannerInfo * | root, |
Expr * | expr, | ||
Relids | phrels | ||
) |
Definition at line 39 of file placeholder.c.
References PlannerInfo::glob, PlannerGlobal::lastPHId, makeNode, PlaceHolderVar::phexpr, PlaceHolderVar::phid, PlaceHolderVar::phlevelsup, and PlaceHolderVar::phrels.
Referenced by pullup_replace_vars_callback().
void update_placeholder_eval_levels | ( | PlannerInfo * | root, |
SpecialJoinInfo * | new_sjinfo | ||
) |
Definition at line 265 of file placeholder.c.
References Assert(), bms_add_members(), bms_is_subset(), bms_overlap(), JOIN_FULL, PlannerInfo::join_info_list, SpecialJoinInfo::jointype, lfirst, SpecialJoinInfo::min_lefthand, SpecialJoinInfo::min_righthand, PlaceHolderInfo::ph_eval_at, PlaceHolderInfo::ph_var, PlaceHolderVar::phrels, PlannerInfo::placeholder_list, SpecialJoinInfo::syn_lefthand, and SpecialJoinInfo::syn_righthand.
Referenced by deconstruct_recurse().