diff --git a/mysql-test/r/mysqld--help.result b/mysql-test/r/mysqld--help.result index fbb1ec4b0a9..5a2142c402c 100644 --- a/mysql-test/r/mysqld--help.result +++ b/mysql-test/r/mysqld--help.result @@ -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 diff --git a/sql/log_event.cc b/sql/log_event.cc index 9846bade696..6a85893803e 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -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(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(); } diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 1817d1cca9d..066dae224eb 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -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; diff --git a/sql/mysqld.h b/sql/mysqld.h index 6bd111bd3f6..a1656a49047 100644 --- a/sql/mysqld.h +++ b/sql/mysqld.h @@ -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; diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc index 913ae9d4d4f..9495d16247d 100644 --- a/sql/sys_vars.cc +++ b/sql/sys_vars.cc @@ -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(