mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 04:53:01 +01:00
4ab4631b06
The reason of the bug is in that `get_var_with_binlog' performs missed assingment of the variables as side-effect. Doing that it eventually calls `free_underlaid_joins' to pass as an argument `thd->lex->select_lex' of the lex which belongs to the user query, not to one which is emulated i.e SET @var1:=NULL. `get_var_with_binlog' is refined to supply a temporary lex to sql_set_variables's stack. mysql-test/r/rpl_user_variables.result: results changed mysql-test/t/rpl_user_variables.test: a problematic query to be binlogged is added sql/item_func.cc: BUG#19136: Crashing log-bin and uninitialized user variables The reason of the bug is in that how `get_var_with_binlog' performs missed assingment of the variables: `free_underlaid_joins' gets as an argument `thd->lex->select_lex' which belongs to the user query, not to one which is emulated i.e SET @var1:=NULL. `get_var_with_binlog' is refined to supply a temporary lex to sql_set_variables's stack.
110 lines
3.2 KiB
Text
110 lines
3.2 KiB
Text
stop slave;
|
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
|
reset master;
|
|
reset slave;
|
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
|
start slave;
|
|
reset master;
|
|
create table t1(n char(30));
|
|
set @i1:=12345678901234, @i2:=-12345678901234, @i3:=0, @i4:=-1;
|
|
set @s1:='This is a test', @r1:=12.5, @r2:=-12.5;
|
|
set @n1:=null;
|
|
set @s2:='', @s3:='abc\'def', @s4:= 'abc\\def', @s5:= 'abc''def';
|
|
insert into t1 values (@i1), (@i2), (@i3), (@i4);
|
|
insert into t1 values (@r1), (@r2);
|
|
insert into t1 values (@s1), (@s2), (@s3), (@s4), (@s5);
|
|
insert into t1 values (@n1);
|
|
insert into t1 values (@n2);
|
|
insert into t1 values (@a:=0), (@a:=@a+1), (@a:=@a+1);
|
|
insert into t1 values (@a+(@b:=@a+1));
|
|
set @q:='abc';
|
|
insert t1 values (@q), (@q:=concat(@q, 'n1')), (@q:=concat(@q, 'n2'));
|
|
set @a:=5;
|
|
insert into t1 values (@a),(@a);
|
|
insert into t1 values (@a),(@a),(@a*5);
|
|
select * from t1;
|
|
n
|
|
12345678901234
|
|
-12345678901234
|
|
0
|
|
-1
|
|
12.5
|
|
-12.5
|
|
This is a test
|
|
|
|
abc'def
|
|
abc\def
|
|
abc'def
|
|
NULL
|
|
NULL
|
|
0
|
|
1
|
|
2
|
|
5
|
|
abc
|
|
abcn1
|
|
abcn1n2
|
|
5
|
|
5
|
|
NULL
|
|
NULL
|
|
NULL
|
|
select * from t1;
|
|
n
|
|
12345678901234
|
|
-12345678901234
|
|
0
|
|
-1
|
|
12.5
|
|
-12.5
|
|
This is a test
|
|
|
|
abc'def
|
|
abc\def
|
|
abc'def
|
|
NULL
|
|
NULL
|
|
0
|
|
1
|
|
2
|
|
5
|
|
abc
|
|
abcn1
|
|
abcn1n2
|
|
5
|
|
5
|
|
NULL
|
|
NULL
|
|
NULL
|
|
show binlog events from 141;
|
|
Log_name Pos Event_type Server_id Orig_log_pos Info
|
|
slave-bin.000001 141 User var 2 141 @`i1`=12345678901234
|
|
slave-bin.000001 184 User var 2 184 @`i2`=-12345678901234
|
|
slave-bin.000001 227 User var 2 227 @`i3`=0
|
|
slave-bin.000001 270 User var 2 270 @`i4`=-1
|
|
slave-bin.000001 313 Query 1 313 use `test`; insert into t1 values (@i1), (@i2), (@i3), (@i4)
|
|
slave-bin.000001 396 User var 2 396 @`r1`=12.5
|
|
slave-bin.000001 439 User var 2 439 @`r2`=-12.5
|
|
slave-bin.000001 482 Query 1 482 use `test`; insert into t1 values (@r1), (@r2)
|
|
slave-bin.000001 551 User var 2 551 @`s1`=_latin1 0x5468697320697320612074657374 COLLATE latin1_swedish_ci
|
|
slave-bin.000001 600 User var 2 600 @`s2`=_latin1 "" COLLATE latin1_swedish_ci
|
|
slave-bin.000001 635 User var 2 635 @`s3`=_latin1 0x61626327646566 COLLATE latin1_swedish_ci
|
|
slave-bin.000001 677 User var 2 677 @`s4`=_latin1 0x6162635C646566 COLLATE latin1_swedish_ci
|
|
slave-bin.000001 719 User var 2 719 @`s5`=_latin1 0x61626327646566 COLLATE latin1_swedish_ci
|
|
slave-bin.000001 761 Query 1 761 use `test`; insert into t1 values (@s1), (@s2), (@s3), (@s4), (@s5)
|
|
slave-bin.000001 851 User var 2 851 @`n1`=NULL
|
|
slave-bin.000001 877 Query 1 877 use `test`; insert into t1 values (@n1)
|
|
slave-bin.000001 939 User var 2 939 @`n2`=NULL
|
|
slave-bin.000001 965 Query 1 965 use `test`; insert into t1 values (@n2)
|
|
slave-bin.000001 1027 Query 1 1027 use `test`; insert into t1 values (@a:=0), (@a:=@a+1), (@a:=@a+1)
|
|
slave-bin.000001 1115 User var 2 1115 @`a`=2
|
|
slave-bin.000001 1157 Query 1 1157 use `test`; insert into t1 values (@a+(@b:=@a+1))
|
|
slave-bin.000001 1229 User var 2 1229 @`q`=_latin1 0x616263 COLLATE latin1_swedish_ci
|
|
slave-bin.000001 1266 Query 1 1266 use `test`; insert t1 values (@q), (@q:=concat(@q, 'n1')), (@q:=concat(@q, 'n2'))
|
|
slave-bin.000001 1370 User var 2 1370 @`a`=5
|
|
slave-bin.000001 1412 Query 1 1412 use `test`; insert into t1 values (@a),(@a)
|
|
slave-bin.000001 1478 User var 2 1478 @`a`=NULL
|
|
slave-bin.000001 1503 Query 1 1503 use `test`; insert into t1 values (@a),(@a),(@a*5)
|
|
insert into t1 select * FROM (select @var1 union select @var2) AS t2;
|
|
drop table t1;
|
|
stop slave;
|