CUBRID Engine
latest
|
#include <assert.h>
#include "config.h"
#include "misc_string.h"
#include "memory_alloc.h"
#include "error_manager.h"
#include "dbtype.h"
#include "trigger_manager.h"
#include "memory_hash.h"
#include "work_space.h"
#include "schema_manager.h"
#include "object_accessor.h"
#include "object_primitive.h"
#include "object_print.h"
#include "set_object.h"
#include "authenticate.h"
#include "db.h"
#include "parser.h"
#include "system_parameter.h"
#include "locator_cl.h"
#include "transaction_cl.h"
Go to the source code of this file.
Macros | |
#define | TR_EXECUTION_ENABLED (tr_Execution_enabled == true) |
#define | UNIQUE_SAVEPOINT_RENAME_TRIGGER "rENAMEtRIGGER" |
#define | UNIQUE_SAVEPOINT_DROP_TRIGGER "dROPtRIGGER" |
#define | UNIQUE_SAVEPOINT_CREATE_TRIGGER "cREATEtRIGGER" |
#define | IS_USER_EVENT(event) |
#define | IS_CLASS_EVENT(event) (!IS_USER_EVENT(event)) |
#define | COMPARE_TRIGGER_NAMES intl_identifier_casecmp |
#define | MAX_ERROR_STRING 2048 |
#define COMPARE_TRIGGER_NAMES intl_identifier_casecmp |
Definition at line 82 of file trigger_manager.c.
Referenced by trigger_table_drop(), and trigger_table_find().
#define IS_CLASS_EVENT | ( | event | ) | (!IS_USER_EVENT(event)) |
Definition at line 75 of file trigger_manager.c.
Referenced by check_authorization(), and check_target().
#define IS_USER_EVENT | ( | event | ) |
Definition at line 68 of file trigger_manager.c.
#define MAX_ERROR_STRING 2048 |
Definition at line 86 of file trigger_manager.c.
Referenced by signal_evaluation_error().
#define TR_EXECUTION_ENABLED (tr_Execution_enabled == true) |
Definition at line 53 of file trigger_manager.c.
Referenced by tr_after_object(), tr_before_object(), tr_check_abort_triggers(), tr_check_commit_triggers(), tr_check_rollback_triggers(), tr_dump(), tr_execute_deferred_activities(), tr_has_user_trigger(), and tr_prepare_class().
#define UNIQUE_SAVEPOINT_CREATE_TRIGGER "cREATEtRIGGER" |
Definition at line 56 of file trigger_manager.c.
Referenced by tr_create_trigger().
#define UNIQUE_SAVEPOINT_DROP_TRIGGER "dROPtRIGGER" |
Definition at line 55 of file trigger_manager.c.
Referenced by tr_drop_trigger_internal().
#define UNIQUE_SAVEPOINT_RENAME_TRIGGER "rENAMEtRIGGER" |
Definition at line 54 of file trigger_manager.c.
Referenced by tr_rename_trigger().
|
static |
Definition at line 778 of file trigger_manager.c.
References add_deferred_activity_context(), assert, er_errid(), tr_deferred_context::head, tr_triglist::next, NO_ERROR, NULL, tr_triglist::prev, tr_deferred_context::tail, tr_triglist::target, and tr_Deferred_activities_tail.
Referenced by tr_after_object().
|
static |
Definition at line 735 of file trigger_manager.c.
References ARG_FILE_LINE, ER_ERROR_SEVERITY, ER_OUT_OF_VIRTUAL_MEMORY, er_set(), tr_deferred_context::head, tr_deferred_context::next, NULL, tr_deferred_context::prev, tr_deferred_context::savepoint_id, tr_deferred_context::tail, and tr_Deferred_activities_tail.
Referenced by add_deferred_activities(), and remove_deferred_context().
|
static |
Definition at line 3407 of file trigger_manager.c.
References ARG_FILE_LINE, AU_ALTER, au_check_authorization(), au_is_dba_group_member(), AU_SELECT, Au_user, tr_trigger::class_mop, ER_ERROR_SEVERITY, er_set(), ER_TR_INTERNAL_ERROR, error(), tr_trigger::event, IS_CLASS_EVENT, tr_trigger::name, NO_ERROR, NULL, tr_trigger::owner, tr_trigger::status, TR_STATUS_INVALID, and ws_is_same_object().
Referenced by find_all_triggers(), tr_check_authorization(), tr_drop_trigger(), tr_find_trigger(), tr_rename_trigger(), tr_set_comment(), tr_set_priority(), and tr_set_status().
|
static |
Definition at line 3740 of file trigger_manager.c.
References tr_trigger::action, ARG_FILE_LINE, ASSERT_ERROR_AND_SET, tr_trigger::attribute, check_target(), tr_trigger::class_mop, tr_trigger::condition, er_errid(), ER_ERROR_SEVERITY, er_set(), ER_TR_INVALID_ACTION_TIME, ER_TR_INVALID_CONDITION_TYPE, ER_TR_INVALID_EVENT, ER_TR_INVALID_PRIORITY, ER_TR_REJECT_AFTER_EVENT, ER_TR_REJECT_NOT_POSSIBLE, ER_TR_TRIGGER_EXISTS, error(), tr_trigger::event, tr_trigger::name, NO_ERROR, NULL, tr_trigger::priority, tr_activity::time, time_as_string(), TR_ACT_EXPRESSION, TR_ACT_INVALIDATE, TR_ACT_NULL, TR_ACT_REJECT, TR_EVENT_ABORT, TR_EVENT_ALL, TR_EVENT_NULL, TR_EVENT_TIMEOUT, TR_TIME_AFTER, TR_TIME_DEFERRED, trigger_table_find(), and tr_activity::type.
Referenced by tr_create_trigger().
|
static |
Definition at line 3679 of file trigger_manager.c.
References ARG_FILE_LINE, AU_ALTER, au_check_authorization(), db_get_attribute(), ER_ERROR_SEVERITY, er_set(), ER_TR_BAD_TARGET_ATTR, ER_TR_BAD_TARGET_CLASS, ER_TR_MISSING_TARGET_CLASS, IS_CLASS_EVENT, NO_ERROR, NULL, sm_get_ch_name(), TR_EVENT_ALL, TR_EVENT_STATEMENT_UPDATE, and TR_EVENT_UPDATE.
Referenced by check_semantics(), and tr_find_event_triggers().
|
static |
Definition at line 5198 of file trigger_manager.c.
Referenced by start_state().
|
static |
Definition at line 1594 of file trigger_manager.c.
References ARG_FILE_LINE, assert, tr_trigger::class_mop, ER_EMERGENCY_ERROR, er_errid(), ER_ERROR_SEVERITY, ER_IS_ABORTED_DUE_TO_DEADLOCK, ER_OUT_OF_VIRTUAL_MEMORY, er_set(), ER_SYNTAX_ERROR_SEVERITY, ER_TR_ACTION_COMPILE, ER_TR_CONDITION_COMPILE, ER_TR_CORRELATION_ERROR, ER_TR_INTERNAL_ERROR, err, error(), EVAL_PREFIX, EVAL_SUFFIX, tr_trigger::event, free_and_init, get_reference_names(), parser_node::info, tr_trigger::name, NO_ERROR, NULL, tr_activity::parser, parser_create_parser(), parser_free_parser(), parser_free_tree(), parser_walk_tree(), pt_compile_trigger_stmt(), pt_get_errors(), pt_get_next_error(), pt_has_error, pt_statement_info::scope, tr_activity::source, tr_activity::statement, pt_scope_info::stmt, strlen, tr_activity::time, TR_ACT_EXPRESSION, tr_check_correlation(), TR_EVENT_INSERT, TR_TIME_BEFORE, and tr_activity::type.
Referenced by eval_action(), eval_condition(), tr_create_trigger(), and validate_trigger().
|
static |
Definition at line 7279 of file trigger_manager.c.
References ASSERT_ERROR, db_make_float(), db_make_int(), dbt_abort_class(), dbt_add_attribute(), dbt_create_class(), dbt_finish_class(), er_errid(), locator_create_heap_if_needed(), NO_ERROR, NULL, TR_ATT_ACTION, TR_ATT_ACTION_TIME, TR_ATT_ACTION_TYPE, TR_ATT_ATTRIBUTE, TR_ATT_CLASS, TR_ATT_CLASS_ATTRIBUTE, TR_ATT_COMMENT, TR_ATT_CONDITION, TR_ATT_CONDITION_TIME, TR_ATT_CONDITION_TYPE, TR_ATT_EVENT, TR_ATT_NAME, TR_ATT_OWNER, TR_ATT_PRIORITY, TR_ATT_STATUS, TR_CLASS_NAME, TR_EVENT_NULL, TR_LOWEST_PRIORITY, TR_STATUS_ACTIVE, and TR_TIME_AFTER.
Referenced by tr_install().
|
static |
Definition at line 4776 of file trigger_manager.c.
References tr_trigger::action, ARG_FILE_LINE, assert, compile_trigger_activity(), er_clear(), ER_ERROR_SEVERITY, ER_QPROC_INVALID_XASLNODE, er_set(), ER_TR_ACTION_EVAL, ER_TR_EXCEEDS_MAX_REC_LEVEL, ER_TR_INTERNAL_ERROR, error(), tr_trigger::event, tr_activity::exec_cnt, tr_trigger::name, NO_ERROR, NULL, tr_trigger::object, vid_oid::oid, db_object::oid_info, tr_activity::parser, parser_free_parser(), prm_get_integer_value(), PRM_ID_RESET_TR_PARSER, pt_exec_trigger_stmt(), pt_reset_error(), signal_evaluation_error(), tr_activity::source, tr_activity::statement, TR_ACT_EXPRESSION, TR_ACT_INVALIDATE, TR_ACT_PRINT, TR_ACT_REJECT, tr_check_recursivity(), tr_Current_depth, TR_DECISION_CONTINUE, TR_DECISION_DO_NOT_CONTINUE, TR_DECISION_HALT_WITH_ERROR, TR_EVENT_STATEMENT_DELETE, TR_EVENT_STATEMENT_INSERT, TR_EVENT_STATEMENT_UPDATE, tr_Invalid_transaction, tr_Invalid_transaction_trigger, TR_MAX_RECURSION_LEVEL, tr_Trace, and tr_activity::type.
Referenced by execute_activity().
|
static |
Definition at line 4633 of file trigger_manager.c.
References ARG_FILE_LINE, compile_trigger_activity(), tr_trigger::condition, ER_ERROR_SEVERITY, er_set(), ER_TR_CONDITION_EVAL, ER_TR_INTERNAL_ERROR, ER_TR_INVALID_CONDITION_TYPE, error(), tr_activity::exec_cnt, tr_trigger::name, NO_ERROR, NULL, tr_activity::parser, parser_free_parser(), prm_get_integer_value(), PRM_ID_RESET_TR_PARSER, pt_exec_trigger_stmt(), signal_evaluation_error(), tr_activity::statement, TR_ACT_EXPRESSION, tr_Trace, tr_activity::type, and value_as_boolean().
Referenced by execute_activity().
|
static |
Definition at line 4976 of file trigger_manager.c.
References tr_trigger::action, AU_SET_USER, Au_user, tr_trigger::condition, eval_action(), eval_condition(), NO_ERROR, NULL, tr_trigger::owner, tr_trigger::status, tr_activity::time, TR_RETURN_ERROR, TR_RETURN_FALSE, TR_RETURN_TRUE, and TR_STATUS_ACTIVE.
Referenced by run_user_triggers(), tr_execute_activities(), and tr_execute_deferred_activities().
|
static |
Definition at line 3471 of file trigger_manager.c.
References ASSERT_ERROR_AND_SET, Au_root, check_authorization(), db_get_object(), db_get_set(), DB_IS_NULL, DB_TYPE_OBJECT, DB_VALUE_TYPE, error(), i, max, ml_ext_add(), ml_ext_free(), NO_ERROR, NULL, obj_get(), set_filter(), set_free(), set_get_element(), set_size(), tr_trigger::status, tr_map_trigger(), and TR_STATUS_ACTIVE.
Referenced by tr_find_all_triggers().
|
static |
Definition at line 3649 of file trigger_manager.c.
References error(), get_schema_trigger_objects(), get_user_trigger_objects(), NO_ERROR, and NULL.
Referenced by tr_find_event_triggers().
|
static |
Definition at line 823 of file trigger_manager.c.
References free_and_init, tr_deferred_context::head, tr_deferred_context::next, NULL, and tr_free_trigger_list().
Referenced by tr_check_abort_triggers(), tr_check_rollback_triggers(), and tr_final().
|
static |
Definition at line 355 of file trigger_manager.c.
References free_and_init, NULL, tr_activity::parser, parser_free_parser(), parser_free_tree(), tr_activity::source, and tr_activity::statement.
Referenced by tr_clear_trigger().
|
static |
Definition at line 976 of file trigger_manager.c.
References free_and_init, tr_free_trigger_list(), and tr_state::triggers.
Referenced by tr_finish().
|
static |
Definition at line 472 of file trigger_manager.c.
References free_and_init, and tr_clear_trigger().
Referenced by map_flush_helper(), tr_create_trigger(), tr_drop_trigger_internal(), and tr_map_trigger().
|
static |
Definition at line 1460 of file trigger_manager.c.
References tr_trigger::event, NEW_REFERENCE_NAME, NULL, OBJ_REFERENCE_NAME, OLD_REFERENCE_NAME, prm_get_bool_value(), PRM_ID_MYSQL_TRIGGER_CORRELATION_NAMES, tr_activity::time, TR_EVENT_DELETE, TR_EVENT_INSERT, TR_EVENT_UPDATE, TR_TIME_AFTER, TR_TIME_BEFORE, and TR_TIME_DEFERRED.
Referenced by compile_trigger_activity().
|
static |
Definition at line 3557 of file trigger_manager.c.
References tr_schema_cache::array_length, assert, ASSERT_ERROR_AND_SET, er_errid(), error(), ml_ext_add(), ml_ext_copy(), ml_ext_free(), tr_triglist::next, NO_ERROR, NULL, tr_trigger::object, tr_schema_cache::objects, sm_get_trigger_cache(), tr_trigger::status, TR_EVENT_ALL, TR_STATUS_ACTIVE, tr_validate_schema_cache(), tr_triglist::trigger, and tr_schema_cache::triggers.
Referenced by find_event_triggers().
|
static |
Definition at line 2049 of file trigger_manager.c.
References ASSERT_ERROR_AND_SET, Au_user, db_get_object(), db_get_set(), DB_IS_NULL, DB_TYPE_OBJECT, DB_VALUE_TYPE, error(), i, max, ml_ext_add(), ml_ext_free(), NO_ERROR, NULL, obj_get(), set_filter(), set_free(), set_get_element(), set_size(), tr_trigger::status, TR_EVENT_NULL, tr_map_trigger(), TR_STATUS_ACTIVE, and tr_trigger_event().
Referenced by find_event_triggers().
|
static |
Definition at line 517 of file trigger_manager.c.
References assert, db_ws_alloc(), er_errid(), tr_triglist::next, NO_ERROR, NULL, tr_triglist::prev, tr_trigger::priority, tr_triglist::target, and tr_triglist::trigger.
Referenced by reinsert_trigger_list(), tr_add_cache_trigger(), tr_create_trigger(), tr_update_user_cache(), and tr_validate_schema_cache().
|
static |
Definition at line 5901 of file trigger_manager.c.
References au_fetch_instance_force(), AU_FETCH_READ, db_object::decached, ER_HEAP_UNKNOWN_OBJECT, error(), NULL, TM_TRAN_READ_FETCH_VERSION, and WS_IS_DELETED.
Referenced by tr_execute_deferred_activities().
|
static |
Definition at line 328 of file trigger_manager.c.
References ARG_FILE_LINE, ER_ERROR_SEVERITY, ER_OUT_OF_VIRTUAL_MEMORY, er_set(), tr_activity::exec_cnt, NULL, tr_activity::parser, tr_activity::source, tr_activity::statement, tr_activity::time, TR_ACT_NULL, TR_TIME_NULL, and tr_activity::type.
Referenced by object_to_trigger(), and tr_create_trigger().
|
static |
Definition at line 952 of file trigger_manager.c.
References ARG_FILE_LINE, ER_ERROR_SEVERITY, ER_OUT_OF_VIRTUAL_MEMORY, er_set(), NULL, and tr_state::triggers.
Referenced by start_state().
|
static |
Definition at line 7191 of file trigger_manager.c.
References free_trigger(), NO_ERROR, and NULL.
Referenced by tr_final().
|
static |
Definition at line 576 of file trigger_manager.c.
References ASSERT_ERROR_AND_SET, db_ws_alloc(), error(), tr_triglist::next, NO_ERROR, NULL, tr_triglist::prev, tr_trigger::priority, tr_triglist::target, and tr_triglist::trigger.
Referenced by tr_prepare_class(), and tr_prepare_statement().
|
static |
Definition at line 1170 of file trigger_manager.c.
References tr_trigger::action, assert, tr_trigger::attribute, AU_DISABLE, AU_ENABLE, au_fetch_class_force(), au_fetch_instance_force(), AU_FETCH_READ, tr_trigger::chn, tr_trigger::class_attribute, tr_trigger::class_mop, tr_trigger::comment, tr_trigger::condition, db_get(), db_get_double(), db_get_int(), db_get_object(), db_get_string(), DB_IS_NULL, DB_TYPE_DOUBLE, DB_TYPE_INTEGER, DB_TYPE_OBJECT, DB_TYPE_STRING, db_value_clear(), DB_VALUE_TYPE, er_errid(), ER_HEAP_UNKNOWN_OBJECT, error(), tr_trigger::event, make_activity(), tr_trigger::name, NO_ERROR, NULL, tr_trigger::object, tr_trigger::owner, tr_trigger::priority, tr_activity::source, tr_trigger::status, strdup(), tr_activity::time, TM_TRAN_READ_FETCH_VERSION, TR_ATT_ACTION, TR_ATT_ACTION_OLD, TR_ATT_ACTION_TIME, TR_ATT_ACTION_TYPE, TR_ATT_ATTRIBUTE, TR_ATT_CLASS, TR_ATT_CLASS_ATTRIBUTE, TR_ATT_COMMENT, TR_ATT_CONDITION, TR_ATT_CONDITION_TIME, TR_ATT_CONDITION_TYPE, TR_ATT_EVENT, TR_ATT_NAME, TR_ATT_OWNER, TR_ATT_PRIORITY, TR_ATT_STATUS, TR_EVENT_NULL, TR_LOWEST_PRIORITY, TR_STATUS_INVALID, tr_activity::type, and WS_CHN.
Referenced by tr_map_trigger(), and validate_trigger().
|
static |
Definition at line 1917 of file trigger_manager.c.
References AU_DISABLE, AU_ENABLE, Au_user, db_get_set(), DB_IS_NULL, db_make_object(), db_make_sequence(), error(), NO_ERROR, NULL, obj_get(), obj_inst_lock(), obj_set(), set_create_sequence(), set_free(), set_insert_element(), tr_update_user_cache(), and tr_User_triggers_modified.
Referenced by tr_create_trigger().
|
static |
Definition at line 704 of file trigger_manager.c.
References insert_trigger_list(), tr_triglist::next, NULL, remove_trigger_list_element(), and tr_triglist::trigger.
Referenced by reorder_schema_caches().
|
static |
Definition at line 846 of file trigger_manager.c.
References tr_deferred_context::head, tr_triglist::prev, remove_trigger_list_element(), and tr_deferred_context::tail.
Referenced by tr_drop_deferred_activities(), and tr_execute_deferred_activities().
|
static |
Definition at line 864 of file trigger_manager.c.
References add_deferred_activity_context(), assert, er_errid(), free_and_init, tr_deferred_context::head, tr_deferred_context::next, NO_ERROR, NULL, tr_deferred_context::prev, tr_deferred_context::savepoint_id, tr_Deferred_activities_tail, and tr_free_trigger_list().
Referenced by tr_drop_deferred_activities(), and tr_execute_deferred_activities().
|
static |
Definition at line 678 of file trigger_manager.c.
References tr_triglist::next, NULL, remove_trigger_list_element(), and tr_triglist::trigger.
Referenced by tr_create_trigger(), tr_drop_cache_trigger(), tr_drop_trigger_internal(), and unregister_user_trigger().
|
static |
Definition at line 650 of file trigger_manager.c.
References tr_triglist::next, NULL, tr_triglist::prev, and tr_free_trigger_list().
Referenced by reinsert_trigger_list(), remove_deferred_activity(), remove_trigger_list(), and tr_execute_activities().
|
static |
Definition at line 2756 of file trigger_manager.c.
References tr_schema_cache::array_length, tr_schema_cache::compiled, i, tr_schema_cache::next, NULL, reinsert_trigger_list(), and tr_schema_cache::triggers.
Referenced by tr_set_priority().
|
static |
Definition at line 5132 of file trigger_manager.c.
References ARG_FILE_LINE, ASSERT_ERROR_AND_SET, er_set(), ER_TR_REJECTED, ER_WARNING_SEVERITY, error(), tr_trigger::event, execute_activity(), tr_trigger::name, tr_triglist::next, NO_ERROR, NULL, start_state(), tr_trigger::status, tr_finish(), TR_RETURN_ERROR, TR_RETURN_TRUE, TR_STATUS_ACTIVE, tr_update_user_cache(), tr_User_triggers_valid, and tr_triglist::trigger.
Referenced by tr_check_abort_triggers(), tr_check_commit_triggers(), and tr_check_rollback_triggers().
|
static |
Definition at line 4595 of file trigger_manager.c.
References ARG_FILE_LINE, er_errid(), ER_ERROR_SEVERITY, ER_LK_UNILATERALLY_ABORTED, er_msg(), ER_MVCC_SERIALIZABLE_CONFLICT, er_set(), error(), MAX_ERROR_STRING, tr_trigger::name, and NULL.
Referenced by eval_action(), and eval_condition().
Definition at line 5224 of file trigger_manager.c.
References ARG_FILE_LINE, compare_recursion_levels(), ER_ERROR_SEVERITY, er_set(), ER_TR_EXCEEDS_MAX_REC_LEVEL, make_state(), NULL, tr_Current_depth, and tr_Maximum_depth.
Referenced by run_user_triggers(), tr_execute_deferred_activities(), tr_prepare_class(), and tr_prepare_statement().
|
static |
Definition at line 264 of file trigger_manager.c.
References TR_TIME_AFTER, TR_TIME_BEFORE, TR_TIME_DEFERRED, and TR_TIME_NULL.
Referenced by check_semantics(), and double_to_string().
void tr_abort | ( | TR_STATE * | state | ) |
Definition at line 5536 of file trigger_manager.c.
References tr_finish().
Referenced by check_merge_trigger(), check_trigger(), obt_apply_assignments(), tr_after_object(), and tr_before_object().
int tr_active_schema_cache | ( | MOP | class_mop, |
TR_SCHEMA_CACHE * | cache, | ||
DB_TRIGGER_EVENT | event_type, | ||
bool * | has_event_type_triggers | ||
) |
Definition at line 2787 of file trigger_manager.c.
References tr_schema_cache::array_length, tr_trigger::event, i, tr_triglist::next, NULL, tr_trigger::status, TR_EVENT_ALL, TR_STATUS_ACTIVE, tr_validate_schema_cache(), tr_triglist::trigger, and tr_schema_cache::triggers.
Referenced by sm_active_triggers().
int tr_add_cache_trigger | ( | TR_SCHEMA_CACHE * | cache, |
DB_OBJECT * | trigger_object | ||
) |
Definition at line 2477 of file trigger_manager.c.
References ASSERT_ERROR_AND_SET, tr_schema_cache::compiled, error(), tr_trigger::event, insert_trigger_list(), ml_add(), NO_ERROR, NULL, tr_schema_cache::objects, tr_map_trigger(), and tr_schema_cache::triggers.
Referenced by alter_trigger_cache().
int tr_after | ( | TR_STATE * | state | ) |
Definition at line 5651 of file trigger_manager.c.
References NULL, and tr_after_object().
Referenced by check_merge_trigger(), and check_trigger().
Definition at line 5608 of file trigger_manager.c.
References add_deferred_activities(), error(), NO_ERROR, NULL, tr_abort(), tr_execute_activities(), TR_EXECUTION_ENABLED, tr_finish(), TR_TIME_AFTER, and tr_state::triggers.
Referenced by obj_delete(), obt_apply_assignments(), and tr_after().
int tr_before | ( | TR_STATE * | state | ) |
Definition at line 5593 of file trigger_manager.c.
References NULL, and tr_before_object().
Referenced by check_merge_trigger(), and check_trigger().
Definition at line 5561 of file trigger_manager.c.
References error(), NO_ERROR, tr_abort(), tr_execute_activities(), TR_EXECUTION_ENABLED, and TR_TIME_BEFORE.
Referenced by obj_delete(), obt_apply_assignments(), and tr_before().
void tr_check_abort_triggers | ( | void | ) |
Definition at line 5865 of file trigger_manager.c.
References flush_deferred_activities(), run_user_triggers(), TR_EVENT_ABORT, TR_EXECUTION_ENABLED, tr_Invalid_transaction, and TR_TIME_AFTER.
Referenced by tran_abort_only_client(), and tran_unilaterally_abort().
int tr_check_authorization | ( | DB_OBJECT * | trigger_object, |
int | alter_flag | ||
) |
Definition at line 4302 of file trigger_manager.c.
References ASSERT_ERROR_AND_SET, AU_DISABLE, AU_ENABLE, check_authorization(), error(), NO_ERROR, NULL, and tr_map_trigger().
Referenced by do_alter_trigger(), and do_drop_trigger().
int tr_check_commit_triggers | ( | DB_TRIGGER_TIME | time | ) |
Definition at line 5715 of file trigger_manager.c.
References ARG_FILE_LINE, ASSERT_ERROR_AND_SET, ER_ERROR_SEVERITY, er_set(), ER_TR_TRANSACTION_INVALIDATED, error(), NO_ERROR, NULL, run_user_triggers(), TR_EVENT_COMMIT, tr_execute_deferred_activities(), TR_EXECUTION_ENABLED, tr_free_trigger_list(), tr_Invalid_transaction, tr_Invalid_transaction_trigger, TR_TIME_BEFORE, and tr_User_triggers_modified.
Referenced by tran_commit().
|
static |
Definition at line 3869 of file trigger_manager.c.
References er_msg(), parser_node::info, pt_statement_info::name, NEW_REFERENCE_NAME, parser_node::node_type, NULL, pt_name_info::original, PT_ERROR, PT_NAME, and pt_name_info::resolved.
Referenced by compile_trigger_activity().
|
static |
Definition at line 4738 of file trigger_manager.c.
References assert, i, min, oid_compare(), TR_DECISION_CONTINUE, TR_DECISION_DO_NOT_CONTINUE, and TR_MAX_RECURSION_LEVEL.
Referenced by eval_action().
void tr_check_rollback_triggers | ( | DB_TRIGGER_TIME | time | ) |
Definition at line 5782 of file trigger_manager.c.
References flush_deferred_activities(), tr_triglist::next, NULL, run_user_triggers(), tr_drop_trigger_internal(), TR_EVENT_ROLLBACK, TR_EVENT_TIMEOUT, TR_EXECUTION_ENABLED, tr_free_trigger_list(), tr_Invalid_transaction, TR_TIME_AFTER, tr_User_triggers_modified, tr_User_triggers_valid, and tr_triglist::trigger.
Referenced by tran_abort().
|
static |
Definition at line 429 of file trigger_manager.c.
References tr_trigger::action, tr_trigger::attribute, tr_trigger::class_mop, tr_trigger::comment, tr_trigger::condition, free_activity(), free_and_init, tr_trigger::name, NULL, tr_trigger::object, and tr_trigger::owner.
Referenced by free_trigger(), and validate_trigger().
TR_SCHEMA_CACHE* tr_copy_schema_cache | ( | TR_SCHEMA_CACHE * | cache, |
MOP | filter_class | ||
) |
Definition at line 2308 of file trigger_manager.c.
References tr_schema_cache::array_length, tr_trigger::class_mop, ml_add(), ml_copy(), db_objlist::next, NULL, tr_schema_cache::objects, db_objlist::op, TR_CACHE_ATTRIBUTE, TR_CACHE_CLASS, tr_free_schema_cache(), tr_make_schema_cache(), tr_map_trigger(), and TR_MAX_CLASS_TRIGGERS.
Referenced by classobj_init_attribute(), classobj_make_template(), and flatten_trigger_cache().
DB_OBJECT* tr_create_trigger | ( | const char * | name, |
DB_TRIGGER_STATUS | status, | ||
double | priority, | ||
DB_TRIGGER_EVENT | event, | ||
DB_OBJECT * | class_mop, | ||
const char * | attribute, | ||
DB_TRIGGER_TIME | cond_time, | ||
const char * | cond_source, | ||
DB_TRIGGER_TIME | action_time, | ||
DB_TRIGGER_ACTION | action_type, | ||
const char * | action_source, | ||
const char * | comment | ||
) |
Definition at line 3916 of file trigger_manager.c.
References tr_trigger::action, ARG_FILE_LINE, tr_trigger::attribute, Au_user, check_semantics(), tr_trigger::class_mop, tr_trigger::comment, compile_trigger_activity(), tr_trigger::condition, db_get_class_name(), db_is_vclass(), er_errid(), ER_ERROR_SEVERITY, ER_LK_UNILATERALLY_ABORTED, er_set(), ER_TR_MISSING_ACTION_STRING, ER_TR_NO_VCLASSES, error(), tr_trigger::event, free_trigger(), insert_trigger_list(), locator_all_flush(), make_activity(), mht_put(), mht_rem(), tr_trigger::name, NO_ERROR, NULL, tr_trigger::object, tr_trigger::owner, tr_trigger::priority, register_user_trigger(), remove_trigger_list(), sm_add_trigger(), sm_downcase_name(), SM_MAX_IDENTIFIER_LENGTH, tr_activity::source, tr_trigger::status, strdup(), tr_activity::time, TM_TRAN_ISOLATION, TR_ACT_EXPRESSION, TR_ACT_NULL, tr_drop_deferred_activities(), tr_make_trigger(), tr_process_name(), TR_TIME_AFTER, TR_TIME_NULL, tran_abort_upto_system_savepoint(), TRAN_REP_READ, tran_system_savepoint(), trigger_table_add(), trigger_table_drop(), trigger_to_object(), tr_activity::type, and UNIQUE_SAVEPOINT_CREATE_TRIGGER.
Referenced by db_create_trigger(), and do_create_trigger().
int tr_delete_schema_cache | ( | TR_SCHEMA_CACHE * | cache, |
DB_OBJECT * | class_object | ||
) |
Definition at line 2841 of file trigger_manager.c.
References AU_DISABLE, AU_ENABLE, tr_trigger::class_mop, db_make_int(), db_put_internal(), db_objlist::next, NO_ERROR, NULL, tr_schema_cache::objects, db_objlist::op, tr_trigger::status, TR_ATT_STATUS, tr_free_schema_cache(), tr_map_trigger(), and TR_STATUS_INVALID.
Referenced by invalidate_unused_triggers().
int tr_delete_triggers_for_class | ( | TR_SCHEMA_CACHE ** | cache, |
DB_OBJECT * | class_object | ||
) |
Definition at line 2914 of file trigger_manager.c.
References AU_DISABLE, AU_ENABLE, tr_trigger::class_mop, error(), db_objlist::next, NO_ERROR, NULL, db_objlist::op, tr_drop_trigger_internal(), tr_free_schema_cache(), tr_map_trigger(), and tr_validate_schema_cache().
Referenced by remove_class_triggers().
int tr_drop_cache_trigger | ( | TR_SCHEMA_CACHE * | cache, |
DB_OBJECT * | trigger_object | ||
) |
Definition at line 2519 of file trigger_manager.c.
References assert, tr_schema_cache::compiled, er_errid(), error(), tr_trigger::event, ml_remove(), NO_ERROR, NULL, tr_schema_cache::objects, remove_trigger_list(), tr_map_trigger(), and tr_schema_cache::triggers.
Referenced by alter_trigger_cache().
Definition at line 6055 of file trigger_manager.c.
References ARG_FILE_LINE, Au_dba_user, Au_user, ER_ERROR_SEVERITY, er_set(), ER_TR_ACTIVITY_NOT_OWNED, error(), tr_deferred_context::head, tr_triglist::next, tr_deferred_context::next, NO_ERROR, NULL, tr_trigger::object, tr_trigger::owner, remove_deferred_activity(), remove_deferred_context(), tr_triglist::target, tr_triglist::trigger, and ws_is_same_object().
Referenced by db_drop_deferred_activities(), do_remove_trigger(), tr_create_trigger(), and tr_drop_trigger().
Definition at line 4442 of file trigger_manager.c.
References tr_trigger::action, ARG_FILE_LINE, ASSERT_ERROR_AND_SET, AU_DISABLE, AU_ENABLE, check_authorization(), tr_trigger::condition, er_errid(), ER_ERROR_SEVERITY, er_set(), ER_TR_TRIGGER_DELETE_FAILURE, error(), free_and_init, tr_trigger::name, NO_ERROR, NULL, strdup(), tr_activity::time, TM_TRAN_ISOLATION, tr_drop_deferred_activities(), tr_drop_trigger_internal(), tr_map_trigger(), TR_TIME_DEFERRED, and TRAN_REP_READ.
Referenced by db_drop_trigger(), and do_drop_trigger().
|
static |
Definition at line 4348 of file trigger_manager.c.
References tr_trigger::attribute, AU_DISABLE, AU_ENABLE, tr_trigger::class_mop, db_drop(), ER_HEAP_UNKNOWN_OBJECT, ER_LK_UNILATERALLY_ABORTED, error(), free_trigger(), locator_flush_instance(), tr_trigger::name, NO_ERROR, NULL, tr_trigger::object, remove_trigger_list(), sm_drop_trigger(), tr_unmap_trigger(), tran_abort_upto_system_savepoint(), tran_system_savepoint(), trigger_table_drop(), UNIQUE_SAVEPOINT_DROP_TRIGGER, unregister_user_trigger(), ws_clear_hints(), and ws_decache().
Referenced by tr_check_rollback_triggers(), tr_delete_triggers_for_class(), and tr_drop_trigger().
void tr_dump | ( | FILE * | fpp | ) |
Definition at line 7240 of file trigger_manager.c.
References tr_deferred_context::head, tr_trigger::name, tr_triglist::next, tr_deferred_context::next, NULL, TR_EXECUTION_ENABLED, and tr_triglist::trigger.
Referenced by help_print_info().
int tr_empty_schema_cache | ( | TR_SCHEMA_CACHE * | cache | ) |
Definition at line 2405 of file trigger_manager.c.
References NULL, and tr_schema_cache::objects.
Referenced by flatten_trigger_cache().
const char* tr_event_as_string | ( | DB_TRIGGER_EVENT | event | ) |
Definition at line 6611 of file trigger_manager.c.
References TR_EVENT_ABORT, TR_EVENT_ALL, TR_EVENT_ALTER, TR_EVENT_COMMIT, TR_EVENT_DELETE, TR_EVENT_DROP, TR_EVENT_INSERT, TR_EVENT_NULL, TR_EVENT_ROLLBACK, TR_EVENT_STATEMENT_DELETE, TR_EVENT_STATEMENT_INSERT, TR_EVENT_STATEMENT_UPDATE, TR_EVENT_TIMEOUT, and TR_EVENT_UPDATE.
Referenced by object_printer::describe_class_trigger(), trigger_description::init(), and tr_dump_trigger().
|
static |
Definition at line 5082 of file trigger_manager.c.
References ARG_FILE_LINE, ASSERT_ERROR_AND_SET, er_set(), ER_TR_REJECTED, ER_WARNING_SEVERITY, error(), execute_activity(), tr_trigger::name, tr_triglist::next, NO_ERROR, NULL, remove_trigger_list_element(), TR_RETURN_ERROR, TR_RETURN_TRUE, tr_triglist::trigger, and tr_state::triggers.
Referenced by tr_after_object(), and tr_before_object().
Definition at line 5957 of file trigger_manager.c.
References ASSERT_ERROR_AND_SET, error(), execute_activity(), tr_deferred_context::head, its_deleted(), tr_trigger::name, tr_triglist::next, tr_deferred_context::next, NO_ERROR, NULL, tr_trigger::object, remove_deferred_activity(), remove_deferred_context(), start_state(), tr_triglist::target, TR_EXECUTION_ENABLED, tr_finish(), TR_RETURN_ERROR, TR_RETURN_TRUE, TR_TIME_DEFERRED, and tr_triglist::trigger.
Referenced by db_execute_deferred_activities(), do_execute_trigger(), and tr_check_commit_triggers().
void tr_final | ( | void | ) |
Definition at line 7206 of file trigger_manager.c.
References flush_deferred_activities(), map_flush_helper(), mht_destroy(), mht_map(), NULL, and tr_free_trigger_list().
Referenced by boot_client_all_finalize(), boot_initialize_client(), boot_restart_client(), and ws_final().
int tr_find_all_triggers | ( | DB_OBJLIST ** | list | ) |
Definition at line 4186 of file trigger_manager.c.
References AU_DISABLE, AU_ENABLE, error(), and find_all_triggers().
Referenced by convert_speclist_to_objlist(), db_find_all_triggers(), and help_trigger_names().
int tr_find_event_triggers | ( | DB_TRIGGER_EVENT | event, |
DB_OBJECT * | class_mop, | ||
const char * | attribute, | ||
bool | active, | ||
DB_OBJLIST ** | list | ||
) |
Definition at line 4264 of file trigger_manager.c.
References ASSERT_ERROR_AND_SET, AU_DISABLE, AU_ENABLE, check_target(), error(), find_event_triggers(), and NO_ERROR.
Referenced by convert_speclist_to_objlist(), and db_find_event_triggers().
Definition at line 4216 of file trigger_manager.c.
References ARG_FILE_LINE, AU_DISABLE, AU_ENABLE, check_authorization(), ER_ERROR_SEVERITY, er_set(), ER_TR_TRIGGER_NOT_FOUND, ER_TR_TRIGGER_SELECT_FAILURE, NO_ERROR, NULL, tr_map_trigger(), and trigger_table_find().
Referenced by au_change_trigger_owner_method(), convert_speclist_to_objlist(), db_find_trigger(), do_rename_trigger(), and trigger_description::init().
|
static |
Definition at line 5517 of file trigger_manager.c.
References free_state(), and tr_Current_depth.
Referenced by run_user_triggers(), tr_abort(), tr_after_object(), and tr_execute_deferred_activities().
void tr_free_schema_cache | ( | TR_SCHEMA_CACHE * | cache | ) |
Definition at line 2419 of file trigger_manager.c.
References tr_schema_cache::array_length, db_ws_free(), i, ml_free(), tr_schema_cache::next, NULL, tr_schema_cache::objects, tr_free_trigger_list(), and tr_schema_cache::triggers.
Referenced by classobj_clear_attribute(), classobj_free_template(), classobj_install_template(), flatten_trigger_cache(), tr_copy_schema_cache(), tr_delete_schema_cache(), and tr_delete_triggers_for_class().
void tr_free_trigger_list | ( | TR_TRIGLIST * | list | ) |
Definition at line 494 of file trigger_manager.c.
References db_ws_free(), tr_triglist::next, and NULL.
Referenced by flush_deferred_activities(), free_state(), remove_deferred_context(), remove_trigger_list_element(), tr_check_commit_triggers(), tr_check_rollback_triggers(), tr_final(), tr_free_schema_cache(), tr_prepare_statement(), tr_update_user_cache(), and tr_validate_schema_cache().
int tr_get_cache_objects | ( | TR_SCHEMA_CACHE * | cache, |
DB_OBJLIST ** | list | ||
) |
Definition at line 2562 of file trigger_manager.c.
References tr_schema_cache::array_length, error(), i, ml_add(), tr_triglist::next, NO_ERROR, NULL, tr_trigger::object, tr_schema_cache::objects, tr_triglist::trigger, and tr_schema_cache::triggers.
Referenced by attribute_size(), attribute_to_disk(), put_class_attributes(), put_class_varinfo(), and tf_class_size().
const char* tr_get_class_name | ( | void | ) |
Definition at line 7440 of file trigger_manager.c.
References DB_FETCH_QUERY_WRITE, db_get_string(), DB_IS_NULL, ER_FAILED, ml_ext_free(), db_objlist::next, NO_ERROR, NULL, obj_get(), obj_set(), db_objlist::op, sm_downcase_name(), sm_fetch_all_objects(), sm_find_class(), SM_MAX_IDENTIFIER_LENGTH, TR_CLASS_NAME, and ws_dirty().
int tr_get_depth | ( | void | ) |
Definition at line 7106 of file trigger_manager.c.
References tr_Maximum_depth.
Referenced by do_get_trigger().
bool tr_get_execution_state | ( | void | ) |
Definition at line 7416 of file trigger_manager.c.
References tr_Execution_enabled.
Referenced by check_merge_trigger(), check_trigger(), do_run_update_query_for_class(), and sm_active_triggers().
int tr_get_trace | ( | void | ) |
Definition at line 7138 of file trigger_manager.c.
References tr_Trace.
Referenced by do_get_trigger().
int tr_has_user_trigger | ( | bool * | has_user_trigger | ) |
Definition at line 5662 of file trigger_manager.c.
References assert, ASSERT_ERROR_AND_SET, error(), tr_triglist::next, NO_ERROR, NULL, tr_trigger::status, TR_EXECUTION_ENABLED, TR_STATUS_ACTIVE, tr_update_user_cache(), tr_User_triggers_valid, and tr_triglist::trigger.
Referenced by db_set_statement_auto_commit().
void tr_init | ( | void | ) |
Definition at line 7163 of file trigger_manager.c.
References mht_compare_ptrs_are_equal(), mht_create(), mht_ptrhash(), NULL, tr_Current_depth, TR_EST_MAP_SIZE, tr_Invalid_transaction, tr_Invalid_transaction_trigger, TR_MAX_RECURSION_LEVEL, tr_Maximum_depth, tr_Trace, tr_User_triggers_modified, and tr_User_triggers_valid.
Referenced by boot_initialize_client(), and boot_restart_client().
int tr_install | ( | void | ) |
Definition at line 7406 of file trigger_manager.c.
References define_trigger_classes().
Referenced by boot_initialize_client().
int tr_is_trigger | ( | DB_OBJECT * | trigger_object, |
int * | status | ||
) |
Definition at line 6555 of file trigger_manager.c.
References error(), NO_ERROR, sm_find_class(), sm_get_class(), and TR_CLASS_NAME.
Referenced by help_print_obj().
TR_SCHEMA_CACHE* tr_make_schema_cache | ( | TR_CACHE_TYPE | type, |
DB_OBJLIST * | objects | ||
) |
Definition at line 2258 of file trigger_manager.c.
References tr_schema_cache::array_length, tr_schema_cache::compiled, db_ws_alloc(), i, tr_schema_cache::next, NULL, tr_schema_cache::objects, TR_CACHE_CLASS, TR_MAX_ATTRIBUTE_TRIGGERS, TR_MAX_CLASS_TRIGGERS, tr_Schema_caches, and tr_schema_cache::triggers.
Referenced by alter_trigger_cache(), disk_to_attribute(), disk_to_class(), flatten_trigger_cache(), and tr_copy_schema_cache().
|
static |
Definition at line 388 of file trigger_manager.c.
References tr_trigger::action, ARG_FILE_LINE, tr_trigger::attribute, tr_trigger::chn, tr_trigger::class_attribute, tr_trigger::class_mop, tr_trigger::comment, tr_trigger::condition, tr_trigger::current_refname, ER_ERROR_SEVERITY, ER_OUT_OF_VIRTUAL_MEMORY, er_set(), tr_trigger::event, tr_trigger::name, NULL, NULL_CHN, tr_trigger::object, tr_trigger::owner, tr_trigger::priority, tr_trigger::status, tr_trigger::temp_refname, TR_EVENT_NULL, TR_LOWEST_PRIORITY, and TR_STATUS_INVALID.
Referenced by tr_create_trigger(), and tr_map_trigger().
TR_TRIGGER* tr_map_trigger | ( | DB_OBJECT * | object, |
int | fetch | ||
) |
Definition at line 1829 of file trigger_manager.c.
References free_trigger(), mht_get(), mht_put(), NO_ERROR, NULL, object_to_trigger(), tr_make_trigger(), and validate_trigger().
Referenced by do_alter_trigger(), find_all_triggers(), get_user_trigger_objects(), trigger_description::init(), sch_trigger(), tr_add_cache_trigger(), tr_check_authorization(), tr_copy_schema_cache(), tr_delete_schema_cache(), tr_delete_triggers_for_class(), tr_drop_cache_trigger(), tr_drop_trigger(), tr_dump_selective_triggers(), tr_dump_trigger(), tr_find_trigger(), tr_rename_trigger(), tr_set_comment(), tr_set_priority(), tr_set_status(), tr_status_as_string(), tr_trigger_action(), tr_trigger_action_time(), tr_trigger_action_type(), tr_trigger_attribute(), tr_trigger_class(), tr_trigger_comment(), tr_trigger_condition(), tr_trigger_condition_time(), tr_trigger_event(), tr_trigger_name(), tr_trigger_priority(), tr_trigger_status(), tr_update_user_cache(), and tr_validate_schema_cache().
int tr_merge_schema_cache | ( | TR_SCHEMA_CACHE * | destination, |
TR_SCHEMA_CACHE * | source | ||
) |
Definition at line 2382 of file trigger_manager.c.
References error(), ml_add(), db_objlist::next, NO_ERROR, NULL, tr_schema_cache::objects, and db_objlist::op.
Referenced by flatten_trigger_cache().
int tr_prepare_class | ( | TR_STATE ** | state_p, |
TR_SCHEMA_CACHE * | cache, | ||
MOP | class_mop, | ||
DB_TRIGGER_EVENT | event | ||
) |
Definition at line 5452 of file trigger_manager.c.
References assert, ASSERT_ERROR_AND_SET, AU_DISABLE, AU_ENABLE, er_errid(), error(), merge_trigger_list(), tr_trigger::name, NO_ERROR, NULL, start_state(), TR_EXECUTION_ENABLED, tr_validate_schema_cache(), tr_triglist::trigger, tr_state::triggers, and tr_schema_cache::triggers.
Referenced by obj_delete(), and obt_apply_assignments().
int tr_prepare_statement | ( | TR_STATE ** | state_p, |
DB_TRIGGER_EVENT | event, | ||
DB_OBJECT * | class_mop, | ||
int | attcount, | ||
const char ** | attnames | ||
) |
Definition at line 5267 of file trigger_manager.c.
References ARG_FILE_LINE, assert, ASSERT_ERROR_AND_SET, AU_DISABLE, AU_ENABLE, er_errid(), ER_ERROR_SEVERITY, ER_HEAP_UNKNOWN_OBJECT, ER_QPROC_INVALID_XASLNODE, er_set(), error(), i, merge_trigger_list(), tr_trigger::name, NO_ERROR, NULL, sm_get_trigger_cache(), start_state(), tr_free_trigger_list(), tr_validate_schema_cache(), tr_triglist::trigger, tr_state::triggers, and tr_schema_cache::triggers.
Referenced by check_merge_trigger(), and check_trigger().
|
static |
Definition at line 307 of file trigger_manager.c.
References NULL, sm_check_name(), sm_downcase_name(), SM_MAX_IDENTIFIER_LENGTH, and strdup().
Referenced by tr_create_trigger(), and tr_rename_trigger().
Definition at line 6780 of file trigger_manager.c.
References ARG_FILE_LINE, ASSERT_ERROR, ASSERT_ERROR_AND_SET, AU_DISABLE, AU_ENABLE, check_authorization(), db_make_string(), db_put_internal(), ER_ERROR_SEVERITY, ER_LK_UNILATERALLY_ABORTED, er_set(), ER_TR_TRIGGER_ALTER_FAILURE, error(), free_and_init, locator_flush_instance(), tr_trigger::name, NO_ERROR, NULL, strdup(), TM_TRAN_ISOLATION, TR_ATT_NAME, tr_map_trigger(), tr_process_name(), tran_abort_upto_system_savepoint(), TRAN_REP_READ, tran_system_savepoint(), trigger_table_rename(), and UNIQUE_SAVEPOINT_RENAME_TRIGGER.
Referenced by db_rename_trigger(), and do_rename_trigger().
Definition at line 7038 of file trigger_manager.c.
References ARG_FILE_LINE, assert, ASSERT_ERROR_AND_SET, AU_DISABLE, AU_ENABLE, check_authorization(), tr_trigger::comment, db_make_string_copy(), db_put_internal(), er_errid(), ER_ERROR_SEVERITY, ER_FAILED, er_set(), ER_TR_TRIGGER_ALTER_FAILURE, error(), free_and_init, tr_trigger::name, NO_ERROR, NULL, pr_clear_value(), strdup(), TR_ATT_COMMENT, and tr_map_trigger().
Referenced by do_alter_trigger().
int tr_set_depth | ( | int | depth | ) |
Definition at line 7117 of file trigger_manager.c.
References ARG_FILE_LINE, ER_ERROR_SEVERITY, er_set(), ER_TR_MAX_DEPTH_TOO_BIG, NO_ERROR, TR_MAX_RECURSION_LEVEL, and tr_Maximum_depth.
Referenced by do_set_trigger().
Definition at line 7430 of file trigger_manager.c.
References tr_Execution_enabled.
Referenced by db_disable_trigger(), db_enable_trigger(), do_run_update_query_for_class(), and sm_truncate_using_delete().
Definition at line 6969 of file trigger_manager.c.
References ARG_FILE_LINE, ASSERT_ERROR_AND_SET, AU_DISABLE, AU_ENABLE, check_authorization(), tr_trigger::class_mop, db_make_double(), db_put_internal(), ER_ERROR_SEVERITY, er_set(), ER_TR_TRIGGER_ALTER_FAILURE, error(), tr_trigger::name, NO_ERROR, NULL, tr_trigger::priority, reorder_schema_caches(), TR_ATT_PRIORITY, tr_map_trigger(), and tr_update_user_cache().
Referenced by db_alter_trigger_priority(), and do_alter_trigger().
int tr_set_status | ( | DB_OBJECT * | trigger_object, |
DB_TRIGGER_STATUS | status, | ||
bool | call_from_api | ||
) |
Definition at line 6902 of file trigger_manager.c.
References ARG_FILE_LINE, ASSERT_ERROR_AND_SET, AU_DISABLE, AU_ENABLE, check_authorization(), tr_trigger::class_mop, db_make_int(), db_put_internal(), ER_ERROR_SEVERITY, er_set(), ER_TR_TRIGGER_ALTER_FAILURE, error(), tr_trigger::name, NO_ERROR, NULL, sm_invalidate_trigger_cache(), tr_trigger::status, TR_ATT_STATUS, and tr_map_trigger().
Referenced by db_alter_trigger_status(), and do_alter_trigger().
int tr_set_trace | ( | bool | trace | ) |
Definition at line 7149 of file trigger_manager.c.
References NO_ERROR, and tr_Trace.
Referenced by do_set_trigger().
const char* tr_status_as_string | ( | DB_TRIGGER_STATUS | status | ) |
Definition at line 6668 of file trigger_manager.c.
References assert, Au_root, tr_trigger::class_mop, db_get_object(), db_get_set(), DB_IS_NULL, DB_TYPE_OBJECT, DB_VALUE_TYPE, er_errid(), error(), get_user_name(), i, max, tr_trigger::name, NO_ERROR, NULL, obj_get(), tr_trigger::owner, set_filter(), set_free(), set_get_element(), set_size(), sm_is_system_class(), tr_trigger::status, tr_dump_trigger(), tr_map_trigger(), TR_STATUS_ACTIVE, TR_STATUS_INACTIVE, and TR_STATUS_INVALID.
Referenced by trigger_description::init(), and tr_dump_trigger().
const char* tr_time_as_string | ( | DB_TRIGGER_TIME | time | ) |
Definition at line 6583 of file trigger_manager.c.
References TR_TIME_AFTER, TR_TIME_BEFORE, and TR_TIME_DEFERRED.
Referenced by object_printer::describe_trigger_action_time(), object_printer::describe_trigger_condition_time(), and tr_dump_trigger().
int tr_trigger_action | ( | DB_OBJECT * | trigger_object, |
char ** | action | ||
) |
Definition at line 6393 of file trigger_manager.c.
References tr_trigger::action, ASSERT_ERROR_AND_SET, AU_DISABLE, AU_ENABLE, error(), NO_ERROR, NULL, tr_activity::source, TR_ACT_EXPRESSION, TR_ACT_INVALIDATE, TR_ACT_NULL, TR_ACT_PRINT, TR_ACT_REJECT, tr_map_trigger(), TR_MAX_PRINT_STRING, tr_activity::type, and ws_copy_string().
Referenced by db_trigger_action().
int tr_trigger_action_time | ( | DB_OBJECT * | trigger_object, |
DB_TRIGGER_TIME * | tr_time | ||
) |
Definition at line 6456 of file trigger_manager.c.
References tr_trigger::action, ASSERT_ERROR_AND_SET, AU_DISABLE, AU_ENABLE, error(), NO_ERROR, NULL, tr_activity::time, tr_map_trigger(), and TR_TIME_NULL.
Referenced by db_trigger_action_time().
int tr_trigger_action_type | ( | DB_OBJECT * | trigger_object, |
DB_TRIGGER_ACTION * | type | ||
) |
Definition at line 6490 of file trigger_manager.c.
References tr_trigger::action, ASSERT_ERROR_AND_SET, AU_DISABLE, AU_ENABLE, error(), NO_ERROR, NULL, TR_ACT_NULL, tr_map_trigger(), and tr_activity::type.
Referenced by db_trigger_action_type().
int tr_trigger_attribute | ( | DB_OBJECT * | trigger_object, |
char ** | attribute | ||
) |
Definition at line 6286 of file trigger_manager.c.
References ASSERT_ERROR_AND_SET, tr_trigger::attribute, AU_DISABLE, AU_ENABLE, error(), NO_ERROR, NULL, tr_map_trigger(), and ws_copy_string().
Referenced by db_trigger_attribute().
Definition at line 6250 of file trigger_manager.c.
References ASSERT_ERROR_AND_SET, AU_DISABLE, AU_ENABLE, tr_trigger::class_mop, error(), NO_ERROR, NULL, and tr_map_trigger().
Referenced by db_trigger_class().
int tr_trigger_comment | ( | DB_OBJECT * | trigger_object, |
char ** | comment | ||
) |
Definition at line 6525 of file trigger_manager.c.
References ASSERT_ERROR_AND_SET, AU_DISABLE, AU_ENABLE, tr_trigger::comment, error(), NO_ERROR, NULL, tr_map_trigger(), and ws_copy_string().
Referenced by db_trigger_comment().
int tr_trigger_condition | ( | DB_OBJECT * | trigger_object, |
char ** | condition | ||
) |
Definition at line 6322 of file trigger_manager.c.
References ASSERT_ERROR_AND_SET, AU_DISABLE, AU_ENABLE, tr_trigger::condition, error(), NO_ERROR, NULL, tr_activity::source, TR_ACT_EXPRESSION, tr_map_trigger(), tr_activity::type, and ws_copy_string().
Referenced by db_trigger_condition().
int tr_trigger_condition_time | ( | DB_OBJECT * | trigger_object, |
DB_TRIGGER_TIME * | tr_time | ||
) |
Definition at line 6358 of file trigger_manager.c.
References ASSERT_ERROR_AND_SET, AU_DISABLE, AU_ENABLE, tr_trigger::condition, error(), NO_ERROR, NULL, tr_activity::time, tr_map_trigger(), and TR_TIME_NULL.
Referenced by db_trigger_condition_time().
int tr_trigger_event | ( | DB_OBJECT * | trigger_object, |
DB_TRIGGER_EVENT * | event | ||
) |
Definition at line 6214 of file trigger_manager.c.
References ASSERT_ERROR_AND_SET, AU_DISABLE, AU_ENABLE, error(), tr_trigger::event, NO_ERROR, NULL, TR_EVENT_NULL, and tr_map_trigger().
Referenced by db_trigger_event(), and get_user_trigger_objects().
int tr_trigger_name | ( | DB_OBJECT * | trigger_object, |
char ** | name | ||
) |
Definition at line 6109 of file trigger_manager.c.
References ASSERT_ERROR_AND_SET, AU_DISABLE, AU_ENABLE, error(), tr_trigger::name, NO_ERROR, NULL, tr_map_trigger(), and ws_copy_string().
Referenced by db_trigger_name(), and help_trigger_names().
int tr_trigger_priority | ( | DB_OBJECT * | trigger_object, |
double * | priority | ||
) |
Definition at line 6179 of file trigger_manager.c.
References ASSERT_ERROR_AND_SET, AU_DISABLE, AU_ENABLE, error(), NO_ERROR, NULL, tr_trigger::priority, TR_LOWEST_PRIORITY, and tr_map_trigger().
Referenced by db_trigger_priority().
int tr_trigger_status | ( | DB_OBJECT * | trigger_object, |
DB_TRIGGER_STATUS * | status | ||
) |
Definition at line 6144 of file trigger_manager.c.
References ASSERT_ERROR_AND_SET, AU_DISABLE, AU_ENABLE, error(), NO_ERROR, NULL, tr_trigger::status, tr_map_trigger(), and TR_STATUS_INACTIVE.
Referenced by db_trigger_status().
int tr_unmap_trigger | ( | TR_TRIGGER * | trigger | ) |
Definition at line 1879 of file trigger_manager.c.
References ASSERT_ERROR_AND_SET, error(), mht_rem(), NO_ERROR, NULL, and tr_trigger::object.
Referenced by tr_drop_trigger_internal().
int tr_update_user_cache | ( | void | ) |
Definition at line 2146 of file trigger_manager.c.
References assert, Au_user, db_get_object(), db_get_set(), DB_IS_NULL, DB_TYPE_OBJECT, DB_VALUE_TYPE, er_errid(), error(), i, insert_trigger_list(), max, NO_ERROR, NULL, obj_get(), set_filter(), set_free(), set_get_element(), set_size(), tr_free_trigger_list(), tr_invalidate_user_cache(), tr_map_trigger(), and tr_User_triggers_valid.
Referenced by register_user_trigger(), run_user_triggers(), tr_has_user_trigger(), tr_set_priority(), and unregister_user_trigger().
int tr_validate_schema_cache | ( | TR_SCHEMA_CACHE * | cache, |
MOP | class_mop | ||
) |
Definition at line 2602 of file trigger_manager.c.
References tr_schema_cache::array_length, ASSERT_ERROR_AND_SET, tr_trigger::class_mop, tr_schema_cache::compiled, er_errid(), ER_HEAP_UNKNOWN_OBJECT, ER_IS_ABORTED_DUE_TO_DEADLOCK, error(), tr_trigger::event, i, insert_trigger_list(), ml_free(), db_objlist::next, NO_ERROR, NULL, tr_schema_cache::objects, db_objlist::op, sm_find_subclass_in_hierarchy(), tr_free_trigger_list(), tr_map_trigger(), tr_validate_schema_cache(), tr_schema_cache::triggers, and ws_mop_compare().
Referenced by get_schema_trigger_objects(), tr_active_schema_cache(), tr_delete_triggers_for_class(), tr_prepare_class(), tr_prepare_statement(), and tr_validate_schema_cache().
Definition at line 2994 of file trigger_manager.c.
References ARG_FILE_LINE, AU_DISABLE, AU_ENABLE, Au_root, db_get_set(), DB_IS_NULL, db_make_object(), db_make_sequence(), db_make_string_copy(), er_errid(), ER_ERROR_SEVERITY, ER_GENERIC_ERROR, er_set(), error(), max, NO_ERROR, NULL, obj_get(), obj_inst_lock(), obj_set(), pr_clear_value(), set_create_sequence(), set_free(), set_put_element(), and set_size().
Referenced by tr_create_trigger().
|
static |
Definition at line 3308 of file trigger_manager.c.
References ARG_FILE_LINE, AU_DISABLE, AU_ENABLE, Au_root, COMPARE_TRIGGER_NAMES, db_get_set(), db_get_string(), DB_IS_NULL, DB_TYPE_STRING, DB_VALUE_TYPE, ER_ERROR_SEVERITY, er_set(), ER_TR_TRIGGER_NOT_FOUND, error(), i, max, NO_ERROR, NULL, obj_get(), obj_inst_lock(), pr_clear_value(), set_drop_seq_element(), set_filter(), set_free(), set_get_element(), and set_size().
Referenced by tr_create_trigger(), and tr_drop_trigger_internal().
Definition at line 3121 of file trigger_manager.c.
References Au_root, COMPARE_TRIGGER_NAMES, db_get_object(), db_get_set(), db_get_string(), DB_IS_NULL, DB_TYPE_OBJECT, DB_TYPE_STRING, DB_VALUE_TYPE, error(), i, max, NO_ERROR, NULL, obj_get(), pr_clear_value(), set_filter(), set_free(), set_get_element(), and set_size().
Referenced by check_semantics(), tr_find_trigger(), and trigger_table_rename().
Definition at line 3208 of file trigger_manager.c.
References ARG_FILE_LINE, assert, AU_DISABLE, AU_ENABLE, Au_root, db_get_object(), db_get_set(), DB_IS_NULL, db_make_string_copy(), DB_TYPE_OBJECT, DB_VALUE_TYPE, er_errid(), ER_ERROR_SEVERITY, er_set(), ER_TR_INTERNAL_ERROR, ER_TR_TRIGGER_EXISTS, ER_TR_TRIGGER_NOT_FOUND, error(), i, max, NO_ERROR, NULL, obj_get(), obj_inst_lock(), pr_clear_value(), set_filter(), set_free(), set_get_element(), set_put_element(), set_size(), and trigger_table_find().
Referenced by tr_rename_trigger().
|
static |
Definition at line 1002 of file trigger_manager.c.
References tr_trigger::action, tr_trigger::attribute, AU_DISABLE, AU_ENABLE, au_fetch_instance_force(), AU_FETCH_READ, tr_trigger::chn, tr_trigger::class_attribute, tr_trigger::class_mop, tr_trigger::comment, tr_trigger::condition, db_find_class(), db_make_float(), db_make_int(), db_make_object(), db_make_string(), db_make_string_copy(), dbt_abort_object(), dbt_create_object_internal(), dbt_finish_object(), dbt_put_internal(), err, error(), tr_trigger::event, LC_FETCH_DIRTY_VERSION, tr_trigger::name, NO_ERROR, NULL, tr_trigger::object, tr_trigger::owner, pr_clear_value(), tr_trigger::priority, tr_activity::source, tr_trigger::status, tr_activity::time, TR_ATT_ACTION, TR_ATT_ACTION_OLD, TR_ATT_ACTION_TIME, TR_ATT_ACTION_TYPE, TR_ATT_ATTRIBUTE, TR_ATT_CLASS, TR_ATT_CLASS_ATTRIBUTE, TR_ATT_COMMENT, TR_ATT_CONDITION, TR_ATT_CONDITION_TIME, TR_ATT_CONDITION_TYPE, TR_ATT_EVENT, TR_ATT_NAME, TR_ATT_OWNER, TR_ATT_PRIORITY, TR_ATT_STATUS, TR_CLASS_NAME, tr_activity::type, and WS_CHN.
Referenced by tr_create_trigger().
|
static |
Definition at line 1988 of file trigger_manager.c.
References AU_DISABLE, AU_ENABLE, Au_user, db_get_set(), DB_IS_NULL, db_make_object(), error(), NO_ERROR, NULL, obj_get(), obj_inst_lock(), tr_trigger::object, remove_trigger_list(), set_drop_element(), set_free(), tr_update_user_cache(), and tr_User_triggers_modified.
Referenced by tr_drop_trigger_internal().
|
static |
Definition at line 1755 of file trigger_manager.c.
References tr_trigger::action, ASSERT_ERROR_AND_SET, au_fetch_instance_force(), AU_FETCH_READ, tr_trigger::chn, compile_trigger_activity(), tr_trigger::condition, er_errid(), ER_IS_ABORTED_DUE_TO_DEADLOCK, error(), NO_ERROR, tr_trigger::object, object_to_trigger(), tr_trigger::status, TM_TRAN_READ_FETCH_VERSION, tr_clear_trigger(), TR_STATUS_INVALID, and WS_CHN.
Referenced by tr_map_trigger().
Definition at line 4518 of file trigger_manager.c.
References db_monetary::amount, db_datetime::date, db_datetimetz::datetime, db_get_bigint(), db_get_date(), db_get_datetime(), db_get_datetimetz(), db_get_double(), db_get_float(), db_get_int(), db_get_monetary(), db_get_short(), db_get_time(), db_get_timestamp(), db_get_timestamptz(), DB_TYPE_BIGINT, DB_TYPE_DATE, DB_TYPE_DATETIME, DB_TYPE_DATETIMELTZ, DB_TYPE_DATETIMETZ, DB_TYPE_DOUBLE, DB_TYPE_FLOAT, DB_TYPE_INTEGER, DB_TYPE_MONETARY, DB_TYPE_NULL, DB_TYPE_SHORT, DB_TYPE_TIME, DB_TYPE_TIMESTAMP, DB_TYPE_TIMESTAMPLTZ, DB_TYPE_TIMESTAMPTZ, DB_VALUE_TYPE, db_datetime::time, and db_timestamptz::timestamp.
Referenced by eval_condition().
|
static |
Definition at line 127 of file trigger_manager.c.
Referenced by compile_trigger_activity().
|
static |
Definition at line 128 of file trigger_manager.c.
Referenced by compile_trigger_activity().
|
static |
Definition at line 118 of file trigger_manager.c.
Referenced by get_reference_names(), and tr_check_correlation().
|
static |
Definition at line 117 of file trigger_manager.c.
Referenced by get_reference_names().
|
static |
Definition at line 119 of file trigger_manager.c.
Referenced by get_reference_names().
const char* TR_ATT_ACTION = "action_definition" |
Definition at line 144 of file trigger_manager.c.
Referenced by define_trigger_classes(), object_to_trigger(), and trigger_to_object().
const char* TR_ATT_ACTION_OLD = "action" |
Definition at line 145 of file trigger_manager.c.
Referenced by object_to_trigger(), and trigger_to_object().
const char* TR_ATT_ACTION_TIME = "action_time" |
Definition at line 143 of file trigger_manager.c.
Referenced by define_trigger_classes(), object_to_trigger(), and trigger_to_object().
const char* TR_ATT_ACTION_TYPE = "action_type" |
Definition at line 142 of file trigger_manager.c.
Referenced by define_trigger_classes(), object_to_trigger(), and trigger_to_object().
const char* TR_ATT_ATTRIBUTE = "target_attribute" |
Definition at line 137 of file trigger_manager.c.
Referenced by define_trigger_classes(), object_to_trigger(), and trigger_to_object().
const char* TR_ATT_CLASS = "target_class" |
Definition at line 136 of file trigger_manager.c.
Referenced by define_trigger_classes(), object_to_trigger(), and trigger_to_object().
const char* TR_ATT_CLASS_ATTRIBUTE = "target_class_attribute" |
Definition at line 138 of file trigger_manager.c.
Referenced by define_trigger_classes(), object_to_trigger(), and trigger_to_object().
const char* TR_ATT_COMMENT = "comment" |
Definition at line 147 of file trigger_manager.c.
Referenced by define_trigger_classes(), object_to_trigger(), tr_set_comment(), and trigger_to_object().
const char* TR_ATT_CONDITION = "condition" |
Definition at line 141 of file trigger_manager.c.
Referenced by define_trigger_classes(), object_to_trigger(), and trigger_to_object().
const char* TR_ATT_CONDITION_TIME = "condition_time" |
Definition at line 140 of file trigger_manager.c.
Referenced by define_trigger_classes(), object_to_trigger(), and trigger_to_object().
const char* TR_ATT_CONDITION_TYPE = "condition_type" |
Definition at line 139 of file trigger_manager.c.
Referenced by define_trigger_classes(), object_to_trigger(), and trigger_to_object().
const char* TR_ATT_EVENT = "event" |
Definition at line 133 of file trigger_manager.c.
Referenced by define_trigger_classes(), object_to_trigger(), and trigger_to_object().
const char* TR_ATT_NAME = "name" |
Definition at line 131 of file trigger_manager.c.
Referenced by define_trigger_classes(), object_to_trigger(), tr_rename_trigger(), and trigger_to_object().
const char* TR_ATT_OWNER = "owner" |
Definition at line 132 of file trigger_manager.c.
Referenced by au_change_trigger_owner(), define_trigger_classes(), object_to_trigger(), and trigger_to_object().
const char* TR_ATT_PRIORITY = "priority" |
Definition at line 135 of file trigger_manager.c.
Referenced by define_trigger_classes(), object_to_trigger(), tr_set_priority(), and trigger_to_object().
const char* TR_ATT_PROPERTIES = "properties" |
Definition at line 146 of file trigger_manager.c.
const char* TR_ATT_STATUS = "status" |
Definition at line 134 of file trigger_manager.c.
Referenced by define_trigger_classes(), object_to_trigger(), tr_delete_schema_cache(), tr_set_status(), and trigger_to_object().
const char* TR_CLASS_NAME = "db_trigger" |
Definition at line 130 of file trigger_manager.c.
Referenced by boot_define_view_trigger(), define_trigger_classes(), tr_get_class_name(), tr_is_trigger(), and trigger_to_object().
int tr_Current_depth = 0 |
Definition at line 149 of file trigger_manager.c.
Referenced by check_merge_trigger(), check_trigger(), eval_action(), start_state(), tr_finish(), and tr_init().
TR_DEFERRED_CONTEXT* tr_Deferred_activities = NULL |
Definition at line 158 of file trigger_manager.c.
TR_DEFERRED_CONTEXT* tr_Deferred_activities_tail = NULL |
Definition at line 159 of file trigger_manager.c.
Referenced by add_deferred_activities(), add_deferred_activity_context(), and remove_deferred_context().
|
static |
Definition at line 115 of file trigger_manager.c.
Referenced by tr_init().
|
static |
Definition at line 172 of file trigger_manager.c.
Referenced by tr_get_execution_state(), and tr_set_execution_state().
bool tr_Invalid_transaction = false |
Definition at line 153 of file trigger_manager.c.
Referenced by eval_action(), tr_check_abort_triggers(), tr_check_commit_triggers(), tr_check_rollback_triggers(), and tr_init().
char tr_Invalid_transaction_trigger[SM_MAX_IDENTIFIER_LENGTH+2] |
Definition at line 154 of file trigger_manager.c.
Referenced by eval_action(), tr_check_commit_triggers(), and tr_init().
int tr_Maximum_depth = TR_MAX_RECURSION_LEVEL |
Definition at line 150 of file trigger_manager.c.
Referenced by start_state(), tr_get_depth(), tr_init(), and tr_set_depth().
Definition at line 184 of file trigger_manager.c.
|
static |
Definition at line 103 of file trigger_manager.c.
Referenced by execute_activity(), run_user_triggers(), tr_execute_activities(), and tr_execute_deferred_activities().
|
static |
Definition at line 104 of file trigger_manager.c.
Referenced by execute_activity().
|
static |
Definition at line 105 of file trigger_manager.c.
Referenced by execute_activity(), run_user_triggers(), tr_execute_activities(), and tr_execute_deferred_activities().
|
static |
Definition at line 166 of file trigger_manager.c.
Referenced by tr_make_schema_cache().
OID tr_Stack[TR_MAX_RECURSION_LEVEL+1] |
Definition at line 151 of file trigger_manager.c.
bool tr_Trace = true |
Definition at line 156 of file trigger_manager.c.
Referenced by eval_action(), eval_condition(), tr_get_trace(), tr_init(), and tr_set_trace().
|
static |
Definition at line 165 of file trigger_manager.c.
|
static |
Definition at line 163 of file trigger_manager.c.
|
static |
Definition at line 162 of file trigger_manager.c.
Referenced by register_user_trigger(), tr_check_commit_triggers(), tr_check_rollback_triggers(), tr_init(), and unregister_user_trigger().
|
static |
Definition at line 161 of file trigger_manager.c.
Referenced by run_user_triggers(), tr_check_rollback_triggers(), tr_has_user_trigger(), tr_init(), and tr_update_user_cache().