mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Testcase for BUG#20633 "INSERT DELAYED RAND() or @user_var does not replicate
statement-based" (bugfix was committed today): we verify that now it works in mixed mode. And a comment.
This commit is contained in:
@ -150,6 +150,10 @@ insert delayed into t2 values("delay_3_"),(concat("delay_4_",UUID())),("delay_5_
|
|||||||
Warnings:
|
Warnings:
|
||||||
Warning 1265 Data truncated for column 'UUID()' at row 2
|
Warning 1265 Data truncated for column 'UUID()' at row 2
|
||||||
insert delayed into t2 values("delay_6_");
|
insert delayed into t2 values("delay_6_");
|
||||||
|
create table t12 (a int, b float);
|
||||||
|
insert delayed into t12 values(1,rand());
|
||||||
|
set @a=2.345;
|
||||||
|
insert delayed into t12 values(2,@a);
|
||||||
select count(*) from t1;
|
select count(*) from t1;
|
||||||
count(*)
|
count(*)
|
||||||
36
|
36
|
||||||
@ -165,6 +169,9 @@ count(*)
|
|||||||
select count(*) from t5;
|
select count(*) from t5;
|
||||||
count(*)
|
count(*)
|
||||||
58
|
58
|
||||||
|
select count(*) from t12;
|
||||||
|
count(*)
|
||||||
|
2
|
||||||
show binlog events from 102;
|
show binlog events from 102;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 # Query 1 # drop database if exists mysqltest1
|
master-bin.000001 # Query 1 # drop database if exists mysqltest1
|
||||||
@ -279,4 +286,9 @@ master-bin.000001 # Table_map 1 # table_id: # (mysqltest1.t2)
|
|||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (mysqltest1.t2)
|
master-bin.000001 # Table_map 1 # table_id: # (mysqltest1.t2)
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
||||||
|
master-bin.000001 # Query 1 # use `mysqltest1`; create table t12 (a int, b float)
|
||||||
|
master-bin.000001 # Table_map 1 # table_id: # (mysqltest1.t12)
|
||||||
|
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
||||||
|
master-bin.000001 # Table_map 1 # table_id: # (mysqltest1.t12)
|
||||||
|
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
||||||
drop database mysqltest1;
|
drop database mysqltest1;
|
||||||
|
@ -154,12 +154,21 @@ call foo2();
|
|||||||
select foo3();
|
select foo3();
|
||||||
select * from t1 where a="alarm";
|
select * from t1 where a="alarm";
|
||||||
|
|
||||||
# Test that INSERT DELAYED works in mixed mode
|
# Test that INSERT DELAYED works in mixed mode (BUG#20649)
|
||||||
insert delayed into t2 values("delay_1_");
|
insert delayed into t2 values("delay_1_");
|
||||||
insert delayed into t2 values(concat("delay_2_",UUID()));
|
insert delayed into t2 values(concat("delay_2_",UUID()));
|
||||||
insert delayed into t2 values("delay_3_"),(concat("delay_4_",UUID())),("delay_5_");
|
insert delayed into t2 values("delay_3_"),(concat("delay_4_",UUID())),("delay_5_");
|
||||||
insert delayed into t2 values("delay_6_");
|
insert delayed into t2 values("delay_6_");
|
||||||
sleep 4; # time for the delayed insert to reach disk
|
|
||||||
|
# Test for BUG#20633 (INSERT DELAYED RAND()/user_variable does not
|
||||||
|
# replicate fine in statement-based ; we test that in mixed mode it
|
||||||
|
# works).
|
||||||
|
create table t12 (a int, b float);
|
||||||
|
insert delayed into t12 values(1,rand());
|
||||||
|
set @a=2.345;
|
||||||
|
insert delayed into t12 values(2,@a);
|
||||||
|
|
||||||
|
sleep 4; # time for the delayed inserts to reach disk
|
||||||
|
|
||||||
# If you want to do manual testing of the mixed mode regarding UDFs (not
|
# If you want to do manual testing of the mixed mode regarding UDFs (not
|
||||||
# testable automatically as quite platform- and compiler-dependent),
|
# testable automatically as quite platform- and compiler-dependent),
|
||||||
@ -195,6 +204,7 @@ select count(*) from t2;
|
|||||||
select count(*) from t3;
|
select count(*) from t3;
|
||||||
select count(*) from t4;
|
select count(*) from t4;
|
||||||
select count(*) from t5;
|
select count(*) from t5;
|
||||||
|
select count(*) from t12;
|
||||||
if ($you_want_to_test_UDF)
|
if ($you_want_to_test_UDF)
|
||||||
{
|
{
|
||||||
select count(*) from t6;
|
select count(*) from t6;
|
||||||
|
@ -1290,9 +1290,11 @@ public:
|
|||||||
thd.command=COM_DELAYED_INSERT;
|
thd.command=COM_DELAYED_INSERT;
|
||||||
thd.lex->current_select= 0; // for my_message_sql
|
thd.lex->current_select= 0; // for my_message_sql
|
||||||
thd.lex->sql_command= SQLCOM_INSERT; // For innodb::store_lock()
|
thd.lex->sql_command= SQLCOM_INSERT; // For innodb::store_lock()
|
||||||
#ifdef HAVE_ROW_BASED_REPLICATION
|
/*
|
||||||
|
Statement-based replication of INSERT DELAYED has problems with RAND()
|
||||||
|
and user vars, so in mixed mode we go to row-based.
|
||||||
|
*/
|
||||||
thd.set_current_stmt_binlog_row_based_if_mixed();
|
thd.set_current_stmt_binlog_row_based_if_mixed();
|
||||||
#endif
|
|
||||||
|
|
||||||
bzero((char*) &thd.net, sizeof(thd.net)); // Safety
|
bzero((char*) &thd.net, sizeof(thd.net)); // Safety
|
||||||
bzero((char*) &table_list, sizeof(table_list)); // Safety
|
bzero((char*) &table_list, sizeof(table_list)); // Safety
|
||||||
|
Reference in New Issue
Block a user