|
PostgreSQL Source Code git master
|
#include "postgres.h"#include "nodes/nodeFuncs.h"#include "optimizer/cost.h"#include "optimizer/optimizer.h"#include "optimizer/pathnode.h"#include "optimizer/placeholder.h"#include "optimizer/planmain.h"#include "utils/lsyscache.h"
Go to the source code of this file.
Data Structures | |
| struct | contain_placeholder_references_context |
Typedefs | |
| typedef struct contain_placeholder_references_context | contain_placeholder_references_context |
| void add_placeholders_to_base_rels | ( | PlannerInfo * | root | ) |
Definition at line 358 of file placeholder.c.
References Assert, bms_get_singleton_member(), bms_nonempty_difference(), copyObject, PathTarget::exprs, fb(), find_base_rel(), lappend(), lfirst, RelOptInfo::reltarget, and root.
Referenced by query_planner().
| void add_placeholders_to_joinrel | ( | PlannerInfo * | root, |
| RelOptInfo * | joinrel, | ||
| RelOptInfo * | outer_rel, | ||
| RelOptInfo * | inner_rel, | ||
| SpecialJoinInfo * | sjinfo | ||
| ) |
Definition at line 402 of file placeholder.c.
References Assert, bms_add_members(), bms_is_subset(), bms_nonempty_difference(), clamp_width_est(), copyObject, PathTarget::cost, cost_qual_eval_node(), RelOptInfo::direct_lateral_relids, PathTarget::exprs, fb(), lappend(), lfirst, QualCost::per_tuple, RelOptInfo::relids, RelOptInfo::reltarget, root, QualCost::startup, and PathTarget::width.
Referenced by build_join_rel().
Definition at line 632 of file placeholder.c.
References bms_is_empty, contain_noop_phv_walker(), expression_tree_walker, fb(), and IsA.
Referenced by contain_noop_phv_walker(), and strip_noop_phvs().
| bool contain_placeholder_references_to | ( | PlannerInfo * | root, |
| Node * | clause, | ||
| int | relid | ||
| ) |
Definition at line 493 of file placeholder.c.
References contain_placeholder_references_walker(), contain_placeholder_references_context::relid, root, and contain_placeholder_references_context::sublevels_up.
Referenced by make_outerjoininfo().
|
static |
Definition at line 508 of file placeholder.c.
References bms_is_member(), contain_placeholder_references_walker(), expression_tree_walker, fb(), IsA, query_tree_walker, contain_placeholder_references_context::relid, result, and contain_placeholder_references_context::sublevels_up.
Referenced by contain_placeholder_references_to(), and contain_placeholder_references_walker().
| PlaceHolderInfo * find_placeholder_info | ( | PlannerInfo * | root, |
| PlaceHolderVar * | phv | ||
| ) |
Definition at line 85 of file placeholder.c.
References Assert, bms_copy(), bms_difference(), bms_int_members(), bms_is_empty, copyObject, elog, ERROR, exprType(), exprTypmod(), fb(), find_placeholders_in_expr(), get_typavgwidth(), lappend(), makeNode, palloc0_array, pull_varnos(), repalloc0_array, and root.
Referenced by add_vars_to_attr_needed(), add_vars_to_targetlist(), build_joinrel_tlist(), create_lateral_join_info(), extract_lateral_vars_from_PHVs(), find_placeholders_in_expr(), identify_current_nestloop_params(), process_subquery_nestloop_params(), replace_nestloop_params_mutator(), and set_rel_width().
|
static |
Definition at line 259 of file placeholder.c.
References fb(), find_placeholder_info(), IsA, lfirst, list_free(), pull_var_clause(), PVC_INCLUDE_PLACEHOLDERS, PVC_RECURSE_AGGREGATES, PVC_RECURSE_WINDOWFUNCS, and root.
Referenced by find_placeholder_info(), and find_placeholders_recurse().
| void find_placeholders_in_jointree | ( | PlannerInfo * | root | ) |
Definition at line 187 of file placeholder.c.
References Assert, fb(), find_placeholders_recurse(), IsA, and root.
Referenced by query_planner().
|
static |
Definition at line 209 of file placeholder.c.
References elog, ERROR, fb(), find_placeholders_in_expr(), find_placeholders_recurse(), FromExpr::fromlist, IsA, j, lfirst, nodeTag, FromExpr::quals, and root.
Referenced by find_placeholders_in_jointree(), and find_placeholders_recurse().
| void fix_placeholder_input_needed_levels | ( | PlannerInfo * | root | ) |
Definition at line 302 of file placeholder.c.
References add_vars_to_targetlist(), fb(), lfirst, list_free(), pull_var_clause(), PVC_INCLUDE_PLACEHOLDERS, PVC_RECURSE_AGGREGATES, PVC_RECURSE_WINDOWFUNCS, and root.
Referenced by query_planner().
| Relids get_placeholder_nulling_relids | ( | PlannerInfo * | root, |
| PlaceHolderInfo * | phinfo | ||
| ) |
Definition at line 561 of file placeholder.c.
References Assert, bms_add_members(), bms_del_members(), bms_is_member(), bms_next_member(), fb(), RelOptInfo::nulling_relids, result, and root.
Referenced by identify_current_nestloop_params().
| PlaceHolderVar * make_placeholder_expr | ( | PlannerInfo * | root, |
| Expr * | expr, | ||
| Relids | phrels | ||
| ) |
Definition at line 56 of file placeholder.c.
References fb(), makeNode, and root.
Referenced by add_nullingrels_if_needed(), mark_nullable_by_grouping(), and pullup_replace_vars_callback().
| void rebuild_placeholder_attr_needed | ( | PlannerInfo * | root | ) |
Definition at line 329 of file placeholder.c.
References add_vars_to_attr_needed(), fb(), lfirst, list_free(), pull_var_clause(), PVC_INCLUDE_PLACEHOLDERS, PVC_RECURSE_AGGREGATES, PVC_RECURSE_WINDOWFUNCS, and root.
Referenced by remove_leftjoinrel_from_query(), and remove_self_join_rel().
Definition at line 614 of file placeholder.c.
References contain_noop_phv_walker(), fb(), and strip_noop_phvs_mutator().
Referenced by fix_indexqual_operand(), match_boolean_partition_clause(), match_clause_to_partition_key(), and match_index_to_operand().
Definition at line 657 of file placeholder.c.
References bms_is_empty, expression_tree_mutator, fb(), IsA, and strip_noop_phvs_mutator().
Referenced by strip_noop_phvs(), and strip_noop_phvs_mutator().