mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 11:01:52 +01:00
00d3b20fbb
The fix is that if the slave has a different integer size than the master, then they will assume the master has the same signed/unsigned modifier as the slave. This means that one can safely change a coon the slave an int to a bigint or an unsigned int to an unsigned int. Changing an unsigned int to an signed bigint will cause replication failures when the high bit of the unsigned int is set. We can't give an error if the signess is different on the master and slave as the binary log doesn't contain the signess of the column on the master.
71 lines
1.8 KiB
Text
71 lines
1.8 KiB
Text
source include/master-slave.inc;
|
|
create database mysqltest;
|
|
|
|
create table mysqltest.t1 ( n int);
|
|
alter table mysqltest.t1 add m int;
|
|
insert into mysqltest.t1 values (1,2);
|
|
create table mysqltest.t2 (n int);
|
|
insert into mysqltest.t2 values (45);
|
|
rename table mysqltest.t2 to mysqltest.t3, mysqltest.t1 to mysqltest.t2;
|
|
sync_slave_with_master;
|
|
select * from mysqltest.t2;
|
|
select * from mysqltest.t3;
|
|
connection master;
|
|
drop database mysqltest;
|
|
sync_slave_with_master;
|
|
|
|
# End of 4.1 tests
|
|
|
|
connection master;
|
|
use test;
|
|
|
|
--echo #
|
|
--echo # Test bug where ALTER TABLE MODIFY didn't replicate properly
|
|
--echo #
|
|
|
|
create table t1 (a int unsigned primary key, b int);
|
|
show create table t1;
|
|
insert into t1 (a) values (1),((1<<32)-1);
|
|
select * from t1;
|
|
alter table t1 modify a bigint;
|
|
show create table t1;
|
|
select * from t1;
|
|
alter table t1 modify a int unsigned;
|
|
show create table t1;
|
|
select * from t1;
|
|
alter table t1 modify a bigint unsigned;
|
|
show create table t1;
|
|
select * from t1;
|
|
sync_slave_with_master;
|
|
use test;
|
|
select * from t1;
|
|
show create table t1;
|
|
connection master;
|
|
#
|
|
create table t2 (a int unsigned auto_increment primary key, b int);
|
|
show create table t2;
|
|
alter table t2 modify a bigint;
|
|
show create table t2;
|
|
alter table t2 modify a bigint auto_increment;
|
|
show create table t2;
|
|
drop table t1,t2;
|
|
|
|
--echo #
|
|
--echo # MDEV-8432: Slave cannot replicate signed integer-type values
|
|
--echo # with high bit set to 1
|
|
--echo # Test replication when we have int on master and bigint on slave
|
|
--echo #
|
|
|
|
create table t1 (a int unsigned primary key, b int);
|
|
sync_slave_with_master;
|
|
SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_NON_LOSSY';
|
|
alter table t1 modify a bigint unsigned;
|
|
connection master;
|
|
insert into t1 (a) values (1),((1<<32)-1);
|
|
sync_slave_with_master;
|
|
select * from t1;
|
|
SET GLOBAL SLAVE_TYPE_CONVERSIONS='';
|
|
connection master;
|
|
drop table t1;
|
|
|
|
--source include/rpl_end.inc
|