mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 21:12:26 +01:00
2f11e5d1d3
When an update query is to be written to the binlog, and it reads unset user variables (example: INSERT INTO t VALUEs(@a) where @a does not exist), we create the variable like if it had been set with SET before, and we loop (i.e. we redo the steps of logging, now that the variable exists).
52 lines
1.7 KiB
Text
52 lines
1.7 KiB
Text
#
|
|
# Test of replicating user variables
|
|
#
|
|
source include/master-slave.inc;
|
|
|
|
# Clean up old slave's binlogs.
|
|
# The slave is started with --log-slave-updates
|
|
# and this test does SHOW BINLOG EVENTS on the slave's
|
|
# binlog. But previous tests can influence the current test's
|
|
# binlog (e.g. a temporary table in the previous test has not
|
|
# been explicitly deleted, or it has but the slave hasn't had
|
|
# enough time to catch it before STOP SLAVE,
|
|
# and at the beginning of the current
|
|
# test the slave immediately writes DROP TEMPORARY TABLE this_old_table).
|
|
# We wait for the slave to have written all he wants to the binlog
|
|
# (otherwise RESET MASTER may come too early).
|
|
save_master_pos;
|
|
connection slave;
|
|
sync_with_master;
|
|
reset master;
|
|
connection 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); # not explicitely set before
|
|
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);
|
|
connection master1; # see if variable is reset in binlog when thread changes
|
|
insert into t1 values (@a),(@a),(@a*5);
|
|
select * from t1;
|
|
save_master_pos;
|
|
connection slave;
|
|
sync_with_master;
|
|
select * from t1;
|
|
show binlog events from 141;
|
|
connection master;
|
|
drop table t1;
|
|
save_master_pos;
|
|
connection slave;
|
|
sync_with_master;
|
|
stop slave;
|