PostgreSQL Source Code git master
|
Go to the source code of this file.
Functions | |
List * | QueryRewrite (Query *parsetree) |
void | AcquireRewriteLocks (Query *parsetree, bool forExecute, bool forUpdatePushedDown) |
Node * | build_column_default (Relation rel, int attrno) |
Query * | get_view_query (Relation view) |
bool | view_has_instead_trigger (Relation view, CmdType event, List *mergeActionList) |
const char * | view_query_is_auto_updatable (Query *viewquery, bool check_cols) |
int | relation_is_updatable (Oid reloid, List *outer_reloids, bool include_triggers, Bitmapset *include_cols) |
void | error_view_not_updatable (Relation view, CmdType command, List *mergeActionList, const char *detail) |
Node * | expand_generated_columns_in_expr (Node *node, Relation rel, int rt_index) |
Node * | build_generation_expression (Relation rel, int attrno) |
void AcquireRewriteLocks | ( | Query * | parsetree, |
bool | forExecute, | ||
bool | forUpdatePushedDown | ||
) |
Definition at line 148 of file rewriteHandler.c.
References AccessShareLock, acquireLocksOnSubLinks(), AcquireRewriteLocks(), Assert(), Query::cteList, CommonTableExpr::ctequery, elog, ERROR, acquireLocksOnSubLinks_context::for_execute, get_parse_rowmark(), get_rte_attribute_is_dropped(), IsA, lappend(), lfirst, NIL, NoLock, QTW_IGNORE_RC_SUBQUERIES, query_tree_walker, RelationData::rd_rel, RowShareLock, rt_fetch, Query::rtable, RTE_JOIN, RTE_RELATION, RTE_SUBQUERY, RangeTblEntry::rtekind, strip_implicit_coercions(), RangeTblEntry::subquery, table_close(), table_open(), Var::varattno, Var::varlevelsup, and Var::varno.
Referenced by acquireLocksOnSubLinks(), AcquireRewriteLocks(), ApplyRetrieveRule(), fmgr_sql_validator(), get_query_def(), inline_set_returning_function(), make_ruledef(), prepare_next_query(), print_function_sqlbody(), refresh_matview_datafill(), RevalidateCachedQuery(), and rewriteRuleAction().
Definition at line 1227 of file rewriteHandler.c.
References COERCE_IMPLICIT_CAST, coerce_to_target_type(), COERCION_ASSIGNMENT, elog, ereport, errcode(), errhint(), errmsg(), ERROR, exprType(), format_type_be(), get_typdefault(), getIdentitySequence(), makeNode, NameStr, RelationData::rd_att, RelationGetRelationName, NextValueExpr::seqid, TupleDescAttr(), TupleDescGetDefault(), and NextValueExpr::typeId.
Referenced by ATExecAddColumn(), ATExecAlterColumnType(), ATExecSetExpression(), BeginCopyFrom(), build_generation_expression(), ExecInitGenerated(), rewriteTargetListIU(), rewriteValuesRTE(), and slot_fill_defaults().
Definition at line 4499 of file rewriteHandler.c.
References CollateExpr::arg, Assert(), build_column_default(), CollateExpr::collOid, TupleDescData::constr, elog, ERROR, exprCollation(), TupleConstr::has_generated_virtual, CollateExpr::location, makeNode, RelationGetDescr, RelationGetRelationName, and TupleDescAttr().
Referenced by ExecRelGenVirtualNotNull(), expand_generated_columns_internal(), and expand_virtual_generated_columns().
void error_view_not_updatable | ( | Relation | view, |
CmdType | command, | ||
List * | mergeActionList, | ||
const char * | detail | ||
) |
Definition at line 3118 of file rewriteHandler.c.
References _, generate_unaccent_rules::action, CMD_DELETE, CMD_INSERT, CMD_MERGE, CMD_NOTHING, CMD_UPDATE, elog, ereport, errcode(), errdetail_internal(), errhint(), errmsg(), ERROR, foreach_node, RelationGetRelationName, TriggerDesc::trig_delete_instead_row, TriggerDesc::trig_insert_instead_row, TriggerDesc::trig_update_instead_row, and RelationData::trigdesc.
Referenced by CheckValidResultRel(), RewriteQuery(), and rewriteTargetView().
Definition at line 4473 of file rewriteHandler.c.
References TupleDescData::constr, expand_generated_columns_internal(), TupleConstr::has_generated_virtual, makeAlias(), makeNode, NIL, RelationGetDescr, RelationGetRelationName, RelationGetRelid, RTE_RELATION, and RangeTblEntry::rtekind.
Referenced by ATRewriteTable(), ExecRelCheck(), pgoutput_row_filter_init(), QueueCheckConstraintValidation(), TransformPubWhereClauses(), and TriggerEnabled().
Definition at line 2481 of file rewriteHandler.c.
References Assert(), CMD_SELECT, elog, ERROR, i, linitial, list_length(), RuleLock::numLocks, RelationData::rd_rel, RelationData::rd_rules, and RuleLock::rules.
Referenced by ATExecSetRelOptions(), LockViewRecurse(), relation_is_updatable(), and rewriteTargetView().
Definition at line 4545 of file rewriteHandler.c.
References Assert(), Query::commandType, fireRIRrules(), lappend(), lfirst, NIL, QSRC_INSTEAD_RULE, QSRC_ORIGINAL, QSRC_QUAL_INSTEAD_RULE, and RewriteQuery().
Referenced by ExecCreateTableAs(), ExplainOneUtility(), ExplainQuery(), PerformCursorOpen(), pg_rewrite_query(), and refresh_matview_datafill().
int relation_is_updatable | ( | Oid | reloid, |
List * | outer_reloids, | ||
bool | include_triggers, | ||
Bitmapset * | include_cols | ||
) |
Definition at line 2863 of file rewriteHandler.c.
References AccessShareLock, adjust_view_column_set(), ALL_EVENTS, Assert(), bms_int_members(), bms_is_empty, check_stack_depth(), CMD_DELETE, CMD_INSERT, CMD_UPDATE, RewriteRule::event, FdwRoutine::ExecForeignDelete, FdwRoutine::ExecForeignInsert, FdwRoutine::ExecForeignUpdate, FromExpr::fromlist, get_view_query(), GetFdwRoutineForRelation(), i, FdwRoutine::IsForeignRelUpdatable, RewriteRule::isInstead, Query::jointree, lappend_oid(), linitial, list_delete_last(), list_member_oid(), RuleLock::numLocks, RewriteRule::qual, RelationData::rd_rel, RelationData::rd_rules, relation_close(), relation_is_updatable(), RelationGetRelid, rt_fetch, Query::rtable, RTE_RELATION, RangeTblEntry::rtekind, RangeTblRef::rtindex, RuleLock::rules, Query::targetList, TriggerDesc::trig_delete_instead_row, TriggerDesc::trig_insert_instead_row, TriggerDesc::trig_update_instead_row, RelationData::trigdesc, try_relation_open(), view_cols_are_auto_updatable(), and view_query_is_auto_updatable().
Referenced by pg_column_is_updatable(), pg_relation_is_updatable(), and relation_is_updatable().
Definition at line 2520 of file rewriteHandler.c.
References generate_unaccent_rules::action, CMD_DELETE, CMD_INSERT, CMD_MERGE, CMD_NOTHING, CMD_UPDATE, elog, ERROR, foreach_node, TriggerDesc::trig_delete_instead_row, TriggerDesc::trig_insert_instead_row, TriggerDesc::trig_update_instead_row, and RelationData::trigdesc.
Referenced by CheckValidResultRel(), RewriteQuery(), rewriteTargetView(), and rewriteValuesRTE().
const char * view_query_is_auto_updatable | ( | Query * | viewquery, |
bool | check_cols | ||
) |
Definition at line 2632 of file rewriteHandler.c.
References Query::cteList, Query::distinctClause, FromExpr::fromlist, gettext_noop, Query::groupClause, Query::groupingSets, Query::havingQual, IsA, Query::jointree, lfirst, Query::limitCount, Query::limitOffset, linitial, list_length(), NIL, rt_fetch, Query::rtable, RTE_RELATION, RangeTblEntry::rtekind, RangeTblRef::rtindex, Query::setOperations, RangeTblEntry::tablesample, Query::targetList, and view_col_is_auto_updatable().
Referenced by ATExecSetRelOptions(), DefineView(), relation_is_updatable(), and rewriteTargetView().