diff --git a/mysql-test/r/mysqld--help.result b/mysql-test/r/mysqld--help.result index c123d305bc7..5e37fde47a7 100644 --- a/mysql-test/r/mysqld--help.result +++ b/mysql-test/r/mysqld--help.result @@ -1301,7 +1301,6 @@ 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 f1389c36f5c..e1f48bf9a4e 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -9486,10 +9486,12 @@ 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 } @@ -10043,7 +10045,7 @@ Rows_log_event::do_update_pos(rpl_group_info *rgi) DBUG_RETURN(error); } -#endif /* !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION) */ +#endif //defined(MYSQL_SERVER) && defined(HAVE_REPLICATION) #ifndef MYSQL_CLIENT bool Rows_log_event::write_data_header(IO_CACHE *file) @@ -10395,8 +10397,10 @@ 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)))) @@ -10805,7 +10809,9 @@ int Table_map_log_event::do_apply_event(rpl_group_info *rgi) table_list->table_id= DBUG_EVALUATE_IF("inject_tblmap_same_id_maps_diff_table", 0, m_table_id); table_list->updating= 1; table_list->required_type= FRMTYPE_TABLE; +#ifdef RBR_TRIGGERS table_list->master_had_triggers= ((m_flags & TM_BIT_HAS_TRIGGERS_F) ? 1 : 0); +#endif //RBR_TRIGGERS DBUG_PRINT("debug", ("table: %s is mapped to %u%s", table_list->table_name, table_list->table_id, (table_list->master_had_triggers ? @@ -11127,6 +11133,7 @@ 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) @@ -11141,6 +11148,9 @@ 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. @@ -12107,8 +12117,10 @@ 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/log_event.h b/sql/log_event.h index dc6afb10a6d..06da034dc58 100644 --- a/sql/log_event.h +++ b/sql/log_event.h @@ -4340,7 +4340,7 @@ protected: bool process_triggers(trg_event_type event, trg_action_time_type time_type, bool old_row_is_record1); -#endif +#endif //defined(MYSQL_SERVER) && defined(HAVE_REPLICATION) private: diff --git a/sql/mysqld.cc b/sql/mysqld.cc index de461be524d..bf38937979c 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -479,7 +479,9 @@ 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 aaf8837868e..0e3af959122 100644 --- a/sql/mysqld.h +++ b/sql/mysqld.h @@ -98,7 +98,11 @@ 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 474362b5628..520e4c21468 100644 --- a/sql/sys_vars.cc +++ b/sql/sys_vars.cc @@ -2737,6 +2737,7 @@ 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( @@ -2751,6 +2752,7 @@ 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(