PostgreSQL Source Code git master
|
Go to the source code of this file.
Data Structures | |
struct | replace_rte_variables_context |
Typedefs | |
typedef struct replace_rte_variables_context | replace_rte_variables_context |
typedef Node *(* | replace_rte_variables_callback) (Var *var, replace_rte_variables_context *context) |
typedef enum ReplaceVarsNoMatchOption | ReplaceVarsNoMatchOption |
Enumerations | |
enum | ReplaceVarsNoMatchOption { REPLACEVARS_REPORT_ERROR , REPLACEVARS_CHANGE_VARNO , REPLACEVARS_SUBSTITUTE_NULL } |
Functions | |
Relids | adjust_relid_set (Relids relids, int oldrelid, int newrelid) |
void | CombineRangeTables (List **dst_rtable, List **dst_perminfos, List *src_rtable, List *src_perminfos) |
void | OffsetVarNodes (Node *node, int offset, int sublevels_up) |
void | ChangeVarNodes (Node *node, int rt_index, int new_index, int sublevels_up) |
void | ChangeVarNodesExtended (Node *node, int rt_index, int new_index, int sublevels_up, bool change_RangeTblRef) |
void | IncrementVarSublevelsUp (Node *node, int delta_sublevels_up, int min_sublevels_up) |
void | IncrementVarSublevelsUp_rtable (List *rtable, int delta_sublevels_up, int min_sublevels_up) |
bool | rangeTableEntry_used (Node *node, int rt_index, int sublevels_up) |
Query * | getInsertSelectQuery (Query *parsetree, Query ***subquery_ptr) |
void | AddQual (Query *parsetree, Node *qual) |
void | AddInvertedQual (Query *parsetree, Node *qual) |
bool | contain_aggs_of_level (Node *node, int levelsup) |
int | locate_agg_of_level (Node *node, int levelsup) |
bool | contain_windowfuncs (Node *node) |
int | locate_windowfunc (Node *node) |
bool | checkExprHasSubLink (Node *node) |
Node * | add_nulling_relids (Node *node, const Bitmapset *target_relids, const Bitmapset *added_relids) |
Node * | remove_nulling_relids (Node *node, const Bitmapset *removable_relids, const Bitmapset *except_relids) |
Node * | replace_rte_variables (Node *node, int target_varno, int sublevels_up, replace_rte_variables_callback callback, void *callback_arg, bool *outer_hasSubLinks) |
Node * | replace_rte_variables_mutator (Node *node, replace_rte_variables_context *context) |
Node * | map_variable_attnos (Node *node, int target_varno, int sublevels_up, const struct AttrMap *attno_map, Oid to_rowtype, bool *found_whole_row) |
Node * | ReplaceVarFromTargetList (Var *var, RangeTblEntry *target_rte, List *targetlist, int result_relation, ReplaceVarsNoMatchOption nomatch_option, int nomatch_varno) |
Node * | ReplaceVarsFromTargetList (Node *node, int target_varno, int sublevels_up, RangeTblEntry *target_rte, List *targetlist, int result_relation, ReplaceVarsNoMatchOption nomatch_option, int nomatch_varno, bool *outer_hasSubLinks) |
typedef Node *(* replace_rte_variables_callback) (Var *var, replace_rte_variables_context *context) |
Definition at line 25 of file rewriteManip.h.
typedef struct replace_rte_variables_context replace_rte_variables_context |
Definition at line 23 of file rewriteManip.h.
typedef enum ReplaceVarsNoMatchOption ReplaceVarsNoMatchOption |
Enumerator | |
---|---|
REPLACEVARS_REPORT_ERROR | |
REPLACEVARS_CHANGE_VARNO | |
REPLACEVARS_SUBSTITUTE_NULL |
Definition at line 37 of file rewriteManip.h.
Node * add_nulling_relids | ( | Node * | node, |
const Bitmapset * | target_relids, | ||
const Bitmapset * | added_relids | ||
) |
Definition at line 1287 of file rewriteManip.c.
References add_nulling_relids_mutator(), add_nulling_relids_context::added_relids, query_or_expression_tree_mutator, add_nulling_relids_context::sublevels_up, and add_nulling_relids_context::target_relids.
Referenced by deconstruct_distribute_oj_quals(), mark_nullable_by_grouping(), pullup_replace_vars_callback(), and transform_MERGE_to_join().
Definition at line 1263 of file rewriteManip.c.
References AddQual(), BooleanTest::arg, BooleanTest::booltesttype, IS_NOT_TRUE, BooleanTest::location, and makeNode.
Referenced by CopyAndAddInvertedQual().
Definition at line 1195 of file rewriteManip.c.
References Assert(), checkExprHasSubLink(), CMD_UTILITY, Query::commandType, contain_aggs_of_level(), copyObject, ereport, errcode(), errmsg(), ERROR, IsA, Query::jointree, make_and_qual(), FromExpr::quals, Query::setOperations, and Query::utilityStmt.
Referenced by AddInvertedQual(), rewriteRuleAction(), and rewriteTargetView().
Definition at line 808 of file rewriteManip.c.
References bms_add_member(), bms_copy(), bms_del_member(), bms_is_member(), and IS_SPECIAL_VARNO.
Referenced by ChangeVarNodes_walker(), remove_rel_from_eclass(), remove_rel_from_query(), remove_self_join_rel(), and update_eclasses().
void ChangeVarNodes | ( | Node * | node, |
int | rt_index, | ||
int | new_index, | ||
int | sublevels_up | ||
) |
Definition at line 793 of file rewriteManip.c.
References ChangeVarNodesExtended().
Referenced by add_security_quals(), add_with_check_options(), ApplyRetrieveRule(), CopyAndAddInvertedQual(), expand_generated_columns_internal(), expand_virtual_generated_columns(), get_relation_constraints(), get_relation_info(), get_relation_statistics(), infer_arbiter_indexes(), match_unique_clauses(), remove_rel_from_eclass(), remove_rel_from_query(), remove_self_join_rel(), rewriteRuleAction(), rewriteTargetView(), set_baserel_partition_constraint(), set_baserel_partition_key_exprs(), split_selfjoin_quals(), TriggerEnabled(), and update_eclasses().
void ChangeVarNodesExtended | ( | Node * | node, |
int | rt_index, | ||
int | new_index, | ||
int | sublevels_up, | ||
bool | change_RangeTblRef | ||
) |
Definition at line 751 of file rewriteManip.c.
References ChangeVarNodes_context::change_RangeTblRef, ChangeVarNodes_walker(), OnConflictExpr::exclRelIndex, IsA, lfirst, ChangeVarNodes_context::new_index, Query::onConflict, query_tree_walker, Query::rowMarks, ChangeVarNodes_context::rt_index, RowMarkClause::rti, and ChangeVarNodes_context::sublevels_up.
Referenced by ChangeVarNodes(), and remove_self_join_rel().
bool checkExprHasSubLink | ( | Node * | node | ) |
Definition at line 292 of file rewriteManip.c.
References checkExprHasSubLink_walker(), QTW_IGNORE_RC_SUBQUERIES, and query_or_expression_tree_walker.
Referenced by AddQual(), flatten_group_exprs_mutator(), flatten_join_alias_vars_mutator(), RelationBuildRowSecurity(), replace_rte_variables_mutator(), rewriteRuleAction(), and rewriteTargetView().
void CombineRangeTables | ( | List ** | dst_rtable, |
List ** | dst_perminfos, | ||
List * | src_rtable, | ||
List * | src_perminfos | ||
) |
Definition at line 347 of file rewriteManip.c.
References lfirst_node, list_concat(), and list_length().
Referenced by convert_EXISTS_sublink_to_join(), pull_up_simple_subquery(), pull_up_simple_union_all(), and rewriteRuleAction().
bool contain_aggs_of_level | ( | Node * | node, |
int | levelsup | ||
) |
Definition at line 85 of file rewriteManip.c.
References contain_aggs_of_level_walker(), query_or_expression_tree_walker, and contain_aggs_of_level_context::sublevels_up.
Referenced by AddQual(), checkTargetlistEntrySQL92(), and convert_EXISTS_to_ANY().
bool contain_windowfuncs | ( | Node * | node | ) |
Definition at line 214 of file rewriteManip.c.
References contain_windowfuncs_walker(), and query_or_expression_tree_walker.
Referenced by checkTargetlistEntrySQL92(), contain_window_function(), and transformWindowFuncCall().
Definition at line 1137 of file rewriteManip.c.
References Assert(), CMD_INSERT, CMD_SELECT, Query::commandType, elog, ERROR, FromExpr::fromlist, IsA, Query::jointree, linitial, list_length(), PRS2_NEW_VARNO, PRS2_OLD_VARNO, rt_fetch, Query::rtable, RTE_SUBQUERY, RangeTblEntry::rtekind, RangeTblRef::rtindex, and RangeTblEntry::subquery.
Referenced by DefineQueryRewrite(), InsertRule(), make_ruledef(), rewriteRuleAction(), and transformRuleStmt().
void IncrementVarSublevelsUp | ( | Node * | node, |
int | delta_sublevels_up, | ||
int | min_sublevels_up | ||
) |
Definition at line 928 of file rewriteManip.c.
References IncrementVarSublevelsUp_context::delta_sublevels_up, IncrementVarSublevelsUp_walker(), IncrementVarSublevelsUp_context::min_sublevels_up, QTW_EXAMINE_RTES_BEFORE, and query_or_expression_tree_walker.
Referenced by assign_param_for_placeholdervar(), build_minmax_path(), convert_EXISTS_sublink_to_join(), convert_EXISTS_to_ANY(), extract_lateral_references(), flatten_group_exprs_mutator(), flatten_join_alias_vars_mutator(), inline_cte_walker(), pull_up_simple_subquery(), pullup_replace_vars_callback(), replace_outer_agg(), replace_outer_grouping(), replace_outer_returning(), ReplaceVarsFromTargetList_callback(), rewriteSearchAndCycle(), and substitute_actual_srf_parameters_mutator().
void IncrementVarSublevelsUp_rtable | ( | List * | rtable, |
int | delta_sublevels_up, | ||
int | min_sublevels_up | ||
) |
Definition at line 951 of file rewriteManip.c.
References IncrementVarSublevelsUp_context::delta_sublevels_up, IncrementVarSublevelsUp_walker(), IncrementVarSublevelsUp_context::min_sublevels_up, QTW_EXAMINE_RTES_BEFORE, and range_table_walker.
Referenced by pull_up_simple_union_all().
int locate_agg_of_level | ( | Node * | node, |
int | levelsup | ||
) |
Definition at line 149 of file rewriteManip.c.
References locate_agg_of_level_context::agg_location, locate_agg_of_level_walker(), query_or_expression_tree_walker, and locate_agg_of_level_context::sublevels_up.
Referenced by check_agg_arguments(), checkTargetlistEntrySQL92(), and parseCheckAggregates().
int locate_windowfunc | ( | Node * | node | ) |
Definition at line 251 of file rewriteManip.c.
References locate_windowfunc_walker(), query_or_expression_tree_walker, and locate_windowfunc_context::win_location.
Referenced by checkTargetlistEntrySQL92(), and transformWindowFuncCall().
Node * map_variable_attnos | ( | Node * | node, |
int | target_varno, | ||
int | sublevels_up, | ||
const struct AttrMap * | attno_map, | ||
Oid | to_rowtype, | ||
bool * | found_whole_row | ||
) |
void OffsetVarNodes | ( | Node * | node, |
int | offset, | ||
int | sublevels_up | ||
) |
Definition at line 476 of file rewriteManip.c.
References OnConflictExpr::exclRelIndex, IsA, lfirst, OffsetVarNodes_context::offset, OffsetVarNodes_walker(), Query::onConflict, query_tree_walker, Query::rowMarks, RowMarkClause::rti, and OffsetVarNodes_context::sublevels_up.
Referenced by convert_EXISTS_sublink_to_join(), pull_up_simple_subquery(), and rewriteRuleAction().
bool rangeTableEntry_used | ( | Node * | node, |
int | rt_index, | ||
int | sublevels_up | ||
) |
Definition at line 1105 of file rewriteManip.c.
References query_or_expression_tree_walker, rangeTableEntry_used_walker(), rangeTableEntry_used_context::rt_index, and rangeTableEntry_used_context::sublevels_up.
Referenced by fireRIRrules(), matchLocks(), rewriteRuleAction(), and transformRuleStmt().
Node * remove_nulling_relids | ( | Node * | node, |
const Bitmapset * | removable_relids, | ||
const Bitmapset * | except_relids | ||
) |
Definition at line 1375 of file rewriteManip.c.
References remove_nulling_relids_context::except_relids, query_or_expression_tree_mutator, remove_nulling_relids_context::removable_relids, remove_nulling_relids_mutator(), and remove_nulling_relids_context::sublevels_up.
Referenced by add_unique_group_var(), deconstruct_distribute_oj_quals(), examine_variable(), have_partkey_equi_join(), make_group_input_target(), make_pathkeys_for_sortclauses_extended(), reconsider_full_join_clause(), reduce_outer_joins(), remove_useless_result_rtes(), and set_upper_references().
Node * replace_rte_variables | ( | Node * | node, |
int | target_varno, | ||
int | sublevels_up, | ||
replace_rte_variables_callback | callback, | ||
void * | callback_arg, | ||
bool * | outer_hasSubLinks | ||
) |
Definition at line 1482 of file rewriteManip.c.
References replace_rte_variables_context::callback, callback(), replace_rte_variables_context::callback_arg, elog, ERROR, replace_rte_variables_context::inserted_sublink, IsA, query_or_expression_tree_mutator, replace_rte_variables_mutator(), replace_rte_variables_context::sublevels_up, and replace_rte_variables_context::target_varno.
Referenced by pullup_replace_vars(), pullup_replace_vars_subquery(), and ReplaceVarsFromTargetList().
Node * replace_rte_variables_mutator | ( | Node * | node, |
replace_rte_variables_context * | context | ||
) |
Definition at line 1529 of file rewriteManip.c.
References replace_rte_variables_context::callback, checkExprHasSubLink(), CurrentOfExpr::cvarno, ereport, errcode(), errmsg(), ERROR, expression_tree_mutator, replace_rte_variables_context::inserted_sublink, IsA, query_tree_mutator, replace_rte_variables_mutator(), replace_rte_variables_context::sublevels_up, replace_rte_variables_context::target_varno, Var::varlevelsup, and Var::varno.
Referenced by replace_rte_variables(), and replace_rte_variables_mutator().
Node * ReplaceVarFromTargetList | ( | Var * | var, |
RangeTblEntry * | target_rte, | ||
List * | targetlist, | ||
int | result_relation, | ||
ReplaceVarsNoMatchOption | nomatch_option, | ||
int | nomatch_varno | ||
) |
Definition at line 1839 of file rewriteManip.c.
References RowExpr::args, COERCE_IMPLICIT_CAST, coerce_null_to_domain(), contains_multiexpr_param(), copyObject, elog, ereport, errcode(), errmsg(), ERROR, expandRTE(), TargetEntry::expr, get_tle_by_resno(), get_typlenbyval(), InvalidAttrNumber, IsA, lappend(), lfirst, Var::location, RowExpr::location, makeNode, NIL, ReplaceVarFromTargetList(), REPLACEVARS_CHANGE_VARNO, REPLACEVARS_REPORT_ERROR, REPLACEVARS_SUBSTITUTE_NULL, ReturningExpr::retexpr, ReturningExpr::retlevelsup, ReturningExpr::retold, SetVarReturningType(), VAR_RETURNING_DEFAULT, VAR_RETURNING_OLD, Var::varattno, Var::varlevelsup, Var::varno, and Var::varreturningtype.
Referenced by pullup_replace_vars_callback(), ReplaceVarFromTargetList(), and ReplaceVarsFromTargetList_callback().
Node * ReplaceVarsFromTargetList | ( | Node * | node, |
int | target_varno, | ||
int | sublevels_up, | ||
RangeTblEntry * | target_rte, | ||
List * | targetlist, | ||
int | result_relation, | ||
ReplaceVarsNoMatchOption | nomatch_option, | ||
int | nomatch_varno, | ||
bool * | outer_hasSubLinks | ||
) |
Definition at line 2005 of file rewriteManip.c.
References ReplaceVarsFromTargetList_context::nomatch_option, ReplaceVarsFromTargetList_context::nomatch_varno, replace_rte_variables(), ReplaceVarsFromTargetList_callback(), ReplaceVarsFromTargetList_context::result_relation, ReplaceVarsFromTargetList_context::target_rte, and ReplaceVarsFromTargetList_context::targetlist.
Referenced by CopyAndAddInvertedQual(), expand_generated_columns_internal(), rewriteRuleAction(), rewriteTargetView(), and subquery_push_qual().