diff options
-rw-r--r-- | mysql-test/extra/rpl_tests/type_conversions.test | 146 | ||||
-rw-r--r-- | mysql-test/suite/binlog/r/binlog_format_switch_inside_trans.result | 90 | ||||
-rw-r--r-- | mysql-test/suite/binlog/r/binlog_innodb.result | 4 | ||||
-rw-r--r-- | mysql-test/suite/binlog/r/binlog_mix_innodb_stat.result | 4 | ||||
-rw-r--r-- | mysql-test/suite/binlog/r/binlog_row_innodb_stat.result | 4 | ||||
-rw-r--r-- | mysql-test/suite/binlog/r/binlog_stm_innodb_stat.result | 4 | ||||
-rw-r--r-- | mysql-test/suite/binlog/t/binlog_format_switch_inside_trans.test | 98 | ||||
-rw-r--r-- | mysql-test/suite/rpl/r/rpl_mixed_mixing_engines.result | 92 | ||||
-rw-r--r-- | mysql-test/suite/rpl/r/rpl_row_mixing_engines.result | 92 | ||||
-rw-r--r-- | mysql-test/suite/rpl/r/rpl_typeconv.result | 76 | ||||
-rw-r--r-- | sql/log.cc | 3 | ||||
-rw-r--r-- | sql/rpl_utility.cc | 12 | ||||
-rw-r--r-- | sql/set_var.cc | 8 | ||||
-rw-r--r-- | sql/share/errmsg-utf8.txt | 3 | ||||
-rw-r--r-- | sql/share/errmsg.txt | 2 |
15 files changed, 534 insertions, 104 deletions
diff --git a/mysql-test/extra/rpl_tests/type_conversions.test b/mysql-test/extra/rpl_tests/type_conversions.test index 6e52da59201..731eef8f41e 100644 --- a/mysql-test/extra/rpl_tests/type_conversions.test +++ b/mysql-test/extra/rpl_tests/type_conversions.test @@ -12,6 +12,149 @@ connection slave; let $if_is_lossy = `SELECT FIND_IN_SET('ALL_LOSSY', @@SLAVE_TYPE_CONVERSIONS)`; let $if_is_non_lossy = `SELECT FIND_IN_SET('ALL_NON_LOSSY', @@SLAVE_TYPE_CONVERSIONS)`; +# TINYBLOB + +let $source_type = TINYBLOB; +let $target_type = TINYBLOB; +let $source_value = 'aaa'; +let $target_value = 'aaa'; +let $can_convert = 1; +source extra/rpl_tests/check_type.inc; + +let $source_type= TINYBLOB; +let $target_type= BLOB; +let $source_value= 'aaa'; +let $target_value= 'aaa'; +let $can_convert= $if_is_non_lossy; +source extra/rpl_tests/check_type.inc; + +let $source_type= TINYBLOB; +let $target_type= MEDIUMBLOB; +let $source_value= 'aaa'; +let $target_value= 'aaa'; +let $can_convert= $if_is_non_lossy; +source extra/rpl_tests/check_type.inc; + +let $source_type= TINYBLOB; +let $target_type= LONGBLOB; +let $source_value= 'aaa'; +let $target_value= 'aaa'; +let $can_convert= $if_is_non_lossy; +source extra/rpl_tests/check_type.inc; + +# BLOB + +let $source_type = BLOB; +let $target_type = TINYBLOB; +let $source_value = 'aaa'; +let $target_value = 'aaa'; +let $can_convert = $if_is_lossy; +source extra/rpl_tests/check_type.inc; + +let $source_type= BLOB; +let $target_type= BLOB; +let $source_value= 'aaa'; +let $target_value= 'aaa'; +let $can_convert= 1; +source extra/rpl_tests/check_type.inc; + +let $source_type= BLOB; +let $target_type= MEDIUMBLOB; +let $source_value= 'aaa'; +let $target_value= 'aaa'; +let $can_convert= $if_is_non_lossy; +source extra/rpl_tests/check_type.inc; + +let $source_type= BLOB; +let $target_type= LONGBLOB; +let $source_value= 'aaa'; +let $target_value= 'aaa'; +let $can_convert= $if_is_non_lossy; +source extra/rpl_tests/check_type.inc; + +# MEDIUMBLOB + +let $source_type = MEDIUMBLOB; +let $target_type = TINYBLOB; +let $source_value = 'aaa'; +let $target_value = 'aaa'; +let $can_convert = $if_is_lossy; +source extra/rpl_tests/check_type.inc; + +let $source_type= MEDIUMBLOB; +let $target_type= BLOB; +let $source_value= 'aaa'; +let $target_value= 'aaa'; +let $can_convert= $if_is_lossy; +source extra/rpl_tests/check_type.inc; + +let $source_type= MEDIUMBLOB; +let $target_type= MEDIUMBLOB; +let $source_value= 'aaa'; +let $target_value= 'aaa'; +let $can_convert= 1; +source extra/rpl_tests/check_type.inc; + +let $source_type= MEDIUMBLOB; +let $target_type= LONGBLOB; +let $source_value= 'aaa'; +let $target_value= 'aaa'; +let $can_convert= $if_is_non_lossy; +source extra/rpl_tests/check_type.inc; + +# LONGBLOB + +let $source_type = LONGBLOB; +let $target_type = TINYBLOB; +let $source_value = 'aaa'; +let $target_value = 'aaa'; +let $can_convert = $if_is_lossy; +source extra/rpl_tests/check_type.inc; + +let $source_type= LONGBLOB; +let $target_type= BLOB; +let $source_value= 'aaa'; +let $target_value= 'aaa'; +let $can_convert= $if_is_lossy; +source extra/rpl_tests/check_type.inc; + +let $source_type= LONGBLOB; +let $target_type= MEDIUMBLOB; +let $source_value= 'aaa'; +let $target_value= 'aaa'; +let $can_convert= $if_is_lossy; +source extra/rpl_tests/check_type.inc; + +let $source_type= LONGBLOB; +let $target_type= LONGBLOB; +let $source_value= 'aaa'; +let $target_value= 'aaa'; +let $can_convert= 1; +source extra/rpl_tests/check_type.inc; + +# BUG#49836 (additional tests - GEOMETRY TYPE) + +let $source_type = GEOMETRY; +let $target_type = BLOB; +let $source_value = PointFromText('POINT(10 10)'); +let $target_value = PointFromText('POINT(10 10)'); +let $can_convert = 0; +source extra/rpl_tests/check_type.inc; + +let $source_type = BLOB; +let $target_type = GEOMETRY; +let $source_value = 'aaa'; +let $target_value = 'aaa'; +let $can_convert = 0; +source extra/rpl_tests/check_type.inc; + +let $source_type = GEOMETRY; +let $target_type = GEOMETRY; +let $source_value = PointFromText('POINT(10 10)'); +let $target_value = PointFromText('POINT(10 10)'); +let $can_convert = 1; +source extra/rpl_tests/check_type.inc; + let $source_type = BIT(1); let $target_type = BIT(1); let $source_value = b'1'; @@ -732,7 +875,8 @@ let $target_value= b'11111'; let $can_convert = $if_is_lossy; source extra/rpl_tests/check_type.inc; + disable_warnings; source include/reset_master_and_slave.inc; enable_warnings; -enable_query_log;
\ No newline at end of file +enable_query_log; diff --git a/mysql-test/suite/binlog/r/binlog_format_switch_inside_trans.result b/mysql-test/suite/binlog/r/binlog_format_switch_inside_trans.result new file mode 100644 index 00000000000..c1e900053e4 --- /dev/null +++ b/mysql-test/suite/binlog/r/binlog_format_switch_inside_trans.result @@ -0,0 +1,90 @@ +set @save_binlog_format= @@global.binlog_format; +create table t1 (a int) engine= myisam; +create table t2 (a int) engine= innodb; +SELECT @@session.binlog_format; +@@session.binlog_format +ROW +SET AUTOCOMMIT=1; +# Test that the session variable 'binlog_format' +# is writable outside a transaction. +set @@session.binlog_format= statement; +SELECT @@session.binlog_format; +@@session.binlog_format +STATEMENT +begin; +# Test that the session variable 'binlog_format' is read-only +# inside a transaction with no preceding updates. +set @@session.binlog_format= mixed; +ERROR HY000: Cannot modify @@session.binlog_format inside a transaction +insert into t2 values (1); +# Test that the session variable 'binlog_format' is read-only +# inside a transaction with preceding transactional updates. +set @@session.binlog_format= row; +ERROR HY000: Cannot modify @@session.binlog_format inside a transaction +commit; +begin; +insert into t1 values (2); +# Test that the session variable 'binlog_format' is read-only +# inside a transaction with preceding non-transactional updates. +set @@session.binlog_format= statement; +ERROR HY000: Cannot modify @@session.binlog_format inside a transaction +commit; +# Test that the session variable 'binlog_format' is writable +# when AUTOCOMMIT=0, before a transaction has started. +set AUTOCOMMIT=0; +set @@session.binlog_format= row; +SELECT @@session.binlog_format; +@@session.binlog_format +ROW +insert into t1 values (4); +# Test that the session variable 'binlog_format' is read-only inside an +# AUTOCOMMIT=0 transaction with preceding non-transactional updates. +set @@session.binlog_format= statement; +ERROR HY000: Cannot modify @@session.binlog_format inside a transaction +SELECT @@session.binlog_format; +@@session.binlog_format +ROW +commit; +insert into t2 values (5); +# Test that the session variable 'binlog_format' is read-only inside an +# AUTOCOMMIT=0 transaction with preceding transactional updates. +set @@session.binlog_format= row; +ERROR HY000: Cannot modify @@session.binlog_format inside a transaction +SELECT @@session.binlog_format; +@@session.binlog_format +ROW +commit; +begin; +insert into t2 values (6); +# Test that the global variable 'binlog_format' is writable +# inside a transaction. +SELECT @@global.binlog_format; +@@global.binlog_format +ROW +set @@global.binlog_format= statement; +SELECT @@global.binlog_format; +@@global.binlog_format +STATEMENT +commit; +set @@global.binlog_format= @save_binlog_format; +create table t3(a int, b int) engine= innodb; +create table t4(a int) engine= innodb; +create table t5(a int) engine= innodb; +create trigger tr2 after insert on t3 for each row begin +insert into t4(a) values(1); +set @@session.binlog_format= statement; +insert into t4(a) values(2); +insert into t5(a) values(3); +end | +# Test that the session variable 'binlog_format' is read-only +# in sub-statements. +insert into t3(a,b) values(1,1); +ERROR HY000: Cannot change the binary logging format inside a stored function or trigger +SELECT @@session.binlog_format; +@@session.binlog_format +ROW +drop table t1; +drop table t2; +drop table t3; +drop table t4; +drop table t5; diff --git a/mysql-test/suite/binlog/r/binlog_innodb.result b/mysql-test/suite/binlog/r/binlog_innodb.result index c6d7b527f4c..578df67c3c9 100644 --- a/mysql-test/suite/binlog/r/binlog_innodb.result +++ b/mysql-test/suite/binlog/r/binlog_innodb.result @@ -123,7 +123,7 @@ Binlog_cache_disk_use 0 create table t1 (a int) engine=innodb; show status like "binlog_cache_use"; Variable_name Value -Binlog_cache_use 1 +Binlog_cache_use 2 show status like "binlog_cache_disk_use"; Variable_name Value Binlog_cache_disk_use 1 @@ -132,7 +132,7 @@ delete from t1; commit; show status like "binlog_cache_use"; Variable_name Value -Binlog_cache_use 2 +Binlog_cache_use 4 show status like "binlog_cache_disk_use"; Variable_name Value Binlog_cache_disk_use 1 diff --git a/mysql-test/suite/binlog/r/binlog_mix_innodb_stat.result b/mysql-test/suite/binlog/r/binlog_mix_innodb_stat.result index ca5067c4e1f..637be940383 100644 --- a/mysql-test/suite/binlog/r/binlog_mix_innodb_stat.result +++ b/mysql-test/suite/binlog/r/binlog_mix_innodb_stat.result @@ -9,7 +9,7 @@ drop table if exists t1; create table t1 (a int) engine=innodb; show status like "binlog_cache_use"; Variable_name Value -Binlog_cache_use 1 +Binlog_cache_use 2 show status like "binlog_cache_disk_use"; Variable_name Value Binlog_cache_disk_use 1 @@ -18,7 +18,7 @@ delete from t1; commit; show status like "binlog_cache_use"; Variable_name Value -Binlog_cache_use 2 +Binlog_cache_use 4 show status like "binlog_cache_disk_use"; Variable_name Value Binlog_cache_disk_use 1 diff --git a/mysql-test/suite/binlog/r/binlog_row_innodb_stat.result b/mysql-test/suite/binlog/r/binlog_row_innodb_stat.result index ca5067c4e1f..637be940383 100644 --- a/mysql-test/suite/binlog/r/binlog_row_innodb_stat.result +++ b/mysql-test/suite/binlog/r/binlog_row_innodb_stat.result @@ -9,7 +9,7 @@ drop table if exists t1; create table t1 (a int) engine=innodb; show status like "binlog_cache_use"; Variable_name Value -Binlog_cache_use 1 +Binlog_cache_use 2 show status like "binlog_cache_disk_use"; Variable_name Value Binlog_cache_disk_use 1 @@ -18,7 +18,7 @@ delete from t1; commit; show status like "binlog_cache_use"; Variable_name Value -Binlog_cache_use 2 +Binlog_cache_use 4 show status like "binlog_cache_disk_use"; Variable_name Value Binlog_cache_disk_use 1 diff --git a/mysql-test/suite/binlog/r/binlog_stm_innodb_stat.result b/mysql-test/suite/binlog/r/binlog_stm_innodb_stat.result index ca5067c4e1f..637be940383 100644 --- a/mysql-test/suite/binlog/r/binlog_stm_innodb_stat.result +++ b/mysql-test/suite/binlog/r/binlog_stm_innodb_stat.result @@ -9,7 +9,7 @@ drop table if exists t1; create table t1 (a int) engine=innodb; show status like "binlog_cache_use"; Variable_name Value -Binlog_cache_use 1 +Binlog_cache_use 2 show status like "binlog_cache_disk_use"; Variable_name Value Binlog_cache_disk_use 1 @@ -18,7 +18,7 @@ delete from t1; commit; show status like "binlog_cache_use"; Variable_name Value -Binlog_cache_use 2 +Binlog_cache_use 4 show status like "binlog_cache_disk_use"; Variable_name Value Binlog_cache_disk_use 1 diff --git a/mysql-test/suite/binlog/t/binlog_format_switch_inside_trans.test b/mysql-test/suite/binlog/t/binlog_format_switch_inside_trans.test new file mode 100644 index 00000000000..8ae87d13a12 --- /dev/null +++ b/mysql-test/suite/binlog/t/binlog_format_switch_inside_trans.test @@ -0,0 +1,98 @@ +# +# BUG#47863 +# This test verifies if the session variable 'binlog_format' +# is read-only inside a transaction and in sub-statements. +# + +source include/have_innodb.inc; +source include/have_binlog_format_row.inc; + +set @save_binlog_format= @@global.binlog_format; +create table t1 (a int) engine= myisam; +create table t2 (a int) engine= innodb; + +SELECT @@session.binlog_format; +SET AUTOCOMMIT=1; +--echo # Test that the session variable 'binlog_format' +--echo # is writable outside a transaction. +set @@session.binlog_format= statement; +SELECT @@session.binlog_format; + +begin; +--echo # Test that the session variable 'binlog_format' is read-only +--echo # inside a transaction with no preceding updates. +--error ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_FORMAT + set @@session.binlog_format= mixed; + + insert into t2 values (1); +--echo # Test that the session variable 'binlog_format' is read-only +--echo # inside a transaction with preceding transactional updates. +--error ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_FORMAT + set @@session.binlog_format= row; +commit; + +begin; + insert into t1 values (2); +--echo # Test that the session variable 'binlog_format' is read-only +--echo # inside a transaction with preceding non-transactional updates. +--error ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_FORMAT + set @@session.binlog_format= statement; +commit; + +--echo # Test that the session variable 'binlog_format' is writable +--echo # when AUTOCOMMIT=0, before a transaction has started. +set AUTOCOMMIT=0; +set @@session.binlog_format= row; +SELECT @@session.binlog_format; + +insert into t1 values (4); +--echo # Test that the session variable 'binlog_format' is read-only inside an +--echo # AUTOCOMMIT=0 transaction with preceding non-transactional updates. +--error ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_FORMAT +set @@session.binlog_format= statement; +SELECT @@session.binlog_format; +commit; + +insert into t2 values (5); +--echo # Test that the session variable 'binlog_format' is read-only inside an +--echo # AUTOCOMMIT=0 transaction with preceding transactional updates. +--error ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_FORMAT +set @@session.binlog_format= row; +SELECT @@session.binlog_format; +commit; + +begin; + insert into t2 values (6); +--echo # Test that the global variable 'binlog_format' is writable +--echo # inside a transaction. + SELECT @@global.binlog_format; + set @@global.binlog_format= statement; + SELECT @@global.binlog_format; +commit; + +set @@global.binlog_format= @save_binlog_format; + +create table t3(a int, b int) engine= innodb; +create table t4(a int) engine= innodb; +create table t5(a int) engine= innodb; +delimiter |; +eval create trigger tr2 after insert on t3 for each row begin + insert into t4(a) values(1); + set @@session.binlog_format= statement; + insert into t4(a) values(2); + insert into t5(a) values(3); +end | +delimiter ;| + +--echo # Test that the session variable 'binlog_format' is read-only +--echo # in sub-statements. +--error ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_FORMAT +insert into t3(a,b) values(1,1); +SELECT @@session.binlog_format; + +drop table t1; +drop table t2; +drop table t3; +drop table t4; +drop table t5; + diff --git a/mysql-test/suite/rpl/r/rpl_mixed_mixing_engines.result b/mysql-test/suite/rpl/r/rpl_mixed_mixing_engines.result index dc27e4a5037..7ee633c0776 100644 --- a/mysql-test/suite/rpl/r/rpl_mixed_mixing_engines.result +++ b/mysql-test/suite/rpl/r/rpl_mixed_mixing_engines.result @@ -425,54 +425,60 @@ master-bin.000001 # Xid # # COMMIT /* XID */ UPDATE nt_3, tt_3 SET nt_3.info= "new text 25 --> 1", tt_3.info= "new text 25 --> 1" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1; Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_3) -master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT --e-e-e-e-e-e-e-e-e-e-e- >> NT << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> NT << -b-b-b-b-b-b-b-b-b-b-b- -Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> NT << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> NT << -b-b-b-b-b-b-b-b-b-b-b- +Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_3) +master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ -e-e-e-e-e-e-e-e-e-e-e- >> NT << -e-e-e-e-e-e-e-e-e-e-e- -b-b-b-b-b-b-b-b-b-b-b- >> NT-trig << -b-b-b-b-b-b-b-b-b-b-b- INSERT INTO nt_4(trans_id, stmt_id) VALUES (26, 1); Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_4) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT --e-e-e-e-e-e-e-e-e-e-e- >> NT-trig << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> NT-trig << -b-b-b-b-b-b-b-b-b-b-b- -Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> NT-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> NT-trig << -b-b-b-b-b-b-b-b-b-b-b- +Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_4) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ -e-e-e-e-e-e-e-e-e-e-e- >> NT-trig << -e-e-e-e-e-e-e-e-e-e-e- -b-b-b-b-b-b-b-b-b-b-b- >> NT-func << -b-b-b-b-b-b-b-b-b-b-b- INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (27, 1, fc_i_tt_5_suc(27, 1)); Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.nt_5) +master-bin.000001 # Table_map # # table_id: # (test.nt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # COMMIT +master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows # # table_id: # @@ -480,15 +486,15 @@ master-bin.000001 # Write_rows # # table_id: # master-bin.000001 # Write_rows # # table_id: # master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> NT-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> NT-func << -b-b-b-b-b-b-b-b-b-b-b- +Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows # # table_id: # master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT --e-e-e-e-e-e-e-e-e-e-e- >> NT-func << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> NT-func << -b-b-b-b-b-b-b-b-b-b-b- -Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) @@ -497,72 +503,60 @@ master-bin.000001 # Write_rows # # table_id: # master-bin.000001 # Write_rows # # table_id: # master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.nt_5) -master-bin.000001 # Table_map # # table_id: # (test.nt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Query # # COMMIT -e-e-e-e-e-e-e-e-e-e-e- >> NT-func << -e-e-e-e-e-e-e-e-e-e-e- -b-b-b-b-b-b-b-b-b-b-b- >> TN << -b-b-b-b-b-b-b-b-b-b-b- UPDATE tt_4, nt_4 SET tt_4.info= "new text 28 --> 1", nt_4.info= "new text 28 --> 1" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1; Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_4) -master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT --e-e-e-e-e-e-e-e-e-e-e- >> TN << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> TN << -b-b-b-b-b-b-b-b-b-b-b- -Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> TN << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> TN << -b-b-b-b-b-b-b-b-b-b-b- +Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_4) +master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ -e-e-e-e-e-e-e-e-e-e-e- >> TN << -e-e-e-e-e-e-e-e-e-e-e- -b-b-b-b-b-b-b-b-b-b-b- >> TN-trig << -b-b-b-b-b-b-b-b-b-b-b- INSERT INTO tt_3(trans_id, stmt_id) VALUES (29, 1); Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_3) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT --e-e-e-e-e-e-e-e-e-e-e- >> TN-trig << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> TN-trig << -b-b-b-b-b-b-b-b-b-b-b- -Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> TN-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> TN-trig << -b-b-b-b-b-b-b-b-b-b-b- +Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_3) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ -e-e-e-e-e-e-e-e-e-e-e- >> TN-trig << -e-e-e-e-e-e-e-e-e-e-e- -b-b-b-b-b-b-b-b-b-b-b- >> TN-func << -b-b-b-b-b-b-b-b-b-b-b- INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (30, 1, fc_i_nt_5_suc(30, 1)); Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows # # table_id: # @@ -570,15 +564,15 @@ master-bin.000001 # Write_rows # # table_id: # master-bin.000001 # Write_rows # # table_id: # master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT --e-e-e-e-e-e-e-e-e-e-e- >> TN-func << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> TN-func << -b-b-b-b-b-b-b-b-b-b-b- -Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows # # table_id: # master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> TN-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> TN-func << -b-b-b-b-b-b-b-b-b-b-b- +Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) @@ -587,6 +581,12 @@ master-bin.000001 # Write_rows # # table_id: # master-bin.000001 # Write_rows # # table_id: # master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ -e-e-e-e-e-e-e-e-e-e-e- >> TN-func << -e-e-e-e-e-e-e-e-e-e-e- diff --git a/mysql-test/suite/rpl/r/rpl_row_mixing_engines.result b/mysql-test/suite/rpl/r/rpl_row_mixing_engines.result index 3f2c472ffe9..c92a79d1427 100644 --- a/mysql-test/suite/rpl/r/rpl_row_mixing_engines.result +++ b/mysql-test/suite/rpl/r/rpl_row_mixing_engines.result @@ -507,54 +507,60 @@ master-bin.000001 # Xid # # COMMIT /* XID */ UPDATE nt_3, tt_3 SET nt_3.info= "new text 25 --> 1", tt_3.info= "new text 25 --> 1" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1; Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_3) -master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT --e-e-e-e-e-e-e-e-e-e-e- >> NT << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> NT << -b-b-b-b-b-b-b-b-b-b-b- -Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> NT << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> NT << -b-b-b-b-b-b-b-b-b-b-b- +Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_3) +master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ -e-e-e-e-e-e-e-e-e-e-e- >> NT << -e-e-e-e-e-e-e-e-e-e-e- -b-b-b-b-b-b-b-b-b-b-b- >> NT-trig << -b-b-b-b-b-b-b-b-b-b-b- INSERT INTO nt_4(trans_id, stmt_id) VALUES (26, 1); Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_4) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT --e-e-e-e-e-e-e-e-e-e-e- >> NT-trig << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> NT-trig << -b-b-b-b-b-b-b-b-b-b-b- -Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> NT-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> NT-trig << -b-b-b-b-b-b-b-b-b-b-b- +Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_4) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ -e-e-e-e-e-e-e-e-e-e-e- >> NT-trig << -e-e-e-e-e-e-e-e-e-e-e- -b-b-b-b-b-b-b-b-b-b-b- >> NT-func << -b-b-b-b-b-b-b-b-b-b-b- INSERT INTO nt_5(trans_id, stmt_id, info) VALUES (27, 1, fc_i_tt_5_suc(27, 1)); Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.nt_5) +master-bin.000001 # Table_map # # table_id: # (test.nt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # COMMIT +master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows # # table_id: # @@ -562,15 +568,15 @@ master-bin.000001 # Write_rows # # table_id: # master-bin.000001 # Write_rows # # table_id: # master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> NT-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> NT-func << -b-b-b-b-b-b-b-b-b-b-b- +Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows # # table_id: # master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT --e-e-e-e-e-e-e-e-e-e-e- >> NT-func << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> NT-func << -b-b-b-b-b-b-b-b-b-b-b- -Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) @@ -579,72 +585,60 @@ master-bin.000001 # Write_rows # # table_id: # master-bin.000001 # Write_rows # # table_id: # master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.nt_5) -master-bin.000001 # Table_map # # table_id: # (test.nt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Query # # COMMIT -e-e-e-e-e-e-e-e-e-e-e- >> NT-func << -e-e-e-e-e-e-e-e-e-e-e- -b-b-b-b-b-b-b-b-b-b-b- >> TN << -b-b-b-b-b-b-b-b-b-b-b- UPDATE tt_4, nt_4 SET tt_4.info= "new text 28 --> 1", nt_4.info= "new text 28 --> 1" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1; Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_4) -master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT --e-e-e-e-e-e-e-e-e-e-e- >> TN << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> TN << -b-b-b-b-b-b-b-b-b-b-b- -Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> TN << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> TN << -b-b-b-b-b-b-b-b-b-b-b- +Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_4) +master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ -e-e-e-e-e-e-e-e-e-e-e- >> TN << -e-e-e-e-e-e-e-e-e-e-e- -b-b-b-b-b-b-b-b-b-b-b- >> TN-trig << -b-b-b-b-b-b-b-b-b-b-b- INSERT INTO tt_3(trans_id, stmt_id) VALUES (29, 1); Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_3) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT --e-e-e-e-e-e-e-e-e-e-e- >> TN-trig << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> TN-trig << -b-b-b-b-b-b-b-b-b-b-b- -Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> TN-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> TN-trig << -b-b-b-b-b-b-b-b-b-b-b- +Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_3) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ -e-e-e-e-e-e-e-e-e-e-e- >> TN-trig << -e-e-e-e-e-e-e-e-e-e-e- -b-b-b-b-b-b-b-b-b-b-b- >> TN-func << -b-b-b-b-b-b-b-b-b-b-b- INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (30, 1, fc_i_nt_5_suc(30, 1)); Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows # # table_id: # @@ -652,15 +646,15 @@ master-bin.000001 # Write_rows # # table_id: # master-bin.000001 # Write_rows # # table_id: # master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT --e-e-e-e-e-e-e-e-e-e-e- >> TN-func << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> TN-func << -b-b-b-b-b-b-b-b-b-b-b- -Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows # # table_id: # master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> TN-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> TN-func << -b-b-b-b-b-b-b-b-b-b-b- +Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) @@ -669,6 +663,12 @@ master-bin.000001 # Write_rows # # table_id: # master-bin.000001 # Write_rows # # table_id: # master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ -e-e-e-e-e-e-e-e-e-e-e- >> TN-func << -e-e-e-e-e-e-e-e-e-e-e- diff --git a/mysql-test/suite/rpl/r/rpl_typeconv.result b/mysql-test/suite/rpl/r/rpl_typeconv.result index 90451759406..89096153c14 100644 --- a/mysql-test/suite/rpl/r/rpl_typeconv.result +++ b/mysql-test/suite/rpl/r/rpl_typeconv.result @@ -69,6 +69,25 @@ RESET MASTER; include/start_slave.inc **** Result of conversions **** Source_Type Target_Type All_Type_Conversion_Flags Value_On_Slave +TINYBLOB TINYBLOB <Correct value> +TINYBLOB BLOB <Correct error> +TINYBLOB MEDIUMBLOB <Correct error> +TINYBLOB LONGBLOB <Correct error> +BLOB TINYBLOB <Correct error> +BLOB BLOB <Correct value> +BLOB MEDIUMBLOB <Correct error> +BLOB LONGBLOB <Correct error> +MEDIUMBLOB TINYBLOB <Correct error> +MEDIUMBLOB BLOB <Correct error> +MEDIUMBLOB MEDIUMBLOB <Correct value> +MEDIUMBLOB LONGBLOB <Correct error> +LONGBLOB TINYBLOB <Correct error> +LONGBLOB BLOB <Correct error> +LONGBLOB MEDIUMBLOB <Correct error> +LONGBLOB LONGBLOB <Correct value> +GEOMETRY BLOB <Correct error> +BLOB GEOMETRY <Correct error> +GEOMETRY GEOMETRY <Correct value> BIT(1) BIT(1) <Correct value> DATE DATE <Correct value> ENUM('master',' ENUM('master',' <Correct value> @@ -171,6 +190,25 @@ BIT(5) BIT(6) <Correct error> BIT(6) BIT(5) <Correct error> BIT(5) BIT(12) <Correct error> BIT(12) BIT(5) <Correct error> +TINYBLOB TINYBLOB ALL_NON_LOSSY <Correct value> +TINYBLOB BLOB ALL_NON_LOSSY <Correct value> +TINYBLOB MEDIUMBLOB ALL_NON_LOSSY <Correct value> +TINYBLOB LONGBLOB ALL_NON_LOSSY <Correct value> +BLOB TINYBLOB ALL_NON_LOSSY <Correct error> +BLOB BLOB ALL_NON_LOSSY <Correct value> +BLOB MEDIUMBLOB ALL_NON_LOSSY <Correct value> +BLOB LONGBLOB ALL_NON_LOSSY <Correct value> +MEDIUMBLOB TINYBLOB ALL_NON_LOSSY <Correct error> +MEDIUMBLOB BLOB ALL_NON_LOSSY <Correct error> +MEDIUMBLOB MEDIUMBLOB ALL_NON_LOSSY <Correct value> +MEDIUMBLOB LONGBLOB ALL_NON_LOSSY <Correct value> +LONGBLOB TINYBLOB ALL_NON_LOSSY <Correct error> +LONGBLOB BLOB ALL_NON_LOSSY <Correct error> +LONGBLOB MEDIUMBLOB ALL_NON_LOSSY <Correct error> +LONGBLOB LONGBLOB ALL_NON_LOSSY <Correct value> +GEOMETRY BLOB ALL_NON_LOSSY <Correct error> +BLOB GEOMETRY ALL_NON_LOSSY <Correct error> +GEOMETRY GEOMETRY ALL_NON_LOSSY <Correct value> BIT(1) BIT(1) ALL_NON_LOSSY <Correct value> DATE DATE ALL_NON_LOSSY <Correct value> ENUM('master',' ENUM('master',' ALL_NON_LOSSY <Correct value> @@ -273,6 +311,25 @@ BIT(5) BIT(6) ALL_NON_LOSSY <Correct value> BIT(6) BIT(5) ALL_NON_LOSSY <Correct error> BIT(5) BIT(12) ALL_NON_LOSSY <Correct value> BIT(12) BIT(5) ALL_NON_LOSSY <Correct error> +TINYBLOB TINYBLOB ALL_LOSSY <Correct value> +TINYBLOB BLOB ALL_LOSSY <Correct error> +TINYBLOB MEDIUMBLOB ALL_LOSSY <Correct error> +TINYBLOB LONGBLOB ALL_LOSSY <Correct error> +BLOB TINYBLOB ALL_LOSSY <Correct value> +BLOB BLOB ALL_LOSSY <Correct value> +BLOB MEDIUMBLOB ALL_LOSSY <Correct error> +BLOB LONGBLOB ALL_LOSSY <Correct error> +MEDIUMBLOB TINYBLOB ALL_LOSSY <Correct value> +MEDIUMBLOB BLOB ALL_LOSSY <Correct value> +MEDIUMBLOB MEDIUMBLOB ALL_LOSSY <Correct value> +MEDIUMBLOB LONGBLOB ALL_LOSSY <Correct error> +LONGBLOB TINYBLOB ALL_LOSSY <Correct value> +LONGBLOB BLOB ALL_LOSSY <Correct value> +LONGBLOB MEDIUMBLOB ALL_LOSSY <Correct value> +LONGBLOB LONGBLOB ALL_LOSSY <Correct value> +GEOMETRY BLOB ALL_LOSSY <Correct error> +BLOB GEOMETRY ALL_LOSSY <Correct error> +GEOMETRY GEOMETRY ALL_LOSSY <Correct value> BIT(1) BIT(1) ALL_LOSSY <Correct value> DATE DATE ALL_LOSSY <Correct value> ENUM('master',' ENUM('master',' ALL_LOSSY <Correct value> @@ -375,6 +432,25 @@ BIT(5) BIT(6) ALL_LOSSY <Correct error> BIT(6) BIT(5) ALL_LOSSY <Correct value> BIT(5) BIT(12) ALL_LOSSY <Correct error> BIT(12) BIT(5) ALL_LOSSY <Correct value> +TINYBLOB TINYBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value> +TINYBLOB BLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value> +TINYBLOB MEDIUMBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value> +TINYBLOB LONGBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value> +BLOB TINYBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value> +BLOB BLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value> +BLOB MEDIUMBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value> +BLOB LONGBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value> +MEDIUMBLOB TINYBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value> +MEDIUMBLOB BLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value> +MEDIUMBLOB MEDIUMBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value> +MEDIUMBLOB LONGBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value> +LONGBLOB TINYBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value> +LONGBLOB BLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value> +LONGBLOB MEDIUMBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value> +LONGBLOB LONGBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value> +GEOMETRY BLOB ALL_LOSSY,ALL_NON_LOSSY <Correct error> +BLOB GEOMETRY ALL_LOSSY,ALL_NON_LOSSY <Correct error> +GEOMETRY GEOMETRY ALL_LOSSY,ALL_NON_LOSSY <Correct value> BIT(1) BIT(1) ALL_LOSSY,ALL_NON_LOSSY <Correct value> DATE DATE ALL_LOSSY,ALL_NON_LOSSY <Correct value> ENUM('master',' ENUM('master',' ALL_LOSSY,ALL_NON_LOSSY <Correct value> diff --git a/sql/log.cc b/sql/log.cc index 15941cee376..c517803b662 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -6191,7 +6191,8 @@ int TC_LOG_BINLOG::log_xid(THD *thd, my_xid xid) We always commit the entire transaction when writing an XID. Also note that the return value is inverted. */ - DBUG_RETURN(!binlog_flush_trx_cache(thd, cache_mngr, &xle)); + DBUG_RETURN(!binlog_flush_stmt_cache(thd, cache_mngr) && + !binlog_flush_trx_cache(thd, cache_mngr, &xle)); } void TC_LOG_BINLOG::unlog(ulong cookie, my_xid xid) diff --git a/sql/rpl_utility.cc b/sql/rpl_utility.cc index e8e22216b38..16eaae9b91d 100644 --- a/sql/rpl_utility.cc +++ b/sql/rpl_utility.cc @@ -590,6 +590,13 @@ can_convert_field_to(Field *field, */ if (field->real_type() == source_type) { + if (metadata == 0) // Metadata can only be zero if no metadata was provided + { + DBUG_PRINT("debug", ("Base types are identical, but there is no metadata")); + *order_var= 0; + DBUG_RETURN(true); + } + DBUG_PRINT("debug", ("Base types are identical, doing field size comparison")); if (field->compatible_field_size(metadata, rli, mflags, order_var)) DBUG_RETURN(is_conversion_ok(*order_var, rli)); @@ -816,7 +823,7 @@ table_def::compatible_with(THD *thd, Relay_log_info *rli, rli->report(ERROR_LEVEL, ER_SLAVE_CONVERSION_FAILED, ER(ER_SLAVE_CONVERSION_FAILED), col, db_name, tbl_name, - source_type.c_ptr(), target_type.c_ptr()); + source_type.c_ptr_safe(), target_type.c_ptr_safe()); return false; } } @@ -920,7 +927,7 @@ TABLE *table_def::create_conversion_table(THD *thd, Relay_log_info *rli, TABLE * field_def->init_for_tmp_table(type(col), max_length, decimals, - maybe_null(col), // maybe_null + TRUE, // maybe_null FALSE, // unsigned_flag pack_length); field_def->charset= target_table->field[col]->charset(); @@ -977,6 +984,7 @@ table_def::table_def(unsigned char *types, ulong size, case MYSQL_TYPE_LONG_BLOB: case MYSQL_TYPE_DOUBLE: case MYSQL_TYPE_FLOAT: + case MYSQL_TYPE_GEOMETRY: { /* These types store a single byte. diff --git a/sql/set_var.cc b/sql/set_var.cc index 5f3ceb725ea..8981e32777a 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -1316,6 +1316,14 @@ void fix_slave_exec_mode(enum_var_type type) bool sys_var_thd_binlog_format::check(THD *thd, set_var *var) { /* + Make the session variable 'binlog_format' read-only inside a transaction. + */ + if (thd->active_transaction() && (var->type == OPT_SESSION)) + { + my_error(ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_FORMAT, MYF(0)); + return 1; + } + /* All variables that affect writing to binary log (either format or turning logging on and off) use the same checking. We call the superclass ::check function to assign the variable correctly, and diff --git a/sql/share/errmsg-utf8.txt b/sql/share/errmsg-utf8.txt index 7d12143d143..72d38bd6795 100644 --- a/sql/share/errmsg-utf8.txt +++ b/sql/share/errmsg-utf8.txt @@ -6299,3 +6299,6 @@ ER_SLAVE_CONVERSION_FAILED eng "Column %d of table '%-.192s.%-.192s' cannot be converted from type '%-.32s' to type '%-.32s'" ER_SLAVE_CANT_CREATE_CONVERSION eng "Can't create conversion table for table '%-.192s.%-.192s'" +ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_FORMAT + eng "Cannot modify @@session.binlog_format inside a transaction" + diff --git a/sql/share/errmsg.txt b/sql/share/errmsg.txt index b12141cd30f..021694026ae 100644 --- a/sql/share/errmsg.txt +++ b/sql/share/errmsg.txt @@ -6299,3 +6299,5 @@ ER_SLAVE_CONVERSION_FAILED eng "Column %d of table '%-.192s.%-.192s' cannot be converted from type '%-.32s' to type '%-.32s'" ER_SLAVE_CANT_CREATE_CONVERSION eng "Can't create conversion table for table '%-.192s.%-.192s'" +ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_FORMAT + eng "Cannot modify @@session.binlog_format inside a transaction" |