mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
BUG#35515 Aliases of variables in binary log are ignored with NAME_CONST.
When add an aliase name after NAME_CONST, the aliase name will be overwrite. NAME_CONST will re-set the field's name only if there isn't an aliase in the function fix-fields(). If there is an aliase, NAME_CONST doesn't re-set the field's name and keeps the old name. mysql-test/r/func_misc.result: Test result. mysql-test/r/rpl_name_const.result: Test case. mysql-test/t/func_misc.test: Add NAME_CONST test. mysql-test/t/rpl_name_const.test: Test result. sql/item.cc: Re-set field's name if the name is autogenerated, that mean without aliase.
This commit is contained in:
@ -324,4 +324,7 @@ SELECT * FROM t1 WHERE a = NAME_CONST('reportDate',
|
||||
_binary'2009-01-09' COLLATE 'binary');
|
||||
a
|
||||
DROP TABLE t1;
|
||||
select NAME_CONST('_id',1234) as id;
|
||||
id
|
||||
1234
|
||||
End of 5.0 tests
|
||||
|
28
mysql-test/r/rpl_name_const.result
Normal file
28
mysql-test/r/rpl_name_const.result
Normal file
@ -0,0 +1,28 @@
|
||||
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;
|
||||
==== Initialize ====
|
||||
[on master]
|
||||
create table t1 (id int);
|
||||
==== create a procedure that has a column aliase in a subquery ====
|
||||
drop procedure if exists test_procedure;
|
||||
create procedure test_procedure(_id int)
|
||||
begin
|
||||
insert into t1 (id)
|
||||
select a.id
|
||||
from
|
||||
( select _id as id ) a;
|
||||
end;$$
|
||||
==== enable the binary log, then call the procedure ====
|
||||
call test_procedure(1234);
|
||||
[on slave]
|
||||
select * from t1 order by id;
|
||||
id
|
||||
1234
|
||||
==== Clean up ====
|
||||
[on master]
|
||||
drop table t1;
|
||||
drop procedure test_procedure;
|
@ -445,5 +445,10 @@ SELECT * FROM t1 WHERE a = NAME_CONST('reportDate',
|
||||
_binary'2009-01-09' COLLATE 'binary');
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug#35515: Aliases of variables in binary log are ignored with NAME_CONST
|
||||
#
|
||||
select NAME_CONST('_id',1234) as id;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
||||
|
47
mysql-test/t/rpl_name_const.test
Normal file
47
mysql-test/t/rpl_name_const.test
Normal file
@ -0,0 +1,47 @@
|
||||
# ==== Purpose ====
|
||||
#
|
||||
# Test that aliases of variables in binary log aren't ignored with NAME_CONST.
|
||||
#
|
||||
# ==== Method ====
|
||||
#
|
||||
# Create a procedure with aliases of variables, then replicate it to slave.
|
||||
# BUG#35515 Aliases of variables in binary log are ignored with NAME_CONST.
|
||||
#
|
||||
|
||||
source include/master-slave.inc;
|
||||
|
||||
--echo ==== Initialize ====
|
||||
|
||||
--echo [on master]
|
||||
--connection master
|
||||
|
||||
create table t1 (id int);
|
||||
|
||||
--echo ==== create a procedure that has a column aliase in a subquery ====
|
||||
--disable_warnings
|
||||
drop procedure if exists test_procedure;
|
||||
--enable_warnings
|
||||
delimiter $$;
|
||||
create procedure test_procedure(_id int)
|
||||
begin
|
||||
insert into t1 (id)
|
||||
select a.id
|
||||
from
|
||||
( select _id as id ) a;
|
||||
end;$$
|
||||
delimiter ;$$
|
||||
|
||||
--echo ==== enable the binary log, then call the procedure ====
|
||||
call test_procedure(1234);
|
||||
|
||||
|
||||
--echo [on slave]
|
||||
sync_slave_with_master;
|
||||
select * from t1 order by id;
|
||||
|
||||
--echo ==== Clean up ====
|
||||
|
||||
--echo [on master]
|
||||
connection master;
|
||||
drop table t1;
|
||||
drop procedure test_procedure;
|
Reference in New Issue
Block a user