mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 04:53:01 +01:00
d27bf14ed7
Item_func_user doesn't calculate anything in it's val_str() method, just returns saved str_value. Though Item::save_in_field method can destroy str_value, relying on val_str() return. As a result we get the garbage stored in field. We cannot use Item::save_in_field implementation for Item_func_user, reimplement it in simpler way. mysql-test/r/rpl_session_var.result: Bug #29878 Garbage data generation when executing SESSION_USER() on a slave. test result mysql-test/t/rpl_session_var.test: Bug #29878 Garbage data generation when executing SESSION_USER() on a slave. test case sql/item.cc: Bug #29878 Garbage data generation when executing SESSION_USER() on a slave. duplicating code moved to Item::save_str_in_field sql/item.h: Bug #29878 Garbage data generation when executing SESSION_USER() on a slave. duplicating code moved to Item::save_str_in_field sql/item_strfunc.h: Bug #29878 Garbage data generation when executing SESSION_USER() on a slave. Item_func_user::save_in_field implemented as simple storing str_value
64 lines
1.7 KiB
Text
64 lines
1.7 KiB
Text
# Replication of session variables.
|
|
# FOREIGN_KEY_CHECKS is tested in rpl_insert_id.test
|
|
|
|
source include/master-slave.inc;
|
|
drop table if exists t1;
|
|
create table t1(a varchar(100),b int);
|
|
set @@session.sql_mode=pipes_as_concat;
|
|
insert into t1 values('My'||'SQL', 1);
|
|
set @@session.sql_mode=default;
|
|
insert into t1 values('1'||'2', 2);
|
|
select * from t1 where b<3 order by a;
|
|
save_master_pos;
|
|
connection slave;
|
|
sync_with_master;
|
|
select * from t1 where b<3 order by a;
|
|
connection master;
|
|
# if the slave does the next sync_with_master fine, then it means it accepts the
|
|
# two lines of ANSI syntax below, which is what we want to check.
|
|
set @@session.sql_mode=ignore_space;
|
|
insert into t1 values(password ('MySQL'), 3);
|
|
set @@session.sql_mode=ansi_quotes;
|
|
create table "t2" ("a" int);
|
|
drop table t1, t2;
|
|
set @@session.sql_mode=default;
|
|
create table t1(a int auto_increment primary key);
|
|
create table t2(b int, a int);
|
|
set @@session.sql_auto_is_null=1;
|
|
insert into t1 values(null);
|
|
insert into t2 select 1,a from t1 where a is null;
|
|
set @@session.sql_auto_is_null=0;
|
|
insert into t1 values(null);
|
|
insert into t2 select 2,a from t1 where a is null;
|
|
select * from t2 order by b;
|
|
save_master_pos;
|
|
connection slave;
|
|
sync_with_master;
|
|
select * from t2 order by b;
|
|
connection master;
|
|
drop table t1,t2;
|
|
save_master_pos;
|
|
connection slave;
|
|
sync_with_master;
|
|
|
|
#
|
|
# Bug #29878 Garbage data generation when executing SESSION_USER() on a slave.
|
|
#
|
|
|
|
connection master;
|
|
CREATE TABLE t1 (
|
|
`id` int(11) NOT NULL auto_increment,
|
|
`data` varchar(100),
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=MyISAM;
|
|
|
|
INSERT INTO t1(data) VALUES(SESSION_USER());
|
|
save_master_pos;
|
|
connection slave;
|
|
sync_with_master;
|
|
SELECT * FROM t1;
|
|
connection master;
|
|
drop table t1;
|
|
save_master_pos;
|
|
connection slave;
|
|
sync_with_master;
|