Loading mysql-test/r/binlog_row_drop_tmp_tbl.result +0 −2 Original line number Diff line number Diff line Loading @@ -14,7 +14,5 @@ get_lock("a",10) show binlog events; Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Format_desc 1 # Server ver: VERSION, Binlog ver: 4 master-bin.000001 # Table_map 1 # table_id: # (mysql.proc) master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F master-bin.000001 # Query 1 # create database `drop-temp+table-test` drop database `drop-temp+table-test`; mysql-test/r/rpl_row_log.result +3 −7 Original line number Diff line number Diff line Loading @@ -57,8 +57,6 @@ master-bin.000001 # Rotate 1 # master-bin.000002;pos=4 show binlog events in 'master-bin.000002'; Log_name Pos Event_type Server_id End_log_pos Info master-bin.000002 # Format_desc 1 # Server ver: VERSION, Binlog ver: 4 master-bin.000002 # Table_map 1 # table_id: # (mysql.slow_log) master-bin.000002 # Table_map 1 # table_id: # (mysql.general_log) master-bin.000002 # Query 1 # use `test`; create table t3 (a int)ENGINE=MyISAM master-bin.000002 # Query 1 # use `test`; create table t2 (n int)ENGINE=MyISAM master-bin.000002 # Table_map 1 # table_id: # (test.t2) Loading @@ -66,12 +64,12 @@ master-bin.000002 # Write_rows 1 # table_id: # flags: STMT_END_F show binary logs; Log_name File_size master-bin.000001 1256 master-bin.000002 483 master-bin.000002 373 start slave; show binary logs; Log_name File_size slave-bin.000001 1354 slave-bin.000002 384 slave-bin.000002 274 show binlog events in 'slave-bin.000001' from 4; Log_name Pos Event_type Server_id End_log_pos Info slave-bin.000001 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4 Loading @@ -87,14 +85,12 @@ slave-bin.000001 # Rotate 2 # slave-bin.000002;pos=4 show binlog events in 'slave-bin.000002' from 4; Log_name Pos Event_type Server_id End_log_pos Info slave-bin.000002 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4 slave-bin.000002 # Table_map 2 # table_id: # (mysql.slow_log) slave-bin.000002 # Table_map 2 # table_id: # (mysql.general_log) slave-bin.000002 # Query 1 # use `test`; create table t2 (n int)ENGINE=MyISAM slave-bin.000002 # Table_map 1 # table_id: # (test.t2) slave-bin.000002 # Write_rows 1 # table_id: # flags: STMT_END_F show slave status; Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master # 127.0.0.1 root MASTER_PORT 1 master-bin.000002 483 # # master-bin.000002 Yes Yes # 0 0 483 # None 0 No # # 127.0.0.1 root MASTER_PORT 1 master-bin.000002 373 # # master-bin.000002 Yes Yes # 0 0 373 # None 0 No # show binlog events in 'slave-bin.000005' from 4; ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log DROP TABLE t1; Loading mysql-test/r/rpl_row_log_innodb.result +3 −7 Original line number Diff line number Diff line Loading @@ -61,8 +61,6 @@ master-bin.000001 # Rotate 1 # master-bin.000002;pos=4 show binlog events in 'master-bin.000002'; Log_name Pos Event_type Server_id End_log_pos Info master-bin.000002 # Format_desc 1 # Server ver: VERSION, Binlog ver: 4 master-bin.000002 # Table_map 1 # table_id: # (mysql.slow_log) master-bin.000002 # Table_map 1 # table_id: # (mysql.general_log) master-bin.000002 # Query 1 # use `test`; create table t3 (a int)ENGINE=InnoDB master-bin.000002 # Query 1 # use `test`; create table t2 (n int)ENGINE=InnoDB master-bin.000002 # Table_map 1 # table_id: # (test.t2) Loading @@ -71,12 +69,12 @@ master-bin.000002 # Xid 1 # COMMIT /* XID */ show binary logs; Log_name File_size master-bin.000001 1310 master-bin.000002 510 master-bin.000002 400 start slave; show binary logs; Log_name File_size slave-bin.000001 1408 slave-bin.000002 411 slave-bin.000002 301 show binlog events in 'slave-bin.000001' from 4; Log_name Pos Event_type Server_id End_log_pos Info slave-bin.000001 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4 Loading @@ -94,15 +92,13 @@ slave-bin.000001 # Rotate 2 # slave-bin.000002;pos=4 show binlog events in 'slave-bin.000002' from 4; Log_name Pos Event_type Server_id End_log_pos Info slave-bin.000002 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4 slave-bin.000002 # Table_map 2 # table_id: # (mysql.slow_log) slave-bin.000002 # Table_map 2 # table_id: # (mysql.general_log) slave-bin.000002 # Query 1 # use `test`; create table t2 (n int)ENGINE=InnoDB slave-bin.000002 # Table_map 1 # table_id: # (test.t2) slave-bin.000002 # Write_rows 1 # table_id: # flags: STMT_END_F slave-bin.000002 # Xid 1 # COMMIT /* XID */ show slave status; Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master # 127.0.0.1 root MASTER_PORT 1 master-bin.000002 510 # # master-bin.000002 Yes Yes # 0 0 510 # None 0 No # # 127.0.0.1 root MASTER_PORT 1 master-bin.000002 400 # # master-bin.000002 Yes Yes # 0 0 400 # None 0 No # show binlog events in 'slave-bin.000005' from 4; ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log DROP TABLE t1; Loading mysql-test/r/rpl_row_max_relay_size.result +1 −1 Original line number Diff line number Diff line Loading @@ -58,4 +58,4 @@ Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File flush logs; show master status; File Position Binlog_Do_DB Binlog_Ignore_DB master-bin.000002 212 <Binlog_Ignore_DB> master-bin.000002 102 <Binlog_Ignore_DB> sql/handler.cc +35 −4 Original line number Diff line number Diff line Loading @@ -3150,16 +3150,47 @@ bool ha_show_status(THD *thd, handlerton *db_type, enum ha_stat_type stat) declared static, but it works by putting it into an anonymous namespace. */ namespace { struct st_table_data { char const *db; char const *name; }; int table_name_compare(void const *a, void const *b) { st_table_data const *x = (st_table_data const*) a; st_table_data const *y = (st_table_data const*) b; /* Doing lexical compare in order (db,name) */ int const res= strcmp(x->db, y->db); return res != 0 ? res : strcmp(x->name, y->name); } bool check_table_binlog_row_based(THD *thd, TABLE *table) { static st_table_data const ignore[] = { { "mysql", "event" }, { "mysql", "general_log" }, { "mysql", "slow_log" } }; my_size_t const ignore_size = sizeof(ignore)/sizeof(*ignore); st_table_data const item = { table->s->db.str, table->s->table_name.str }; if (table->s->cached_row_logging_check == -1) table->s->cached_row_logging_check= (table->s->tmp_table == NO_TMP_TABLE) && binlog_filter->db_ok(table->s->db.str) && bsearch(&item, ignore, ignore_size, sizeof(st_table_data), table_name_compare) == NULL; DBUG_ASSERT(table->s->cached_row_logging_check == 0 || table->s->cached_row_logging_check == 1); return thd->current_stmt_binlog_row_based && thd && (thd->options & OPTION_BIN_LOG) && (table->s->tmp_table == NO_TMP_TABLE) && mysql_bin_log.is_open() && binlog_filter->db_ok(table->s->db.str) && (strcmp(table->s->db.str, "mysql") || strcmp(table->s->table_name.str, "event")); table->s->cached_row_logging_check; } } Loading Loading
mysql-test/r/binlog_row_drop_tmp_tbl.result +0 −2 Original line number Diff line number Diff line Loading @@ -14,7 +14,5 @@ get_lock("a",10) show binlog events; Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Format_desc 1 # Server ver: VERSION, Binlog ver: 4 master-bin.000001 # Table_map 1 # table_id: # (mysql.proc) master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F master-bin.000001 # Query 1 # create database `drop-temp+table-test` drop database `drop-temp+table-test`;
mysql-test/r/rpl_row_log.result +3 −7 Original line number Diff line number Diff line Loading @@ -57,8 +57,6 @@ master-bin.000001 # Rotate 1 # master-bin.000002;pos=4 show binlog events in 'master-bin.000002'; Log_name Pos Event_type Server_id End_log_pos Info master-bin.000002 # Format_desc 1 # Server ver: VERSION, Binlog ver: 4 master-bin.000002 # Table_map 1 # table_id: # (mysql.slow_log) master-bin.000002 # Table_map 1 # table_id: # (mysql.general_log) master-bin.000002 # Query 1 # use `test`; create table t3 (a int)ENGINE=MyISAM master-bin.000002 # Query 1 # use `test`; create table t2 (n int)ENGINE=MyISAM master-bin.000002 # Table_map 1 # table_id: # (test.t2) Loading @@ -66,12 +64,12 @@ master-bin.000002 # Write_rows 1 # table_id: # flags: STMT_END_F show binary logs; Log_name File_size master-bin.000001 1256 master-bin.000002 483 master-bin.000002 373 start slave; show binary logs; Log_name File_size slave-bin.000001 1354 slave-bin.000002 384 slave-bin.000002 274 show binlog events in 'slave-bin.000001' from 4; Log_name Pos Event_type Server_id End_log_pos Info slave-bin.000001 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4 Loading @@ -87,14 +85,12 @@ slave-bin.000001 # Rotate 2 # slave-bin.000002;pos=4 show binlog events in 'slave-bin.000002' from 4; Log_name Pos Event_type Server_id End_log_pos Info slave-bin.000002 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4 slave-bin.000002 # Table_map 2 # table_id: # (mysql.slow_log) slave-bin.000002 # Table_map 2 # table_id: # (mysql.general_log) slave-bin.000002 # Query 1 # use `test`; create table t2 (n int)ENGINE=MyISAM slave-bin.000002 # Table_map 1 # table_id: # (test.t2) slave-bin.000002 # Write_rows 1 # table_id: # flags: STMT_END_F show slave status; Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master # 127.0.0.1 root MASTER_PORT 1 master-bin.000002 483 # # master-bin.000002 Yes Yes # 0 0 483 # None 0 No # # 127.0.0.1 root MASTER_PORT 1 master-bin.000002 373 # # master-bin.000002 Yes Yes # 0 0 373 # None 0 No # show binlog events in 'slave-bin.000005' from 4; ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log DROP TABLE t1; Loading
mysql-test/r/rpl_row_log_innodb.result +3 −7 Original line number Diff line number Diff line Loading @@ -61,8 +61,6 @@ master-bin.000001 # Rotate 1 # master-bin.000002;pos=4 show binlog events in 'master-bin.000002'; Log_name Pos Event_type Server_id End_log_pos Info master-bin.000002 # Format_desc 1 # Server ver: VERSION, Binlog ver: 4 master-bin.000002 # Table_map 1 # table_id: # (mysql.slow_log) master-bin.000002 # Table_map 1 # table_id: # (mysql.general_log) master-bin.000002 # Query 1 # use `test`; create table t3 (a int)ENGINE=InnoDB master-bin.000002 # Query 1 # use `test`; create table t2 (n int)ENGINE=InnoDB master-bin.000002 # Table_map 1 # table_id: # (test.t2) Loading @@ -71,12 +69,12 @@ master-bin.000002 # Xid 1 # COMMIT /* XID */ show binary logs; Log_name File_size master-bin.000001 1310 master-bin.000002 510 master-bin.000002 400 start slave; show binary logs; Log_name File_size slave-bin.000001 1408 slave-bin.000002 411 slave-bin.000002 301 show binlog events in 'slave-bin.000001' from 4; Log_name Pos Event_type Server_id End_log_pos Info slave-bin.000001 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4 Loading @@ -94,15 +92,13 @@ slave-bin.000001 # Rotate 2 # slave-bin.000002;pos=4 show binlog events in 'slave-bin.000002' from 4; Log_name Pos Event_type Server_id End_log_pos Info slave-bin.000002 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4 slave-bin.000002 # Table_map 2 # table_id: # (mysql.slow_log) slave-bin.000002 # Table_map 2 # table_id: # (mysql.general_log) slave-bin.000002 # Query 1 # use `test`; create table t2 (n int)ENGINE=InnoDB slave-bin.000002 # Table_map 1 # table_id: # (test.t2) slave-bin.000002 # Write_rows 1 # table_id: # flags: STMT_END_F slave-bin.000002 # Xid 1 # COMMIT /* XID */ show slave status; Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master # 127.0.0.1 root MASTER_PORT 1 master-bin.000002 510 # # master-bin.000002 Yes Yes # 0 0 510 # None 0 No # # 127.0.0.1 root MASTER_PORT 1 master-bin.000002 400 # # master-bin.000002 Yes Yes # 0 0 400 # None 0 No # show binlog events in 'slave-bin.000005' from 4; ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log DROP TABLE t1; Loading
mysql-test/r/rpl_row_max_relay_size.result +1 −1 Original line number Diff line number Diff line Loading @@ -58,4 +58,4 @@ Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File flush logs; show master status; File Position Binlog_Do_DB Binlog_Ignore_DB master-bin.000002 212 <Binlog_Ignore_DB> master-bin.000002 102 <Binlog_Ignore_DB>
sql/handler.cc +35 −4 Original line number Diff line number Diff line Loading @@ -3150,16 +3150,47 @@ bool ha_show_status(THD *thd, handlerton *db_type, enum ha_stat_type stat) declared static, but it works by putting it into an anonymous namespace. */ namespace { struct st_table_data { char const *db; char const *name; }; int table_name_compare(void const *a, void const *b) { st_table_data const *x = (st_table_data const*) a; st_table_data const *y = (st_table_data const*) b; /* Doing lexical compare in order (db,name) */ int const res= strcmp(x->db, y->db); return res != 0 ? res : strcmp(x->name, y->name); } bool check_table_binlog_row_based(THD *thd, TABLE *table) { static st_table_data const ignore[] = { { "mysql", "event" }, { "mysql", "general_log" }, { "mysql", "slow_log" } }; my_size_t const ignore_size = sizeof(ignore)/sizeof(*ignore); st_table_data const item = { table->s->db.str, table->s->table_name.str }; if (table->s->cached_row_logging_check == -1) table->s->cached_row_logging_check= (table->s->tmp_table == NO_TMP_TABLE) && binlog_filter->db_ok(table->s->db.str) && bsearch(&item, ignore, ignore_size, sizeof(st_table_data), table_name_compare) == NULL; DBUG_ASSERT(table->s->cached_row_logging_check == 0 || table->s->cached_row_logging_check == 1); return thd->current_stmt_binlog_row_based && thd && (thd->options & OPTION_BIN_LOG) && (table->s->tmp_table == NO_TMP_TABLE) && mysql_bin_log.is_open() && binlog_filter->db_ok(table->s->db.str) && (strcmp(table->s->db.str, "mysql") || strcmp(table->s->table_name.str, "event")); table->s->cached_row_logging_check; } } Loading