mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
RBR triggers enabling in 10.1
This commit is contained in:
@@ -916,6 +916,15 @@ The following options may be given as the first argument:
|
||||
replication domains. Note that these threads are in
|
||||
addition to the IO and SQL threads, which are always
|
||||
created by a replication slave
|
||||
--slave-run-triggers-for-rbr=name
|
||||
Modes for how triggers in row-base replication on slave
|
||||
side will be executed. Legal values are NO (default), YES
|
||||
and LOGGING. NO means that trigger for RBR will not be
|
||||
running on slave. YES and LOGGING means that triggers
|
||||
will be running on slave, if there was not triggers
|
||||
running on the master for the statement. LOGGING also
|
||||
means results of that the executed triggers work will be
|
||||
written to the binlog.
|
||||
--slave-skip-errors=name
|
||||
Tells the slave thread to continue replication when a
|
||||
query event returns an error from the provided list
|
||||
@@ -1315,6 +1324,7 @@ slave-max-allowed-packet 1073741824
|
||||
slave-net-timeout 3600
|
||||
slave-parallel-max-queued 131072
|
||||
slave-parallel-threads 0
|
||||
slave-run-triggers-for-rbr NO
|
||||
slave-skip-errors (No default value)
|
||||
slave-sql-verify-checksum TRUE
|
||||
slave-transaction-retries 10
|
||||
|
@@ -9510,12 +9510,10 @@ int Rows_log_event::do_add_row_data(uchar *row_data, size_t length)
|
||||
*/
|
||||
static void restore_empty_query_table_list(LEX *lex)
|
||||
{
|
||||
#ifdef RBR_TRIGGERS
|
||||
if (lex->first_not_own_table())
|
||||
(*lex->first_not_own_table()->prev_global)= NULL;
|
||||
lex->query_tables= NULL;
|
||||
lex->query_tables_last= &lex->query_tables;
|
||||
#endif //RBR_TRIGGERS
|
||||
}
|
||||
|
||||
|
||||
@@ -10074,7 +10072,7 @@ Rows_log_event::do_update_pos(rpl_group_info *rgi)
|
||||
DBUG_RETURN(error);
|
||||
}
|
||||
|
||||
#endif //defined(MYSQL_SERVER) && defined(HAVE_REPLICATION)
|
||||
#endif /* !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION) */
|
||||
|
||||
#ifndef MYSQL_CLIENT
|
||||
bool Rows_log_event::write_data_header(IO_CACHE *file)
|
||||
@@ -10426,10 +10424,8 @@ Table_map_log_event::Table_map_log_event(THD *thd, TABLE *tbl, ulong tid,
|
||||
DBUG_ASSERT(static_cast<size_t>(cbuf_end - cbuf) <= sizeof(cbuf));
|
||||
m_data_size+= (cbuf_end - cbuf) + m_colcnt; // COLCNT and column types
|
||||
|
||||
#ifdef RBR_TRIGGERS
|
||||
if (tbl->triggers)
|
||||
m_flags|= TM_BIT_HAS_TRIGGERS_F;
|
||||
#endif //RBR_TRIGGERS
|
||||
|
||||
/* If malloc fails, caught in is_valid() */
|
||||
if ((m_memory= (uchar*) my_malloc(m_colcnt, MYF(MY_WME))))
|
||||
@@ -10841,11 +10837,9 @@ int Table_map_log_event::do_apply_event(rpl_group_info *rgi)
|
||||
|
||||
DBUG_PRINT("debug", ("table: %s is mapped to %u", table_list->table_name,
|
||||
table_list->table_id));
|
||||
#ifdef RBR_TRIGGERS
|
||||
table_list->master_had_triggers= ((m_flags & TM_BIT_HAS_TRIGGERS_F) ? 1 : 0);
|
||||
DBUG_PRINT("debug", ("table->master_had_triggers=%d",
|
||||
(int)table_list->master_had_triggers));
|
||||
#endif //RBR_TRIGGERS
|
||||
|
||||
enum_tbl_map_status tblmap_status= check_table_map(rgi, table_list);
|
||||
if (tblmap_status == OK_TO_PROCESS)
|
||||
@@ -11196,7 +11190,6 @@ bool Rows_log_event::process_triggers(trg_event_type event,
|
||||
trg_action_time_type time_type,
|
||||
bool old_row_is_record1)
|
||||
{
|
||||
#ifdef RBR_TRIGGERS
|
||||
bool result;
|
||||
DBUG_ENTER("Rows_log_event::process_triggers");
|
||||
if (slave_run_triggers_for_rbr == SLAVE_RUN_TRIGGERS_FOR_RBR_YES)
|
||||
@@ -11211,9 +11204,6 @@ bool Rows_log_event::process_triggers(trg_event_type event,
|
||||
time_type, old_row_is_record1);
|
||||
|
||||
DBUG_RETURN(result);
|
||||
#else
|
||||
return TRUE;
|
||||
#endif //RBR_TRIGGERS
|
||||
}
|
||||
/*
|
||||
Check if there are more UNIQUE keys after the given key.
|
||||
@@ -12186,10 +12176,8 @@ Delete_rows_log_event::do_before_row_operations(const Slave_reporting_capability
|
||||
*/
|
||||
return 0;
|
||||
}
|
||||
#ifdef RBR_TRIGGERS
|
||||
if (slave_run_triggers_for_rbr && !master_had_triggers)
|
||||
m_table->prepare_triggers_for_delete_stmt_or_event();
|
||||
#endif //RBR_TRIGGERS
|
||||
|
||||
return find_key();
|
||||
}
|
||||
|
@@ -486,9 +486,7 @@ ulong open_files_limit, max_binlog_size;
|
||||
ulong slave_trans_retries;
|
||||
uint slave_net_timeout;
|
||||
ulong slave_exec_mode_options;
|
||||
#ifdef RBR_TRIGGERS
|
||||
ulong slave_run_triggers_for_rbr= 0;
|
||||
#endif //RBR_TRIGGERS
|
||||
ulong slave_ddl_exec_mode_options= SLAVE_EXEC_MODE_IDEMPOTENT;
|
||||
ulonglong slave_type_conversions_options;
|
||||
ulong thread_cache_size=0;
|
||||
|
@@ -98,11 +98,7 @@ extern my_bool opt_safe_show_db, opt_local_infile, opt_myisam_use_mmap;
|
||||
extern my_bool opt_slave_compressed_protocol, use_temp_pool;
|
||||
extern ulong slave_exec_mode_options, slave_ddl_exec_mode_options;
|
||||
extern ulong slave_retried_transactions;
|
||||
#ifdef RBR_TRIGGERS
|
||||
extern ulong slave_run_triggers_for_rbr;
|
||||
#else
|
||||
#define slave_run_triggers_for_rbr 0
|
||||
#endif //RBR_TRIGGERS
|
||||
extern ulonglong slave_type_conversions_options;
|
||||
extern my_bool read_only, opt_readonly;
|
||||
extern my_bool lower_case_file_system;
|
||||
|
@@ -2700,7 +2700,6 @@ static Sys_var_enum Slave_ddl_exec_mode(
|
||||
GLOBAL_VAR(slave_ddl_exec_mode_options), CMD_LINE(REQUIRED_ARG),
|
||||
slave_exec_mode_names, DEFAULT(SLAVE_EXEC_MODE_IDEMPOTENT));
|
||||
|
||||
#ifdef RBR_TRIGGERS
|
||||
static const char *slave_run_triggers_for_rbr_names[]=
|
||||
{"NO", "YES", "LOGGING", 0};
|
||||
static Sys_var_enum Slave_run_triggers_for_rbr(
|
||||
@@ -2715,7 +2714,6 @@ static Sys_var_enum Slave_run_triggers_for_rbr(
|
||||
GLOBAL_VAR(slave_run_triggers_for_rbr), CMD_LINE(REQUIRED_ARG),
|
||||
slave_run_triggers_for_rbr_names,
|
||||
DEFAULT(SLAVE_RUN_TRIGGERS_FOR_RBR_NO));
|
||||
#endif //RBR_TRIGGERS
|
||||
|
||||
static const char *slave_type_conversions_name[]= {"ALL_LOSSY", "ALL_NON_LOSSY", 0};
|
||||
static Sys_var_set Slave_type_conversions(
|
||||
|
Reference in New Issue
Block a user