PostgreSQL Source Code
git master
|
Go to the source code of this file.
Data Structures | |
struct | TriggerData |
struct | TransitionCaptureState |
Typedefs | |
typedef uint32 | TriggerEvent |
typedef struct TriggerData | TriggerData |
typedef struct TransitionCaptureState | TransitionCaptureState |
Variables | |
PGDLLIMPORT int | SessionReplicationRole |
#define AFTER_TRIGGER_DEFERRABLE 0x00000020 |
Definition at line 106 of file trigger.h.
Referenced by afterTriggerCheckState(), AfterTriggerSaveEvent(), and ExecCallTriggerFunc().
#define AFTER_TRIGGER_INITDEFERRED 0x00000040 |
Definition at line 107 of file trigger.h.
Referenced by afterTriggerCheckState(), AfterTriggerSaveEvent(), and ExecCallTriggerFunc().
#define CALLED_AS_TRIGGER | ( | fcinfo | ) | ((fcinfo)->context != NULL && IsA((fcinfo)->context, TriggerData)) |
Definition at line 25 of file trigger.h.
Referenced by autoinc(), check_foreign_key(), check_primary_key(), compute_function_hashkey(), do_compile(), insert_username(), lo_manage(), moddatetime(), plperl_call_handler(), plpgsql_call_handler(), plpython_call_handler(), plsample_call_handler(), pltcl_handler(), PLy_exec_trigger(), ri_CheckTrigger(), suppress_redundant_updates_trigger(), trigger_return_old(), triggered_change_notification(), tsvector_update_trigger(), ttdummy(), and unique_key_recheck().
#define RI_TRIGGER_FK 2 /* is a trigger on the FK relation */ |
Definition at line 264 of file trigger.h.
Referenced by AfterTriggerSaveEvent(), and RI_FKey_trigger_type().
#define RI_TRIGGER_NONE 0 /* is not an RI trigger function */ |
Definition at line 265 of file trigger.h.
Referenced by AfterTriggerSaveEvent(), and RI_FKey_trigger_type().
#define RI_TRIGGER_PK 1 /* is a trigger on the PK relation */ |
Definition at line 263 of file trigger.h.
Referenced by AfterTriggerSaveEvent(), and RI_FKey_trigger_type().
#define SESSION_REPLICATION_ROLE_REPLICA 1 |
Definition at line 140 of file trigger.h.
Referenced by filter_event_trigger(), matchLocks(), and TriggerEnabled().
#define TRIGGER_DISABLED 'D' |
Definition at line 151 of file trigger.h.
Referenced by ATExecCmd(), BuildEventTriggerCache(), and TriggerEnabled().
#define TRIGGER_EVENT_BEFORE 0x00000008 |
Definition at line 99 of file trigger.h.
Referenced by ExecBRDeleteTriggers(), ExecBRInsertTriggers(), ExecBRUpdateTriggers(), ExecBSDeleteTriggers(), ExecBSInsertTriggers(), ExecBSTruncateTriggers(), and ExecBSUpdateTriggers().
#define TRIGGER_EVENT_DELETE 0x00000001 |
Definition at line 92 of file trigger.h.
Referenced by AfterTriggerSaveEvent(), ExecARDeleteTriggers(), ExecASDeleteTriggers(), ExecBRDeleteTriggers(), ExecBSDeleteTriggers(), and ExecIRDeleteTriggers().
#define TRIGGER_EVENT_INSERT 0x00000000 |
Definition at line 91 of file trigger.h.
Referenced by AfterTriggerSaveEvent(), ExecARInsertTriggers(), ExecASInsertTriggers(), ExecBRInsertTriggers(), ExecBSInsertTriggers(), ExecIRInsertTriggers(), and validateForeignKeyConstraint().
#define TRIGGER_EVENT_INSTEAD 0x00000010 |
Definition at line 101 of file trigger.h.
Referenced by ExecIRDeleteTriggers(), ExecIRInsertTriggers(), and ExecIRUpdateTriggers().
#define TRIGGER_EVENT_OPMASK 0x00000003 |
Definition at line 95 of file trigger.h.
Referenced by AfterTriggerExecute(), AfterTriggerSaveEvent(), and cancel_prior_stmt_triggers().
#define TRIGGER_EVENT_ROW 0x00000004 |
Definition at line 97 of file trigger.h.
Referenced by AfterTriggerExecute(), AfterTriggerSaveEvent(), ExecBRDeleteTriggers(), ExecBRInsertTriggers(), ExecBRUpdateTriggers(), ExecIRDeleteTriggers(), ExecIRInsertTriggers(), ExecIRUpdateTriggers(), and validateForeignKeyConstraint().
#define TRIGGER_EVENT_TRUNCATE 0x00000003 |
Definition at line 94 of file trigger.h.
Referenced by AfterTriggerSaveEvent(), ExecASTruncateTriggers(), and ExecBSTruncateTriggers().
#define TRIGGER_EVENT_UPDATE 0x00000002 |
Definition at line 93 of file trigger.h.
Referenced by AfterTriggerExecute(), AfterTriggerSaveEvent(), ExecARUpdateTriggers(), ExecASUpdateTriggers(), ExecBRUpdateTriggers(), ExecBSUpdateTriggers(), and ExecIRUpdateTriggers().
#define TRIGGER_FIRED_AFTER | ( | event | ) | (((event) & TRIGGER_EVENT_TIMINGMASK) == TRIGGER_EVENT_AFTER) |
Definition at line 130 of file trigger.h.
Referenced by cancel_prior_stmt_triggers(), ExecCallTriggerFunc(), plperl_trigger_build_args(), plpgsql_fulfill_promise(), pltcl_trigger_handler(), PLy_trigger_build_args(), ri_CheckTrigger(), triggered_change_notification(), and unique_key_recheck().
#define TRIGGER_FIRED_BEFORE | ( | event | ) | (((event) & TRIGGER_EVENT_TIMINGMASK) == TRIGGER_EVENT_BEFORE) |
Definition at line 127 of file trigger.h.
Referenced by autoinc(), insert_username(), moddatetime(), plperl_trigger_build_args(), plpgsql_exec_trigger(), plpgsql_fulfill_promise(), pltcl_trigger_handler(), PLy_trigger_build_args(), suppress_redundant_updates_trigger(), tsvector_update_trigger(), and ttdummy().
#define TRIGGER_FIRED_BY_DELETE | ( | event | ) | (((event) & TRIGGER_EVENT_OPMASK) == TRIGGER_EVENT_DELETE) |
Definition at line 112 of file trigger.h.
Referenced by AfterTriggerSaveEvent(), check_primary_key(), ExecCallTriggerFunc(), lo_manage(), plperl_trigger_build_args(), plperl_trigger_handler(), plpgsql_exec_trigger(), plpgsql_fulfill_promise(), pltcl_trigger_handler(), PLy_trigger_build_args(), ri_CheckTrigger(), and triggered_change_notification().
#define TRIGGER_FIRED_BY_INSERT | ( | event | ) | (((event) & TRIGGER_EVENT_OPMASK) == TRIGGER_EVENT_INSERT) |
Definition at line 109 of file trigger.h.
Referenced by autoinc(), check_foreign_key(), check_primary_key(), ExecCallTriggerFunc(), insert_username(), moddatetime(), plperl_trigger_build_args(), plperl_trigger_handler(), plpgsql_exec_trigger(), plpgsql_fulfill_promise(), pltcl_trigger_handler(), PLy_exec_trigger(), PLy_trigger_build_args(), ri_CheckTrigger(), triggered_change_notification(), tsvector_update_trigger(), ttdummy(), and unique_key_recheck().
#define TRIGGER_FIRED_BY_TRUNCATE | ( | event | ) | (((event) & TRIGGER_EVENT_OPMASK) == TRIGGER_EVENT_TRUNCATE) |
Definition at line 118 of file trigger.h.
Referenced by plperl_trigger_build_args(), plperl_trigger_handler(), plpgsql_fulfill_promise(), pltcl_trigger_handler(), and PLy_trigger_build_args().
#define TRIGGER_FIRED_BY_UPDATE | ( | event | ) | (((event) & TRIGGER_EVENT_OPMASK) == TRIGGER_EVENT_UPDATE) |
Definition at line 115 of file trigger.h.
Referenced by AfterTriggerSaveEvent(), autoinc(), check_foreign_key(), ExecCallTriggerFunc(), insert_username(), lo_manage(), moddatetime(), plperl_trigger_build_args(), plperl_trigger_handler(), plpgsql_exec_trigger(), plpgsql_fulfill_promise(), pltcl_trigger_handler(), PLy_exec_trigger(), PLy_trigger_build_args(), ri_CheckTrigger(), RI_FKey_check(), suppress_redundant_updates_trigger(), triggered_change_notification(), TriggerEnabled(), tsvector_update_trigger(), ttdummy(), and unique_key_recheck().
#define TRIGGER_FIRED_FOR_ROW | ( | event | ) | ((event) & TRIGGER_EVENT_ROW) |
Definition at line 121 of file trigger.h.
Referenced by autoinc(), check_foreign_key(), check_primary_key(), insert_username(), lo_manage(), moddatetime(), plperl_trigger_build_args(), plpgsql_exec_trigger(), plpgsql_fulfill_promise(), pltcl_trigger_handler(), PLy_trigger_build_args(), ri_CheckTrigger(), suppress_redundant_updates_trigger(), triggered_change_notification(), tsvector_update_trigger(), ttdummy(), and unique_key_recheck().
#define TRIGGER_FIRED_FOR_STATEMENT | ( | event | ) | (!TRIGGER_FIRED_FOR_ROW(event)) |
Definition at line 124 of file trigger.h.
Referenced by cancel_prior_stmt_triggers(), plperl_trigger_build_args(), plpgsql_fulfill_promise(), pltcl_trigger_handler(), and PLy_trigger_build_args().
#define TRIGGER_FIRED_INSTEAD | ( | event | ) | (((event) & TRIGGER_EVENT_TIMINGMASK) == TRIGGER_EVENT_INSTEAD) |
Definition at line 133 of file trigger.h.
Referenced by plperl_trigger_build_args(), plpgsql_fulfill_promise(), pltcl_trigger_handler(), and PLy_trigger_build_args().
#define TRIGGER_FIRES_ALWAYS 'A' |
Definition at line 149 of file trigger.h.
Referenced by ATExecCmd().
#define TRIGGER_FIRES_ON_ORIGIN 'O' |
Definition at line 148 of file trigger.h.
Referenced by ATDetachCheckNoForeignKeyRefs(), ATExecCmd(), CreateTrigger(), filter_event_trigger(), insert_event_trigger_tuple(), TriggerEnabled(), and validateForeignKeyConstraint().
#define TRIGGER_FIRES_ON_REPLICA 'R' |
Definition at line 150 of file trigger.h.
Referenced by ATExecCmd(), filter_event_trigger(), and TriggerEnabled().
typedef struct TransitionCaptureState TransitionCaptureState |
typedef struct TriggerData TriggerData |
typedef uint32 TriggerEvent |
void AfterTriggerBeginQuery | ( | void | ) |
Definition at line 4500 of file trigger.c.
References AfterTriggersData::query_depth.
Referenced by CopyFrom(), create_estate_for_relation(), ExecuteTruncateGuts(), and standard_ExecutorStart().
void AfterTriggerBeginSubXact | ( | void | ) |
Definition at line 4768 of file trigger.c.
References AfterTriggersData::events, AfterTriggersTransData::events, AfterTriggersData::firing_counter, AfterTriggersTransData::firing_counter, GetCurrentTransactionNestLevel(), AfterTriggersData::maxtransdepth, MemoryContextAlloc(), AfterTriggersData::query_depth, AfterTriggersTransData::query_depth, repalloc(), AfterTriggersTransData::state, TopTransactionContext, and AfterTriggersData::trans_stack.
Referenced by StartSubTransaction().
void AfterTriggerBeginXact | ( | void | ) |
Definition at line 4468 of file trigger.c.
References Assert, AfterTriggersData::event_cxt, AfterTriggersData::events, AfterTriggersData::firing_counter, AfterTriggerEventList::head, AfterTriggersData::maxquerydepth, AfterTriggersData::maxtransdepth, AfterTriggersData::query_depth, AfterTriggersData::query_stack, AfterTriggersData::state, and AfterTriggersData::trans_stack.
Referenced by StartTransaction().
void AfterTriggerEndQuery | ( | EState * | estate | ) |
Definition at line 4520 of file trigger.c.
References afterTriggerDeleteHeadEventChunk(), AfterTriggerFreeQuery(), afterTriggerInvokeEvents(), afterTriggerMarkEvents(), Assert, AfterTriggersData::events, AfterTriggersQueryData::events, AfterTriggersData::firing_counter, AfterTriggerEventList::head, AfterTriggersData::maxquerydepth, AfterTriggersData::query_depth, AfterTriggersData::query_stack, and AfterTriggerEventList::tail.
Referenced by apply_handle_delete(), apply_handle_insert(), apply_handle_update(), CopyFrom(), ExecuteTruncateGuts(), and standard_ExecutorFinish().
void AfterTriggerEndSubXact | ( | bool | isCommit | ) |
Definition at line 4816 of file trigger.c.
References AFTER_TRIGGER_DONE, AFTER_TRIGGER_IN_PROGRESS, AfterTriggerFreeQuery(), afterTriggerRestoreEventList(), Assert, AfterTriggerEventData::ate_flags, AfterTriggerSharedData::ats_firing_id, AfterTriggersData::events, AfterTriggersTransData::events, AfterTriggersTransData::firing_counter, for_each_event_chunk, GetCurrentTransactionNestLevel(), GetTriggerSharedData, AfterTriggersData::maxquerydepth, AfterTriggersData::maxtransdepth, pfree(), AfterTriggersData::query_depth, AfterTriggersTransData::query_depth, AfterTriggersData::query_stack, AfterTriggersData::state, AfterTriggersTransData::state, and AfterTriggersData::trans_stack.
Referenced by AbortSubTransaction(), and CommitSubTransaction().
void AfterTriggerEndXact | ( | bool | isCommit | ) |
Definition at line 4720 of file trigger.c.
References AfterTriggersData::event_cxt, AfterTriggersData::events, AfterTriggerEventList::head, AfterTriggersData::maxquerydepth, AfterTriggersData::maxtransdepth, MemoryContextDelete(), AfterTriggersData::query_depth, AfterTriggersData::query_stack, AfterTriggersData::state, AfterTriggerEventList::tail, AfterTriggerEventList::tailfree, and AfterTriggersData::trans_stack.
Referenced by AbortTransaction(), CommitTransaction(), and PrepareTransaction().
void AfterTriggerFireDeferred | ( | void | ) |
Definition at line 4664 of file trigger.c.
References afterTriggerInvokeEvents(), afterTriggerMarkEvents(), Assert, AfterTriggersData::events, AfterTriggersData::firing_counter, GetTransactionSnapshot(), AfterTriggerEventList::head, PopActiveSnapshot(), PushActiveSnapshot(), and AfterTriggersData::query_depth.
Referenced by CommitTransaction(), and PrepareTransaction().
Definition at line 5355 of file trigger.c.
References AFTER_TRIGGER_DONE, AfterTriggerEventData::ate_flags, AfterTriggerSharedData::ats_relid, AfterTriggersData::events, AfterTriggersQueryData::events, for_each_event_chunk, GetTriggerSharedData, AfterTriggersData::maxquerydepth, AfterTriggersData::query_depth, and AfterTriggersData::query_stack.
Referenced by CheckTableNotInUse().
void AfterTriggerSetState | ( | ConstraintsSetStmt * | stmt | ) |
Definition at line 5040 of file trigger.c.
References AccessShareLock, afterTriggerInvokeEvents(), afterTriggerMarkEvents(), SetConstraintStateData::all_isdeferred, SetConstraintStateData::all_isset, BTEqualStrategyNumber, RangeVar::catalogname, ConstraintNameNspIndexId, ConstraintParentIndexId, ConstraintsSetStmt::constraints, CStringGetDatum, ConstraintsSetStmt::deferred, ereport, errcode(), errmsg(), ERROR, AfterTriggersData::events, fetch_search_path(), AfterTriggersData::firing_counter, get_database_name(), GetCurrentTransactionNestLevel(), GETSTRUCT, GetTransactionSnapshot(), HeapTupleIsValid, i, IsSubTransaction(), sort-test::key, lappend_oid(), lfirst, lfirst_oid, list_free(), list_make1_oid, LookupExplicitNamespace(), MyDatabaseId, NIL, SetConstraintStateData::numstates, ObjectIdGetDatum, PopActiveSnapshot(), PushActiveSnapshot(), RangeVar::relname, ScanKeyInit(), RangeVar::schemaname, SetConstraintTriggerData::sct_tgisdeferred, SetConstraintTriggerData::sct_tgoid, SetConstraintStateAddItem(), SetConstraintStateCopy(), SetConstraintStateCreate(), AfterTriggersData::state, AfterTriggersTransData::state, systable_beginscan(), systable_endscan(), systable_getnext(), table_close(), table_open(), AfterTriggersData::trans_stack, TriggerConstraintIndexId, and SetConstraintStateData::trigstates.
Referenced by standard_ProcessUtility().
TriggerDesc* CopyTriggerDesc | ( | TriggerDesc * | trigdesc | ) |
Definition at line 1873 of file trigger.c.
References i, TriggerDesc::numtriggers, palloc(), pstrdup(), Trigger::tgargs, Trigger::tgattr, Trigger::tgname, Trigger::tgnargs, Trigger::tgnattr, Trigger::tgnewtable, Trigger::tgoldtable, Trigger::tgqual, and TriggerDesc::triggers.
Referenced by InitResultRelInfo(), and RelationBuildTriggers().
ObjectAddress CreateTrigger | ( | CreateTrigStmt * | stmt, |
const char * | queryString, | ||
Oid | relOid, | ||
Oid | refRelOid, | ||
Oid | constraintOid, | ||
Oid | indexOid, | ||
Oid | funcoid, | ||
Oid | parentTriggerOid, | ||
Node * | whenClause, | ||
bool | isInternal, | ||
bool | in_partition | ||
) |
Definition at line 158 of file trigger.c.
References AccessShareLock, ACL_EXECUTE, ACL_TRIGGER, aclcheck_error(), ACLCHECK_OK, addNSItemToQuery(), addRangeTableEntryForRelation(), ALLOCSET_SMALL_SIZES, AllocSetContextCreate, allowSystemTableMods, generate_unaccent_rules::args, CreateTrigStmt::args, Assert, assign_expr_collations(), attnameAttNum(), attnum, BoolGetDatum, BTEqualStrategyNumber, buildint2vector(), byteain(), CacheInvalidateRelcacheByTuple(), CatalogTupleInsert(), CatalogTupleUpdate(), CharGetDatum, ObjectAddress::classId, CreateTrigStmt::columns, CommandCounterIncrement(), CreateTrigStmt::constrrel, copyObject, CreateConstraintEntry(), CreateTrigger(), CStringGetDatum, CStringGetTextDatum, CurrentMemoryContext, DatumGetPointer, CreateTrigStmt::deferrable, deleteDependencyRecordsFor(), DEPENDENCY_AUTO, DEPENDENCY_INTERNAL, DEPENDENCY_NORMAL, DEPENDENCY_PARTITION_PRI, DEPENDENCY_PARTITION_SEC, DirectFunctionCall1, elog, ereport, errcode(), ERRCODE_DUPLICATE_OBJECT, errdetail(), errhint(), errmsg(), ERROR, CreateTrigStmt::events, EXPR_KIND_TRIGGER_WHEN, find_all_inheritors(), find_inheritance_children(), forboth, free_parsestate(), CreateTrigStmt::funcname, get_func_rettype(), get_rel_name(), get_rel_relkind(), get_relkind_objtype(), GetNewOidWithIndex(), GETSTRUCT, GetUserId(), has_superclass(), heap_copytuple(), heap_form_tuple(), heap_freetuple(), HeapTupleIsValid, i, IndexGetRelation(), CreateTrigStmt::initdeferred, Int16GetDatum, InvalidAttrNumber, InvalidOid, InvokeObjectPostCreateHookArg, CreateTrigStmt::isconstraint, TriggerTransition::isNew, IsSystemRelation(), TriggerTransition::isTable, lappend_oid(), lfirst, lfirst_node, lfirst_oid, list_free(), list_length(), Var::location, LockRelationOid(), LookupFuncName(), make_parsestate(), makeAlias(), map_partition_varattnos(), MemoryContextDelete(), MemoryContextReset(), MemoryContextSwitchTo(), name, TriggerTransition::name, NAMEDATALEN, namein(), NameListToString(), NameStr, NIL, nodeToString(), NoLock, PartitionDescData::nparts, OBJECT_FUNCTION, ObjectAddressSet, ObjectAddress::objectId, ObjectIdGetDatum, ObjectAddress::objectSubId, OidIsValid, PartitionDescData::oids, ParseState::p_rtable, ParseState::p_sourcetext, palloc(), parser_errposition(), pfree(), pg_class_aclcheck(), pg_proc_aclcheck(), PointerGetDatum, PRS2_NEW_VARNO, PRS2_OLD_VARNO, pull_var_clause(), RangeVarGetRelid, RelationData::rd_att, RelationData::rd_id, RelationData::rd_rel, recordDependencyOn(), recordDependencyOnExpr(), CreateTrigStmt::relation, RelationGetDescr, RelationGetNamespace, RelationGetPartitionDesc(), RelationGetRelationName, RelationGetRelid, RELOID, CreateTrigStmt::replace, CreateTrigStmt::row, RowExclusiveLock, ScanKeyInit(), SearchSysCacheCopy1, ShareRowExclusiveLock, snprintf, strVal, systable_beginscan(), systable_endscan(), systable_getnext(), HeapTupleData::t_self, table_close(), table_open(), table_openrv(), CreateTrigStmt::timing, transformWhereClause(), CreateTrigStmt::transitionRels, TRIGGER_FIRES_ON_ORIGIN, TriggerOidIndexId, TriggerRelidNameIndexId, CreateTrigStmt::trigname, TupleDescAttr, values, Var::varattno, Var::varno, and CreateTrigStmt::whenClause.
Referenced by CloneRowTriggersToPartition(), CreateFKCheckTrigger(), createForeignKeyActionTriggers(), CreateTrigger(), index_constraint_create(), and ProcessUtilitySlow().
void EnableDisableTrigger | ( | Relation | rel, |
const char * | tgname, | ||
char | fires_when, | ||
bool | skip_system, | ||
LOCKMODE | lockmode | ||
) |
Definition at line 1542 of file trigger.c.
References BTEqualStrategyNumber, CacheInvalidateRelcache(), CatalogTupleUpdate(), CStringGetDatum, ereport, errcode(), errmsg(), ERROR, GETSTRUCT, heap_copytuple(), heap_freetuple(), HeapTupleIsValid, InvokeObjectPostAlterHook, NameStr, ObjectIdGetDatum, RelationGetRelationName, RelationGetRelid, RowExclusiveLock, ScanKeyInit(), superuser(), systable_beginscan(), systable_endscan(), systable_getnext(), HeapTupleData::t_self, table_close(), table_open(), and TriggerRelidNameIndexId.
Referenced by ATExecEnableDisableTrigger().
void ExecARDeleteTriggers | ( | EState * | estate, |
ResultRelInfo * | relinfo, | ||
ItemPointer | tupleid, | ||
HeapTuple | fdw_trigtuple, | ||
TransitionCaptureState * | transition_capture | ||
) |
Definition at line 2550 of file trigger.c.
References AfterTriggerSaveEvent(), Assert, ExecForceStoreHeapTuple(), ExecGetTriggerOldSlot(), GetTupleForTrigger(), HeapTupleIsValid, ItemPointerIsValid, LockTupleExclusive, NIL, ResultRelInfo::ri_TrigDesc, TransitionCaptureState::tcs_delete_old_table, TriggerDesc::trig_delete_after_row, and TRIGGER_EVENT_DELETE.
Referenced by ExecDelete(), and ExecSimpleRelationDelete().
void ExecARInsertTriggers | ( | EState * | estate, |
ResultRelInfo * | relinfo, | ||
TupleTableSlot * | slot, | ||
List * | recheckIndexes, | ||
TransitionCaptureState * | transition_capture | ||
) |
Definition at line 2320 of file trigger.c.
References AfterTriggerSaveEvent(), ResultRelInfo::ri_TrigDesc, TransitionCaptureState::tcs_insert_new_table, TriggerDesc::trig_insert_after_row, and TRIGGER_EVENT_INSERT.
Referenced by CopyFrom(), CopyMultiInsertBufferFlush(), ExecInsert(), and ExecSimpleRelationInsert().
void ExecARUpdateTriggers | ( | EState * | estate, |
ResultRelInfo * | relinfo, | ||
ItemPointer | tupleid, | ||
HeapTuple | fdw_trigtuple, | ||
TupleTableSlot * | slot, | ||
List * | recheckIndexes, | ||
TransitionCaptureState * | transition_capture | ||
) |
Definition at line 2835 of file trigger.c.
References AfterTriggerSaveEvent(), ExecClearTuple(), ExecForceStoreHeapTuple(), ExecGetTriggerOldSlot(), GetAllUpdatedColumns, GetTupleForTrigger(), ItemPointerIsValid, LockTupleExclusive, ResultRelInfo::ri_TrigDesc, TransitionCaptureState::tcs_update_new_table, TransitionCaptureState::tcs_update_old_table, TriggerDesc::trig_update_after_row, and TRIGGER_EVENT_UPDATE.
Referenced by ExecDelete(), ExecInsert(), ExecSimpleRelationUpdate(), and ExecUpdate().
void ExecASDeleteTriggers | ( | EState * | estate, |
ResultRelInfo * | relinfo, | ||
TransitionCaptureState * | transition_capture | ||
) |
Definition at line 2447 of file trigger.c.
References AfterTriggerSaveEvent(), NIL, ResultRelInfo::ri_TrigDesc, TriggerDesc::trig_delete_after_statement, and TRIGGER_EVENT_DELETE.
Referenced by fireASTriggers().
void ExecASInsertTriggers | ( | EState * | estate, |
ResultRelInfo * | relinfo, | ||
TransitionCaptureState * | transition_capture | ||
) |
Definition at line 2233 of file trigger.c.
References AfterTriggerSaveEvent(), NIL, ResultRelInfo::ri_TrigDesc, TriggerDesc::trig_insert_after_statement, and TRIGGER_EVENT_INSERT.
Referenced by CopyFrom(), and fireASTriggers().
void ExecASTruncateTriggers | ( | EState * | estate, |
ResultRelInfo * | relinfo | ||
) |
Definition at line 2990 of file trigger.c.
References AfterTriggerSaveEvent(), NIL, ResultRelInfo::ri_TrigDesc, TriggerDesc::trig_truncate_after_statement, and TRIGGER_EVENT_TRUNCATE.
Referenced by ExecuteTruncateGuts().
void ExecASUpdateTriggers | ( | EState * | estate, |
ResultRelInfo * | relinfo, | ||
TransitionCaptureState * | transition_capture | ||
) |
Definition at line 2682 of file trigger.c.
References AfterTriggerSaveEvent(), GetAllUpdatedColumns, NIL, ResultRelInfo::ri_TrigDesc, TriggerDesc::trig_update_after_statement, and TRIGGER_EVENT_UPDATE.
Referenced by fireASTriggers().
bool ExecBRDeleteTriggers | ( | EState * | estate, |
EPQState * | epqstate, | ||
ResultRelInfo * | relinfo, | ||
ItemPointer | tupleid, | ||
HeapTuple | fdw_trigtuple, | ||
TupleTableSlot ** | epqslot | ||
) |
Definition at line 2465 of file trigger.c.
References Assert, ExecCallTriggerFunc(), ExecFetchSlotHeapTuple(), ExecForceStoreHeapTuple(), ExecGetTriggerOldSlot(), GetPerTupleMemoryContext, GetTupleForTrigger(), heap_freetuple(), HeapTupleIsValid, i, ItemPointerIsValid, LockTupleExclusive, TriggerDesc::numtriggers, ResultRelInfo::ri_RelationDesc, ResultRelInfo::ri_TrigDesc, ResultRelInfo::ri_TrigFunctions, ResultRelInfo::ri_TrigInstrument, T_TriggerData, TriggerData::tg_event, TriggerData::tg_relation, TriggerData::tg_trigger, TriggerData::tg_trigslot, TriggerData::tg_trigtuple, Trigger::tgtype, TRIGGER_EVENT_BEFORE, TRIGGER_EVENT_DELETE, TRIGGER_EVENT_ROW, TriggerEnabled(), TriggerDesc::triggers, and TriggerData::type.
Referenced by ExecDelete(), and ExecSimpleRelationDelete().
bool ExecBRInsertTriggers | ( | EState * | estate, |
ResultRelInfo * | relinfo, | ||
TupleTableSlot * | slot | ||
) |
Definition at line 2244 of file trigger.c.
References ereport, errcode(), errdetail(), errmsg(), ERROR, ExecCallTriggerFunc(), ExecFetchSlotHeapTuple(), ExecForceStoreHeapTuple(), ExecPartitionCheck(), get_namespace_name(), GetPerTupleMemoryContext, heap_freetuple(), i, TriggerDesc::numtriggers, RelationGetNamespace, RelationGetRelationName, ResultRelInfo::ri_RelationDesc, ResultRelInfo::ri_TrigDesc, ResultRelInfo::ri_TrigFunctions, ResultRelInfo::ri_TrigInstrument, T_TriggerData, TriggerData::tg_event, TriggerData::tg_relation, TriggerData::tg_trigger, TriggerData::tg_trigslot, TriggerData::tg_trigtuple, Trigger::tgisclone, Trigger::tgname, Trigger::tgtype, TRIGGER_EVENT_BEFORE, TRIGGER_EVENT_INSERT, TRIGGER_EVENT_ROW, TriggerEnabled(), TriggerDesc::triggers, and TriggerData::type.
Referenced by CopyFrom(), ExecInsert(), and ExecSimpleRelationInsert().
bool ExecBRUpdateTriggers | ( | EState * | estate, |
EPQState * | epqstate, | ||
ResultRelInfo * | relinfo, | ||
ItemPointer | tupleid, | ||
HeapTuple | fdw_trigtuple, | ||
TupleTableSlot * | slot | ||
) |
Definition at line 2695 of file trigger.c.
References Assert, ereport, errcode(), errdetail(), errmsg(), ERROR, ExecCallTriggerFunc(), ExecCopySlot(), ExecFetchSlotHeapTuple(), ExecFilterJunk(), ExecForceStoreHeapTuple(), ExecGetTriggerOldSlot(), ExecMaterializeSlot(), ExecPartitionCheck(), ExecUpdateLockMode(), get_namespace_name(), GetAllUpdatedColumns, GetPerTupleMemoryContext, GetTupleForTrigger(), heap_freetuple(), HeapTupleIsValid, i, ItemPointerIsValid, TriggerDesc::numtriggers, RelationGetNamespace, RelationGetRelationName, ResultRelInfo::ri_junkFilter, ResultRelInfo::ri_RelationDesc, ResultRelInfo::ri_TrigDesc, ResultRelInfo::ri_TrigFunctions, ResultRelInfo::ri_TrigInstrument, T_TriggerData, TriggerData::tg_event, TriggerData::tg_newslot, TriggerData::tg_newtuple, TriggerData::tg_relation, TriggerData::tg_trigger, TriggerData::tg_trigslot, TriggerData::tg_trigtuple, TriggerData::tg_updatedcols, Trigger::tgisclone, Trigger::tgname, Trigger::tgtype, TRIGGER_EVENT_BEFORE, TRIGGER_EVENT_ROW, TRIGGER_EVENT_UPDATE, TriggerEnabled(), TriggerDesc::triggers, and TriggerData::type.
Referenced by ExecSimpleRelationUpdate(), and ExecUpdate().
void ExecBSDeleteTriggers | ( | EState * | estate, |
ResultRelInfo * | relinfo | ||
) |
Definition at line 2396 of file trigger.c.
References before_stmt_triggers_fired(), CMD_DELETE, ereport, errcode(), errmsg(), ERROR, ExecCallTriggerFunc(), GetPerTupleMemoryContext, i, TriggerDesc::numtriggers, RelationGetRelid, ResultRelInfo::ri_RelationDesc, ResultRelInfo::ri_TrigDesc, ResultRelInfo::ri_TrigFunctions, ResultRelInfo::ri_TrigInstrument, T_TriggerData, TriggerData::tg_event, TriggerData::tg_relation, TriggerData::tg_trigger, Trigger::tgtype, TriggerDesc::trig_delete_before_statement, TRIGGER_EVENT_BEFORE, TRIGGER_EVENT_DELETE, TriggerEnabled(), TriggerDesc::triggers, and TriggerData::type.
Referenced by fireBSTriggers().
void ExecBSInsertTriggers | ( | EState * | estate, |
ResultRelInfo * | relinfo | ||
) |
Definition at line 2182 of file trigger.c.
References before_stmt_triggers_fired(), CMD_INSERT, ereport, errcode(), errmsg(), ERROR, ExecCallTriggerFunc(), GetPerTupleMemoryContext, i, TriggerDesc::numtriggers, RelationGetRelid, ResultRelInfo::ri_RelationDesc, ResultRelInfo::ri_TrigDesc, ResultRelInfo::ri_TrigFunctions, ResultRelInfo::ri_TrigInstrument, T_TriggerData, TriggerData::tg_event, TriggerData::tg_relation, TriggerData::tg_trigger, Trigger::tgtype, TriggerDesc::trig_insert_before_statement, TRIGGER_EVENT_BEFORE, TRIGGER_EVENT_INSERT, TriggerEnabled(), TriggerDesc::triggers, and TriggerData::type.
Referenced by CopyFrom(), and fireBSTriggers().
void ExecBSTruncateTriggers | ( | EState * | estate, |
ResultRelInfo * | relinfo | ||
) |
Definition at line 2943 of file trigger.c.
References ereport, errcode(), errmsg(), ERROR, ExecCallTriggerFunc(), GetPerTupleMemoryContext, i, TriggerDesc::numtriggers, ResultRelInfo::ri_RelationDesc, ResultRelInfo::ri_TrigDesc, ResultRelInfo::ri_TrigFunctions, ResultRelInfo::ri_TrigInstrument, T_TriggerData, TriggerData::tg_event, TriggerData::tg_relation, TriggerData::tg_trigger, Trigger::tgtype, TriggerDesc::trig_truncate_before_statement, TRIGGER_EVENT_BEFORE, TRIGGER_EVENT_TRUNCATE, TriggerEnabled(), TriggerDesc::triggers, and TriggerData::type.
Referenced by ExecuteTruncateGuts().
void ExecBSUpdateTriggers | ( | EState * | estate, |
ResultRelInfo * | relinfo | ||
) |
Definition at line 2627 of file trigger.c.
References before_stmt_triggers_fired(), CMD_UPDATE, ereport, errcode(), errmsg(), ERROR, ExecCallTriggerFunc(), GetAllUpdatedColumns, GetPerTupleMemoryContext, i, TriggerDesc::numtriggers, RelationGetRelid, ResultRelInfo::ri_RelationDesc, ResultRelInfo::ri_TrigDesc, ResultRelInfo::ri_TrigFunctions, ResultRelInfo::ri_TrigInstrument, T_TriggerData, TriggerData::tg_event, TriggerData::tg_relation, TriggerData::tg_trigger, TriggerData::tg_updatedcols, Trigger::tgtype, TriggerDesc::trig_update_before_statement, TRIGGER_EVENT_BEFORE, TRIGGER_EVENT_UPDATE, TriggerEnabled(), TriggerDesc::triggers, and TriggerData::type.
Referenced by fireBSTriggers().
bool ExecIRDeleteTriggers | ( | EState * | estate, |
ResultRelInfo * | relinfo, | ||
HeapTuple | trigtuple | ||
) |
Definition at line 2580 of file trigger.c.
References ExecCallTriggerFunc(), ExecForceStoreHeapTuple(), ExecGetTriggerOldSlot(), GetPerTupleMemoryContext, heap_freetuple(), i, TriggerDesc::numtriggers, ResultRelInfo::ri_RelationDesc, ResultRelInfo::ri_TrigDesc, ResultRelInfo::ri_TrigFunctions, ResultRelInfo::ri_TrigInstrument, T_TriggerData, TriggerData::tg_event, TriggerData::tg_relation, TriggerData::tg_trigger, TriggerData::tg_trigslot, TriggerData::tg_trigtuple, Trigger::tgtype, TRIGGER_EVENT_DELETE, TRIGGER_EVENT_INSTEAD, TRIGGER_EVENT_ROW, TriggerEnabled(), TriggerDesc::triggers, and TriggerData::type.
Referenced by ExecDelete().
bool ExecIRInsertTriggers | ( | EState * | estate, |
ResultRelInfo * | relinfo, | ||
TupleTableSlot * | slot | ||
) |
Definition at line 2335 of file trigger.c.
References ExecCallTriggerFunc(), ExecFetchSlotHeapTuple(), ExecForceStoreHeapTuple(), GetPerTupleMemoryContext, heap_freetuple(), i, TriggerDesc::numtriggers, ResultRelInfo::ri_RelationDesc, ResultRelInfo::ri_TrigDesc, ResultRelInfo::ri_TrigFunctions, ResultRelInfo::ri_TrigInstrument, T_TriggerData, TriggerData::tg_event, TriggerData::tg_relation, TriggerData::tg_trigger, TriggerData::tg_trigslot, TriggerData::tg_trigtuple, Trigger::tgtype, TRIGGER_EVENT_INSERT, TRIGGER_EVENT_INSTEAD, TRIGGER_EVENT_ROW, TriggerEnabled(), TriggerDesc::triggers, and TriggerData::type.
Referenced by CopyFrom(), and ExecInsert().
bool ExecIRUpdateTriggers | ( | EState * | estate, |
ResultRelInfo * | relinfo, | ||
HeapTuple | trigtuple, | ||
TupleTableSlot * | slot | ||
) |
Definition at line 2877 of file trigger.c.
References ExecCallTriggerFunc(), ExecFetchSlotHeapTuple(), ExecForceStoreHeapTuple(), ExecGetTriggerOldSlot(), GetPerTupleMemoryContext, heap_freetuple(), i, TriggerDesc::numtriggers, ResultRelInfo::ri_RelationDesc, ResultRelInfo::ri_TrigDesc, ResultRelInfo::ri_TrigFunctions, ResultRelInfo::ri_TrigInstrument, T_TriggerData, TriggerData::tg_event, TriggerData::tg_newslot, TriggerData::tg_newtuple, TriggerData::tg_relation, TriggerData::tg_trigger, TriggerData::tg_trigslot, TriggerData::tg_trigtuple, Trigger::tgtype, TRIGGER_EVENT_INSTEAD, TRIGGER_EVENT_ROW, TRIGGER_EVENT_UPDATE, TriggerEnabled(), TriggerDesc::triggers, and TriggerData::type.
Referenced by ExecUpdate().
const char* FindTriggerIncompatibleWithInheritance | ( | TriggerDesc * | trigdesc | ) |
Definition at line 2060 of file trigger.c.
References i, TriggerDesc::numtriggers, Trigger::tgname, Trigger::tgnewtable, Trigger::tgoldtable, and TriggerDesc::triggers.
Referenced by ATExecAddInherit(), and ATExecAttachPartition().
void FreeTriggerDesc | ( | TriggerDesc * | trigdesc | ) |
Definition at line 1928 of file trigger.c.
References i, TriggerDesc::numtriggers, pfree(), Trigger::tgargs, Trigger::tgattr, Trigger::tgconstraint, Trigger::tgconstrindid, Trigger::tgconstrrelid, Trigger::tgdeferrable, Trigger::tgenabled, Trigger::tgfoid, Trigger::tginitdeferred, Trigger::tgisclone, Trigger::tgisinternal, Trigger::tgname, Trigger::tgnargs, Trigger::tgnattr, Trigger::tgnewtable, Trigger::tgoid, Trigger::tgoldtable, Trigger::tgqual, Trigger::tgtype, and TriggerDesc::triggers.
Referenced by RelationBuildTriggers(), and RelationDestroyRelation().
Definition at line 1312 of file trigger.c.
References AccessShareLock, BTEqualStrategyNumber, CStringGetDatum, ereport, errcode(), errmsg(), ERROR, get_rel_name(), GETSTRUCT, HeapTupleIsValid, InvalidOid, ObjectIdGetDatum, ScanKeyInit(), systable_beginscan(), systable_endscan(), systable_getnext(), table_close(), table_open(), and TriggerRelidNameIndexId.
Referenced by get_object_address_relobject().
TransitionCaptureState* MakeTransitionCaptureState | ( | TriggerDesc * | trigdesc, |
Oid | relid, | ||
CmdType | cmdType | ||
) |
Definition at line 4378 of file trigger.c.
References AfterTriggerEnlargeQueryState(), CMD_DELETE, CMD_INSERT, CMD_UPDATE, CurrentResourceOwner, CurTransactionContext, CurTransactionResourceOwner, elog, ERROR, GetAfterTriggersTableData(), AfterTriggersData::maxquerydepth, MemoryContextSwitchTo(), AfterTriggersTableData::new_tuplestore, AfterTriggersTableData::old_tuplestore, palloc0(), AfterTriggersData::query_depth, TransitionCaptureState::tcs_delete_old_table, TransitionCaptureState::tcs_insert_new_table, TransitionCaptureState::tcs_private, TransitionCaptureState::tcs_update_new_table, TransitionCaptureState::tcs_update_old_table, TriggerDesc::trig_delete_old_table, TriggerDesc::trig_insert_new_table, TriggerDesc::trig_update_new_table, TriggerDesc::trig_update_old_table, tuplestore_begin_heap(), and work_mem.
Referenced by CopyFrom(), and ExecSetupTransitionCaptureState().
void RelationBuildTriggers | ( | Relation | relation | ) |
Definition at line 1644 of file trigger.c.
References AccessShareLock, BTEqualStrategyNumber, CacheMemoryContext, CopyTriggerDesc(), DatumGetByteaPP, DatumGetCString, DirectFunctionCall1, elog, ERROR, fastgetattr, FreeTriggerDesc(), GETSTRUCT, HeapTupleIsValid, i, MemoryContextSwitchTo(), NameGetDatum, nameout(), TriggerDesc::numtriggers, ObjectIdGetDatum, OidIsValid, palloc(), palloc0(), pfree(), pstrdup(), RelationData::rd_att, RelationGetRelationName, RelationGetRelid, repalloc(), ScanKeyInit(), SetTriggerFlags(), systable_beginscan(), systable_endscan(), systable_getnext(), table_close(), table_open(), TextDatumGetCString, Trigger::tgargs, Trigger::tgattr, Trigger::tgconstraint, Trigger::tgconstrindid, Trigger::tgconstrrelid, Trigger::tgdeferrable, Trigger::tgenabled, Trigger::tgfoid, Trigger::tginitdeferred, Trigger::tgisclone, Trigger::tgisinternal, Trigger::tgname, Trigger::tgnargs, Trigger::tgnattr, Trigger::tgnewtable, Trigger::tgoid, Trigger::tgoldtable, Trigger::tgqual, Trigger::tgtype, RelationData::trigdesc, TriggerRelidNameIndexId, TriggerDesc::triggers, val, and VARDATA_ANY.
Referenced by RelationBuildDesc(), and RelationCacheInitializePhase3().