PostgreSQL Source Code
git master
|
#include "postgres.h"
#include "catalog/pg_type.h"
#include "nodes/makefuncs.h"
#include "nodes/nodeFuncs.h"
#include "nodes/pathnodes.h"
#include "nodes/plannodes.h"
#include "parser/parse_coerce.h"
#include "parser/parse_relation.h"
#include "parser/parsetree.h"
#include "rewrite/rewriteManip.h"
Go to the source code of this file.
Data Structures | |
struct | contain_aggs_of_level_context |
struct | locate_agg_of_level_context |
struct | locate_windowfunc_context |
struct | OffsetVarNodes_context |
struct | ChangeVarNodes_context |
struct | IncrementVarSublevelsUp_context |
struct | rangeTableEntry_used_context |
struct | map_variable_attnos_context |
struct | ReplaceVarsFromTargetList_context |
Definition at line 1047 of file rewriteManip.c.
References AddQual(), BooleanTest::arg, BooleanTest::booltesttype, IS_NOT_TRUE, BooleanTest::location, and makeNode.
Referenced by CopyAndAddInvertedQual().
Definition at line 979 of file rewriteManip.c.
References Assert(), checkExprHasSubLink(), CMD_UTILITY, Query::commandType, contain_aggs_of_level(), copyObject, ereport, errcode(), errmsg(), ERROR, Query::hasSubLinks, IsA, Query::jointree, make_and_qual(), FromExpr::quals, Query::setOperations, and Query::utilityStmt.
Referenced by AddInvertedQual(), rewriteRuleAction(), and rewriteTargetView().
Definition at line 664 of file rewriteManip.c.
References bms_add_member(), bms_copy(), bms_del_member(), and bms_is_member().
Referenced by ChangeVarNodes_walker().
void ChangeVarNodes | ( | Node * | node, |
int | rt_index, | ||
int | new_index, | ||
int | sublevels_up | ||
) |
Definition at line 610 of file rewriteManip.c.
References ChangeVarNodes_walker(), OnConflictExpr::exclRelIndex, IsA, lfirst, ChangeVarNodes_context::new_index, Query::onConflict, query_tree_walker(), Query::resultRelation, Query::rowMarks, ChangeVarNodes_context::rt_index, RowMarkClause::rti, and ChangeVarNodes_context::sublevels_up.
Referenced by add_security_quals(), add_with_check_options(), ApplyRetrieveRule(), CopyAndAddInvertedQual(), get_relation_constraints(), get_relation_info(), get_relation_statistics(), rewriteRuleAction(), rewriteTargetView(), set_baserel_partition_constraint(), set_baserel_partition_key_exprs(), and TriggerEnabled().
|
static |
Definition at line 505 of file rewriteManip.c.
References adjust_relid_set(), Assert(), AppendRelInfo::child_relid, CurrentOfExpr::cvarno, expression_tree_walker(), IsA, j, ChangeVarNodes_context::new_index, AppendRelInfo::parent_relid, PlaceHolderVar::phlevelsup, PlaceHolderVar::phrels, PlanRowMark::prti, query_tree_walker(), ChangeVarNodes_context::rt_index, PlanRowMark::rti, RangeTblRef::rtindex, ChangeVarNodes_context::sublevels_up, Var::varlevelsup, Var::varno, and Var::varnosyn.
Referenced by ChangeVarNodes().
Definition at line 277 of file rewriteManip.c.
References checkExprHasSubLink_walker(), QTW_IGNORE_RC_SUBQUERIES, and query_or_expression_tree_walker().
Referenced by AddQual(), flatten_join_alias_vars_mutator(), RelationBuildRowSecurity(), replace_rte_variables_mutator(), rewriteRuleAction(), and rewriteTargetView().
Definition at line 290 of file rewriteManip.c.
References expression_tree_walker(), and IsA.
Referenced by checkExprHasSubLink().
Definition at line 67 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().
|
static |
Definition at line 84 of file rewriteManip.c.
References expression_tree_walker(), IsA, query_tree_walker(), and contain_aggs_of_level_context::sublevels_up.
Referenced by contain_aggs_of_level().
Definition at line 197 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 210 of file rewriteManip.c.
References expression_tree_walker(), and IsA.
Referenced by contain_windowfuncs().
Definition at line 306 of file rewriteManip.c.
References expression_tree_walker(), IsA, and PARAM_MULTIEXPR.
Referenced by ReplaceVarsFromTargetList_callback().
Definition at line 924 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, 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 776 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_join_alias_vars_mutator(), inline_cte_walker(), pull_up_simple_subquery(), pullup_replace_vars_callback(), replace_outer_agg(), replace_outer_grouping(), 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 799 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().
|
static |
Definition at line 703 of file rewriteManip.c.
References Aggref::agglevelsup, GroupingFunc::agglevelsup, RangeTblEntry::ctelevelsup, IncrementVarSublevelsUp_context::delta_sublevels_up, elog(), ERROR, expression_tree_walker(), IsA, IncrementVarSublevelsUp_context::min_sublevels_up, PlaceHolderVar::phlevelsup, QTW_EXAMINE_RTES_BEFORE, query_tree_walker(), RTE_CTE, RangeTblEntry::rtekind, and Var::varlevelsup.
Referenced by IncrementVarSublevelsUp(), and IncrementVarSublevelsUp_rtable().
int locate_agg_of_level | ( | Node * | node, |
int | levelsup | ||
) |
Definition at line 131 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().
|
static |
Definition at line 151 of file rewriteManip.c.
References locate_agg_of_level_context::agg_location, expression_tree_walker(), IsA, query_tree_walker(), and locate_agg_of_level_context::sublevels_up.
Referenced by locate_agg_of_level().
int locate_windowfunc | ( | Node * | node | ) |
Definition at line 235 of file rewriteManip.c.
References locate_windowfunc_walker(), query_or_expression_tree_walker(), and locate_windowfunc_context::win_location.
Referenced by checkTargetlistEntrySQL92(), and transformWindowFuncCall().
|
static |
Definition at line 254 of file rewriteManip.c.
References expression_tree_walker(), IsA, and locate_windowfunc_context::win_location.
Referenced by locate_windowfunc().
Node* map_variable_attnos | ( | Node * | node, |
int | target_varno, | ||
int | sublevels_up, | ||
const AttrMap * | attno_map, | ||
Oid | to_rowtype, | ||
bool * | found_whole_row | ||
) |
Definition at line 1356 of file rewriteManip.c.
References map_variable_attnos_context::attno_map, map_variable_attnos_context::found_whole_row, map_variable_attnos_mutator(), query_or_expression_tree_mutator(), map_variable_attnos_context::sublevels_up, map_variable_attnos_context::target_varno, and map_variable_attnos_context::to_rowtype.
Referenced by ATPrepAlterColumnType(), CompareIndexInfo(), DefineIndex(), ExecInitPartitionInfo(), expandTableLikeClause(), generateClonedIndexStmt(), map_partition_varattnos(), and MergeAttributes().
|
static |
Definition at line 1233 of file rewriteManip.c.
References ConvertRowtypeExpr::arg, Assert(), map_variable_attnos_context::attno_map, AttrMap::attnums, COERCE_IMPLICIT_CAST, ConvertRowtypeExpr::convertformat, elog(), ERROR, expression_tree_mutator(), map_variable_attnos_context::found_whole_row, if(), IsA, ConvertRowtypeExpr::location, makeNode, AttrMap::maplen, OidIsValid, palloc(), query_tree_mutator(), ConvertRowtypeExpr::resulttype, map_variable_attnos_context::sublevels_up, map_variable_attnos_context::target_varno, map_variable_attnos_context::to_rowtype, Var::varattno, Var::varattnosyn, Var::varlevelsup, Var::varno, Var::varnosyn, and Var::vartype.
Referenced by map_variable_attnos().
Definition at line 473 of file rewriteManip.c.
References bms_add_member(), and bms_next_member().
Referenced by OffsetVarNodes_walker().
void OffsetVarNodes | ( | Node * | node, |
int | offset, | ||
int | sublevels_up | ||
) |
Definition at line 425 of file rewriteManip.c.
References OnConflictExpr::exclRelIndex, IsA, lfirst, OffsetVarNodes_context::offset, OffsetVarNodes_walker(), Query::onConflict, query_tree_walker(), Query::resultRelation, Query::rowMarks, RowMarkClause::rti, and OffsetVarNodes_context::sublevels_up.
Referenced by convert_EXISTS_sublink_to_join(), pull_up_simple_subquery(), rewriteRuleAction(), and UpdateRangeTableOfViewParse().
|
static |
Definition at line 340 of file rewriteManip.c.
References Assert(), AppendRelInfo::child_relid, CurrentOfExpr::cvarno, expression_tree_walker(), IsA, j, OffsetVarNodes_context::offset, offset_relid_set(), AppendRelInfo::parent_relid, PlaceHolderVar::phlevelsup, PlaceHolderVar::phrels, query_tree_walker(), RangeTblRef::rtindex, OffsetVarNodes_context::sublevels_up, Var::varlevelsup, Var::varno, and Var::varnosyn.
Referenced by OffsetVarNodes().
Definition at line 892 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().
|
static |
Definition at line 826 of file rewriteManip.c.
References Assert(), CurrentOfExpr::cvarno, expression_tree_walker(), IsA, j, query_tree_walker(), rangeTableEntry_used_context::rt_index, RangeTblRef::rtindex, rangeTableEntry_used_context::sublevels_up, Var::varlevelsup, and Var::varno.
Referenced by rangeTableEntry_used().
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 1087 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 1134 of file rewriteManip.c.
References replace_rte_variables_context::callback, checkExprHasSubLink(), CurrentOfExpr::cvarno, ereport, errcode(), errmsg(), ERROR, expression_tree_mutator(), Query::hasSubLinks, replace_rte_variables_context::inserted_sublink, IsA, query_tree_mutator(), replace_rte_variables_context::sublevels_up, replace_rte_variables_context::target_varno, Var::varlevelsup, and Var::varno.
Referenced by pullup_replace_vars_callback(), replace_rte_variables(), and ReplaceVarsFromTargetList_callback().
Node* ReplaceVarsFromTargetList | ( | Node * | node, |
int | target_varno, | ||
int | sublevels_up, | ||
RangeTblEntry * | target_rte, | ||
List * | targetlist, | ||
ReplaceVarsNoMatchOption | nomatch_option, | ||
int | nomatch_varno, | ||
bool * | outer_hasSubLinks | ||
) |
Definition at line 1514 of file rewriteManip.c.
References ReplaceVarsFromTargetList_context::nomatch_option, ReplaceVarsFromTargetList_context::nomatch_varno, replace_rte_variables(), ReplaceVarsFromTargetList_callback(), ReplaceVarsFromTargetList_context::target_rte, and ReplaceVarsFromTargetList_context::targetlist.
Referenced by CopyAndAddInvertedQual(), rewriteRuleAction(), rewriteTargetView(), and subquery_push_qual().
|
static |
Definition at line 1410 of file rewriteManip.c.
References RowExpr::args, replace_rte_variables_context::callback_arg, COERCE_IMPLICIT_CAST, coerce_to_domain(), COERCION_IMPLICIT, RowExpr::colnames, contains_multiexpr_param(), copyObject, elog(), ereport, errcode(), errmsg(), ERROR, expandRTE(), get_tle_by_resno(), if(), IncrementVarSublevelsUp(), InvalidAttrNumber, InvalidOid, Var::location, RowExpr::location, makeNode, makeNullConst(), NIL, ReplaceVarsFromTargetList_context::nomatch_option, ReplaceVarsFromTargetList_context::nomatch_varno, replace_rte_variables_mutator(), REPLACEVARS_CHANGE_VARNO, REPLACEVARS_REPORT_ERROR, REPLACEVARS_SUBSTITUTE_NULL, RowExpr::row_format, RowExpr::row_typeid, ReplaceVarsFromTargetList_context::target_rte, ReplaceVarsFromTargetList_context::targetlist, Var::varattno, Var::varcollid, Var::varlevelsup, Var::varno, Var::vartype, and Var::vartypmod.
Referenced by ReplaceVarsFromTargetList().