Commit 01046e7f authored by Oleksandr Byelkin's avatar Oleksandr Byelkin

RBR triggers enabling in 10.1

parent 4ee6bf22
......@@ -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(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment