PostgreSQL Source Code
git master
|
Go to the source code of this file.
Functions | |
void | replace_empty_jointree (Query *parse) |
void | pull_up_sublinks (PlannerInfo *root) |
void | preprocess_function_rtes (PlannerInfo *root) |
void | pull_up_subqueries (PlannerInfo *root) |
void | flatten_simple_union_all (PlannerInfo *root) |
void | reduce_outer_joins (PlannerInfo *root) |
void | remove_useless_result_rtes (PlannerInfo *root) |
Relids | get_relids_in_jointree (Node *jtnode, bool include_joins) |
Relids | get_relids_for_join (Query *query, int joinrelid) |
List * | preprocess_targetlist (PlannerInfo *root) |
PlanRowMark * | get_plan_rowmark (List *rowmarks, Index rtindex) |
void | get_agg_clause_costs (PlannerInfo *root, AggSplit aggsplit, AggClauseCosts *agg_costs) |
void | preprocess_aggrefs (PlannerInfo *root, Node *clause) |
RelOptInfo * | plan_set_operations (PlannerInfo *root) |
void flatten_simple_union_all | ( | PlannerInfo * | root | ) |
Definition at line 2453 of file prepjointree.c.
References Assert, castNode, copyObject, FromExpr::fromlist, PlannerInfo::hasRecursion, RangeTblEntry::inh, is_simple_union_all_recurse(), IsA, Query::jointree, lappend(), list_length(), list_make1, makeNode, NIL, parse(), PlannerInfo::parse, pull_up_union_leaf_queries(), rt_fetch, Query::rtable, RTE_SUBQUERY, RangeTblEntry::rtekind, RangeTblRef::rtindex, and Query::setOperations.
Referenced by subquery_planner().
void get_agg_clause_costs | ( | PlannerInfo * | root, |
AggSplit | aggsplit, | ||
AggClauseCosts * | agg_costs | ||
) |
Definition at line 542 of file prepagg.c.
References add_function_cost(), Aggref::aggdirectargs, AggTransInfo::aggfilter, PlannerInfo::agginfos, PlannerInfo::aggtransinfos, AggTransInfo::aggtransspace, AggTransInfo::aggtranstype, AggTransInfo::aggtranstypmod, ALLOCSET_DEFAULT_INITSIZE, ALLOCSET_SMALL_INITSIZE, AggTransInfo::args, AggTransInfo::combinefn_oid, cost_qual_eval_node(), AggTransInfo::deserialfn_oid, DO_AGGSPLIT_COMBINE, DO_AGGSPLIT_DESERIALIZE, DO_AGGSPLIT_SERIALIZE, DO_AGGSPLIT_SKIPFINAL, AggClauseCosts::finalCost, AggInfo::finalfn_oid, get_typavgwidth(), lfirst, MAXALIGN, OidIsValid, QualCost::per_tuple, AggInfo::representative_aggref, AggTransInfo::serialfn_oid, QualCost::startup, AggClauseCosts::transCost, AggTransInfo::transfn_oid, AggClauseCosts::transitionSpace, and AggTransInfo::transtypeByVal.
Referenced by create_grouping_paths(), create_partial_grouping_paths(), and estimate_path_cost_size().
PlanRowMark* get_plan_rowmark | ( | List * | rowmarks, |
Index | rtindex | ||
) |
Definition at line 425 of file preptlist.c.
References lfirst, and PlanRowMark::rti.
Referenced by check_index_predicates(), deparseLockingClause(), and expand_inherited_rtentry().
Definition at line 3570 of file prepjointree.c.
References elog, ERROR, find_jointree_node_for_rel(), get_relids_in_jointree(), and Query::jointree.
Referenced by alias_relid_set().
Definition at line 3526 of file prepjointree.c.
References bms_add_member(), bms_join(), bms_make_singleton(), elog, ERROR, FromExpr::fromlist, get_relids_in_jointree(), IsA, JoinExpr::larg, lfirst, nodeTag, JoinExpr::rarg, JoinExpr::rtindex, and pullup_replace_vars_context::varno.
Referenced by distribute_qual_to_rels(), find_dependent_phvs_in_jointree(), get_relids_for_join(), get_relids_in_jointree(), is_simple_subquery(), preprocess_rowmarks(), process_implied_equality(), pull_up_simple_subquery(), and remove_result_refs().
RelOptInfo* plan_set_operations | ( | PlannerInfo * | root | ) |
Definition at line 103 of file prepunion.c.
References Assert, castNode, Query::distinctClause, PlannerInfo::ec_merging_done, PlannerInfo::eq_classes, FromExpr::fromlist, generate_recursion_path(), Query::groupClause, PlannerInfo::hasRecursion, Query::havingQual, IsA, Query::jointree, SetOperationStmt::larg, NIL, parse(), PlannerInfo::parse, PlannerInfo::processed_tlist, FromExpr::quals, recurse_set_operations(), Query::setOperations, setup_simple_rel_arrays(), PlannerInfo::simple_rte_array, RangeTblEntry::subquery, Query::targetList, and Query::windowClause.
Referenced by grouping_planner().
void preprocess_aggrefs | ( | PlannerInfo * | root, |
Node * | clause | ||
) |
Definition at line 111 of file prepagg.c.
References preprocess_aggrefs_walker().
Referenced by grouping_planner().
void preprocess_function_rtes | ( | PlannerInfo * | root | ) |
Definition at line 639 of file prepjointree.c.
References eval_const_expressions(), RangeTblEntry::funcordinality, RangeTblEntry::functions, inline_set_returning_function(), lfirst, NIL, PlannerInfo::parse, Query::rtable, RTE_FUNCTION, RTE_SUBQUERY, RangeTblEntry::rtekind, RangeTblEntry::security_barrier, and RangeTblEntry::subquery.
Referenced by pull_up_simple_subquery(), and subquery_planner().
List* preprocess_targetlist | ( | PlannerInfo * | root | ) |
Definition at line 69 of file preptlist.c.
References PlanRowMark::allMarkTypes, Assert, CMD_DELETE, CMD_INSERT, CMD_SELECT, CMD_UPDATE, Query::commandType, elog, ERROR, expand_targetlist(), InvalidOid, IsA, PlanRowMark::isParent, lappend(), lfirst, list_free(), list_length(), makeTargetEntry(), makeVar(), makeWholeRowVar(), NoLock, Query::onConflict, OnConflictExpr::onConflictSet, parse(), PlannerInfo::parse, PlanRowMark::prti, pstrdup(), pull_var_clause(), PVC_INCLUDE_PLACEHOLDERS, PVC_RECURSE_AGGREGATES, PVC_RECURSE_WINDOWFUNCS, RangeTblEntry::relid, Query::resultRelation, Query::returningList, rewriteTargetListUD(), ROW_MARK_COPY, PlanRowMark::rowmarkId, PlannerInfo::rowMarks, rt_fetch, Query::rtable, RTE_RELATION, RangeTblEntry::rtekind, PlanRowMark::rti, SelfItemPointerAttributeNumber, snprintf, table_close(), table_open(), TableOidAttributeNumber, Query::targetList, tlist_member(), and Var::varno.
Referenced by grouping_planner(), and inheritance_planner().
void pull_up_sublinks | ( | PlannerInfo * | root | ) |
Definition at line 208 of file prepjointree.c.
References IsA, Query::jointree, list_make1, makeFromExpr(), PlannerInfo::parse, pull_up_sublinks_jointree_recurse(), and pullup_replace_vars_context::relids.
Referenced by pull_up_simple_subquery(), and subquery_planner().
void pull_up_subqueries | ( | PlannerInfo * | root | ) |
Definition at line 680 of file prepjointree.c.
References Assert, IsA, Query::jointree, PlannerInfo::parse, and pull_up_subqueries_recurse().
Referenced by pull_up_simple_subquery(), and subquery_planner().
void reduce_outer_joins | ( | PlannerInfo * | root | ) |
Definition at line 2571 of file prepjointree.c.
References reduce_outer_joins_state::contains_outer, elog, ERROR, Query::jointree, NIL, PlannerInfo::parse, reduce_outer_joins_pass1(), and reduce_outer_joins_pass2().
Referenced by subquery_planner().
void remove_useless_result_rtes | ( | PlannerInfo * | root | ) |
Definition at line 2984 of file prepjointree.c.
References Assert, foreach_delete_current, IsA, Query::jointree, lfirst, PlannerInfo::parse, remove_useless_results_recurse(), PlannerInfo::rowMarks, rt_fetch, Query::rtable, RTE_RESULT, and PlanRowMark::rti.
Referenced by subquery_planner().
void replace_empty_jointree | ( | Query * | parse | ) |
Definition at line 150 of file prepjointree.c.
References RangeTblEntry::eref, FromExpr::fromlist, Query::jointree, lappend(), list_length(), list_make1, makeAlias(), makeNode, NIL, Query::rtable, RTE_RESULT, RangeTblEntry::rtekind, RangeTblRef::rtindex, and Query::setOperations.
Referenced by convert_EXISTS_sublink_to_join(), pull_up_simple_subquery(), and subquery_planner().