Commit beaadc4b authored by Sachin's avatar Sachin

Fix mysql_alter_table part 1

and fix previous patch
parent c003b362
......@@ -354,5 +354,5 @@ if ($sync_slave)
--disconnect con18
--disconnect con19
--disconnect con20
--connection default
--connection master_node
SET GLOBAL debug_dbug= "";
......@@ -294,7 +294,7 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
connection master_node;
#concurrent alter Aria
......@@ -514,7 +514,7 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
connection master_node;
#concurrent alter Innodb copy
......@@ -734,7 +734,7 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
connection master_node;
#concurrent alter Innodb Inplace
......@@ -991,10 +991,11 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
disconnect master_node;
disconnect slave_node;
connection master;
include/save_master_gtid.inc
connection slave;
include/sync_with_master_gtid.inc
......
......@@ -300,7 +300,7 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
connection master_node;
#concurrent alter Aria
......@@ -520,7 +520,7 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
connection master_node;
#concurrent alter Innodb copy
......@@ -740,7 +740,7 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
connection master_node;
#concurrent alter Innodb Inplace
......@@ -997,10 +997,11 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
disconnect master_node;
disconnect slave_node;
connection master;
include/save_master_gtid.inc
connection slave;
include/sync_with_master_gtid.inc
......
......@@ -300,7 +300,7 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
connection master_node;
#concurrent alter Aria
......@@ -520,7 +520,7 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
connection master_node;
#concurrent alter Innodb copy
......@@ -740,7 +740,7 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
connection master_node;
#concurrent alter Innodb Inplace
......@@ -997,10 +997,11 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
disconnect master_node;
disconnect slave_node;
connection master;
include/save_master_gtid.inc
connection slave;
include/sync_with_master_gtid.inc
......
......@@ -300,7 +300,7 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
connection master_node;
#concurrent alter Aria
......@@ -520,7 +520,7 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
connection master_node;
#concurrent alter Innodb copy
......@@ -740,7 +740,7 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
connection master_node;
#concurrent alter Innodb Inplace
......@@ -997,10 +997,11 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
disconnect master_node;
disconnect slave_node;
connection master;
include/save_master_gtid.inc
connection slave;
include/sync_with_master_gtid.inc
......
......@@ -300,7 +300,7 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
connection master_node;
#concurrent alter Aria
......@@ -520,7 +520,7 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
connection master_node;
#concurrent alter Innodb copy
......@@ -740,7 +740,7 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
connection master_node;
#concurrent alter Innodb Inplace
......@@ -997,10 +997,11 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
disconnect master_node;
disconnect slave_node;
connection master;
include/save_master_gtid.inc
connection slave;
include/sync_with_master_gtid.inc
......
......@@ -301,7 +301,7 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
connection master_node;
#concurrent alter Aria
......@@ -521,7 +521,7 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
connection master_node;
#concurrent alter Innodb copy
......@@ -741,7 +741,7 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
connection master_node;
#concurrent alter Innodb Inplace
......@@ -998,10 +998,11 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
disconnect master_node;
disconnect slave_node;
connection master;
include/save_master_gtid.inc
connection slave;
include/sync_with_master_gtid.inc
......
......@@ -12,8 +12,6 @@ connection server_3;
SET GLOBAL slave_parallel_threads=20;
set global slave_parallel_mode=optimistic;
set global gtid_strict_mode=1;
change master 'm1' to master_port=MYPORT_1 , master_host='127.0.0.1', master_user='root', master_use_gtid=slave_pos;
change master 'm2' to master_port=16001 , master_host='127.0.0.1', master_user='root', master_use_gtid=slave_pos;
connection server_1;
set gtid_domain_id= 11;
create database s1;
......@@ -275,7 +273,7 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
connection master_node;
#concurrent alter Aria
......@@ -470,7 +468,7 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
connection master_node;
#concurrent alter Innodb copy
......@@ -665,7 +663,7 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
connection master_node;
#concurrent alter Innodb Inplace
......@@ -892,7 +890,7 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
disconnect master_node;
disconnect slave_node;
......@@ -1162,7 +1160,7 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
connection master_node;
#concurrent alter Aria
......@@ -1357,7 +1355,7 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
connection master_node;
#concurrent alter Innodb copy
......@@ -1552,7 +1550,7 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
connection master_node;
#concurrent alter Innodb Inplace
......@@ -1779,7 +1777,7 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
disconnect master_node;
disconnect slave_node;
......
......@@ -12,8 +12,6 @@ connection server_3;
SET GLOBAL slave_parallel_threads=5;
set global slave_parallel_mode=optimistic;
set global gtid_strict_mode=1;
change master 'm1' to master_port=MYPORT_1 , master_host='127.0.0.1', master_user='root', master_use_gtid=slave_pos;
change master 'm2' to master_port=16001 , master_host='127.0.0.1', master_user='root', master_use_gtid=slave_pos;
connection server_1;
set gtid_domain_id= 11;
create database s1;
......@@ -275,7 +273,7 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
connection master_node;
#concurrent alter Aria
......@@ -470,7 +468,7 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
connection master_node;
#concurrent alter Innodb copy
......@@ -665,7 +663,7 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
connection master_node;
#concurrent alter Innodb Inplace
......@@ -892,7 +890,7 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
disconnect master_node;
disconnect slave_node;
......@@ -1162,7 +1160,7 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
connection master_node;
#concurrent alter Aria
......@@ -1357,7 +1355,7 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
connection master_node;
#concurrent alter Innodb copy
......@@ -1552,7 +1550,7 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
connection master_node;
#concurrent alter Innodb Inplace
......@@ -1779,7 +1777,7 @@ disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
connection master_node;
SET GLOBAL debug_dbug= "";
disconnect master_node;
disconnect slave_node;
......
include/master-slave.inc
[connection master]
connection master;
set global binlog_split_alter=true;
connection slave;
include/stop_slave.inc
change master to master_use_gtid= current_pos;
set global gtid_strict_mode=1;
#Legacy Master Slave
# Myisam
connect master_node,127.0.0.1,root,,$db_name, $M_port;
set gtid_domain_id= 0;;
connect slave_node,127.0.0.1,root,,test, $S_port;
set gtid_domain_id= 0;;
connection master_node;
create table t1( a int, b int) engine=myisam;
insert into t1 values(1,1);
insert into t1 values(2,2);
#Normal Alter
alter table t1 add column c int;
#Failed Alter
insert into t1 values(1,1, NULL);
alter table t1 change a a int unique ;
ERROR 23000: Duplicate entry '1' for key 'a'
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL,
`c` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
connection master_node;
drop table t1;
# Innodb
connection master_node;
create table t1( a int, b int) engine=innodb;
insert into t1 values(1,1);
insert into t1 values(2,2);
#Normal Alter
alter table t1 add column c int;
#Failed Alter
insert into t1 values(1,1, NULL);
alter table t1 change a a int unique ;
ERROR 23000: Duplicate entry '1' for key 'a'
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL,
`c` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
connection master_node;
drop table t1;
# Aria
connection master_node;
create table t1( a int, b int) engine=aria;
insert into t1 values(1,1);
insert into t1 values(2,2);
#Normal Alter
alter table t1 add column c int;
#Failed Alter
insert into t1 values(1,1, NULL);
alter table t1 change a a int unique ;
ERROR 23000: Duplicate entry '1' for key 'a'
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL,
`c` int(11) DEFAULT NULL
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
connection master_node;
drop table t1;
connection master_node;
#concurrent alter Myisam
connection master_node;
set global debug_dbug="+d,start_alter_delay_master";
create table t1( a int primary key, b int) engine=myisam;
insert into t1 values(1,1),(2,2);
create table t2( a int primary key, b int) engine=myisam;
insert into t2 values(1,1),(2,2);
create table t3( a int primary key, b int) engine=myisam;
insert into t3 values(1,1),(2,2);
create table t4( a int primary key, b int) engine=myisam;
insert into t4 values(1,1),(2,2);
create table t5( a int primary key, b int) engine=myisam;
insert into t5 values(1,1),(2,2);
create table t6( a int primary key, b int) engine=myisam;
insert into t6 values(1,1),(2,2);
create table t7( a int primary key, b int) engine=myisam;
insert into t7 values(1,1),(2,2);
create table t8( a int primary key, b int) engine=myisam;
insert into t8 values(1,1),(2,2);
create table t9( a int primary key, b int) engine=myisam;
insert into t9 values(1,1),(2,2);
create table t10( a int primary key, b int) engine=myisam;
insert into t10 values(1,1),(2,2);
set global gtid_domain_id= 0;;
connect con1,127.0.0.1,root,,$db_name, $M_port;
connect con2,127.0.0.1,root,,$db_name, $M_port;
connect con3,127.0.0.1,root,,$db_name, $M_port;
connect con4,127.0.0.1,root,,$db_name, $M_port;
connect con5,127.0.0.1,root,,$db_name, $M_port;
set global gtid_domain_id= 0;;
connect con6,127.0.0.1,root,,$db_name, $M_port;
connect con7,127.0.0.1,root,,$db_name, $M_port;
connect con8,127.0.0.1,root,,$db_name, $M_port;
connect con9,127.0.0.1,root,,$db_name, $M_port;
connect con10,127.0.0.1,root,,$db_name, $M_port;
set global gtid_domain_id= 0;;
connect con11,127.0.0.1,root,,$db_name, $M_port;
connect con12,127.0.0.1,root,,$db_name, $M_port;
connect con13,127.0.0.1,root,,$db_name, $M_port;
connect con14,127.0.0.1,root,,$db_name, $M_port;
connect con15,127.0.0.1,root,,$db_name, $M_port;
set global gtid_domain_id= 0;;
connect con16,127.0.0.1,root,,$db_name, $M_port;
connect con17,127.0.0.1,root,,$db_name, $M_port;
connect con18,127.0.0.1,root,,$db_name, $M_port;
connect con19,127.0.0.1,root,,$db_name, $M_port;
connect con20,127.0.0.1,root,,$db_name, $M_port;
connection con1;
alter table t1 add column c int, force, algorithm=copy;
connection con2;
alter table t2 add column c int, force, algorithm=copy;
connection con3;
alter table t3 add column c int, force, algorithm=copy;
connection con4;
alter table t4 add column c int, force, algorithm=copy;
connection con5;
alter table t5 add column c int, force, algorithm=copy;
connection con6;
alter table t6 add column c int, force, algorithm=copy;
connection con7;
alter table t7 add column c int, force, algorithm=copy;
connection con8;
alter table t8 add column c int, force, algorithm=copy;
connection con9;
alter table t9 add column c int, force, algorithm=copy;
connection con10;
alter table t10 add column c int, force, algorithm=copy;
connection master_node;
set DEBUG_SYNC= "now signal alter_cont";
connection con1;
connection con2;
connection con3;
connection con4;
connection con5;
connection con6;
connection con7;
connection con8;
connection con9;
connection con10;
connection master_node;
set DEBUG_SYNC= 'RESET';
#Concurrent DML
connection con1;
alter table t1 add column d int, force, algorithm=copy;
connection con2;
alter table t2 add column d int, force, algorithm=copy;
connection con3;
alter table t3 add column d int, force, algorithm=copy;
connection con4;
alter table t4 add column d int, force, algorithm=copy;
connection con5;
alter table t5 add column d int, force, algorithm=copy;
connection con6;
alter table t6 add column d int, force, algorithm=copy;
connection con7;
alter table t7 add column d int, force, algorithm=copy;
connection con8;
alter table t8 add column d int, force, algorithm=copy;
connection con9;
alter table t9 add column d int, force, algorithm=copy;
connection con10;
alter table t10 add column d int, force, algorithm=copy;
connection master_node;
set DEBUG_SYNC= "now signal alter_cont";
connection con1;
connection con2;
connection con3;
connection con4;
connection con5;
connection con6;
connection con7;
connection con8;
connection con9;
connection con10;
connection master_node;
set DEBUG_SYNC= 'RESET';
# Rollback tests
connection con1;
insert into t1 values(3,2,1,1);
alter table t1 change b b int unique, force, algorithm=copy;
connection con2;
insert into t2 values(3,2,1,1);
alter table t2 change b b int unique, force, algorithm=copy;
connection con3;
insert into t3 values(3,2,1,1);
alter table t3 change b b int unique, force, algorithm=copy;
connection con4;
insert into t4 values(3,2,1,1);
alter table t4 change b b int unique, force, algorithm=copy;
connection con5;
insert into t5 values(3,2,1,1);
alter table t5 change b b int unique, force, algorithm=copy;
connection con6;
insert into t6 values(3,2,1,1);
alter table t6 change b b int unique, force, algorithm=copy;
connection con7;
insert into t7 values(3,2,1,1);
alter table t7 change b b int unique, force, algorithm=copy;
connection con8;
insert into t8 values(3,2,1,1);
alter table t8 change b b int unique, force, algorithm=copy;
connection con9;
insert into t9 values(3,2,1,1);
alter table t9 change b b int unique, force, algorithm=copy;
connection con10;
insert into t10 values(3,2,1,1);
alter table t10 change b b int unique, force, algorithm=copy;
connection master_node;
set DEBUG_SYNC= "now signal alter_cont";
connection con1;
ERROR 23000: Duplicate entry '2' for key 'b'
connection con2;
ERROR 23000: Duplicate entry '2' for key 'b'
connection con3;
ERROR 23000: Duplicate entry '2' for key 'b'
connection con4;
ERROR 23000: Duplicate entry '2' for key 'b'
connection con5;
ERROR 23000: Duplicate entry '2' for key 'b'
connection con6;
ERROR 23000: Duplicate entry '2' for key 'b'
connection con7;
ERROR 23000: Duplicate entry '2' for key 'b'
connection con8;
ERROR 23000: Duplicate entry '2' for key 'b'
connection con9;
ERROR 23000: Duplicate entry '2' for key 'b'
connection con10;
ERROR 23000: Duplicate entry '2' for key 'b'
connection master_node;
set DEBUG_SYNC= 'RESET';
drop table t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
disconnect con1;
disconnect con2;
disconnect con3;
disconnect con4;
disconnect con5;
disconnect con6;
disconnect con7;
disconnect con8;
disconnect con9;
disconnect con10;
disconnect con11;
disconnect con12;
disconnect con13;
disconnect con14;
disconnect con15;
disconnect con16;
disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
SET GLOBAL debug_dbug= "";
connection master_node;
#concurrent alter Aria
connection master_node;
set global debug_dbug="+d,start_alter_delay_master";
create table t1( a int primary key, b int) engine=aria;
insert into t1 values(1,1),(2,2);
create table t2( a int primary key, b int) engine=aria;
insert into t2 values(1,1),(2,2);
create table t3( a int primary key, b int) engine=aria;
insert into t3 values(1,1),(2,2);
create table t4( a int primary key, b int) engine=aria;
insert into t4 values(1,1),(2,2);
create table t5( a int primary key, b int) engine=aria;
insert into t5 values(1,1),(2,2);
create table t6( a int primary key, b int) engine=aria;
insert into t6 values(1,1),(2,2);
create table t7( a int primary key, b int) engine=aria;
insert into t7 values(1,1),(2,2);
create table t8( a int primary key, b int) engine=aria;
insert into t8 values(1,1),(2,2);
create table t9( a int primary key, b int) engine=aria;
insert into t9 values(1,1),(2,2);
create table t10( a int primary key, b int) engine=aria;
insert into t10 values(1,1),(2,2);
set global gtid_domain_id= 0;;
connect con1,127.0.0.1,root,,$db_name, $M_port;
connect con2,127.0.0.1,root,,$db_name, $M_port;
connect con3,127.0.0.1,root,,$db_name, $M_port;
connect con4,127.0.0.1,root,,$db_name, $M_port;
connect con5,127.0.0.1,root,,$db_name, $M_port;
set global gtid_domain_id= 0;;
connect con6,127.0.0.1,root,,$db_name, $M_port;
connect con7,127.0.0.1,root,,$db_name, $M_port;
connect con8,127.0.0.1,root,,$db_name, $M_port;
connect con9,127.0.0.1,root,,$db_name, $M_port;
connect con10,127.0.0.1,root,,$db_name, $M_port;
set global gtid_domain_id= 0;;
connect con11,127.0.0.1,root,,$db_name, $M_port;
connect con12,127.0.0.1,root,,$db_name, $M_port;
connect con13,127.0.0.1,root,,$db_name, $M_port;
connect con14,127.0.0.1,root,,$db_name, $M_port;
connect con15,127.0.0.1,root,,$db_name, $M_port;
set global gtid_domain_id= 0;;
connect con16,127.0.0.1,root,,$db_name, $M_port;
connect con17,127.0.0.1,root,,$db_name, $M_port;
connect con18,127.0.0.1,root,,$db_name, $M_port;
connect con19,127.0.0.1,root,,$db_name, $M_port;
connect con20,127.0.0.1,root,,$db_name, $M_port;
connection con1;
alter table t1 add column c int, force, algorithm=copy;
connection con2;
alter table t2 add column c int, force, algorithm=copy;
connection con3;
alter table t3 add column c int, force, algorithm=copy;
connection con4;
alter table t4 add column c int, force, algorithm=copy;
connection con5;
alter table t5 add column c int, force, algorithm=copy;
connection con6;
alter table t6 add column c int, force, algorithm=copy;
connection con7;
alter table t7 add column c int, force, algorithm=copy;
connection con8;
alter table t8 add column c int, force, algorithm=copy;
connection con9;
alter table t9 add column c int, force, algorithm=copy;
connection con10;
alter table t10 add column c int, force, algorithm=copy;
connection master_node;
set DEBUG_SYNC= "now signal alter_cont";
connection con1;
connection con2;
connection con3;
connection con4;
connection con5;
connection con6;
connection con7;
connection con8;
connection con9;
connection con10;
connection master_node;
set DEBUG_SYNC= 'RESET';
#Concurrent DML
connection con1;
alter table t1 add column d int, force, algorithm=copy;
connection con2;
alter table t2 add column d int, force, algorithm=copy;
connection con3;
alter table t3 add column d int, force, algorithm=copy;
connection con4;
alter table t4 add column d int, force, algorithm=copy;
connection con5;
alter table t5 add column d int, force, algorithm=copy;
connection con6;
alter table t6 add column d int, force, algorithm=copy;
connection con7;
alter table t7 add column d int, force, algorithm=copy;
connection con8;
alter table t8 add column d int, force, algorithm=copy;
connection con9;
alter table t9 add column d int, force, algorithm=copy;
connection con10;
alter table t10 add column d int, force, algorithm=copy;
connection master_node;
set DEBUG_SYNC= "now signal alter_cont";
connection con1;
connection con2;
connection con3;
connection con4;
connection con5;
connection con6;
connection con7;
connection con8;
connection con9;
connection con10;
connection master_node;
set DEBUG_SYNC= 'RESET';
# Rollback tests
connection con1;
insert into t1 values(3,2,1,1);
alter table t1 change b b int unique, force, algorithm=copy;
connection con2;
insert into t2 values(3,2,1,1);
alter table t2 change b b int unique, force, algorithm=copy;
connection con3;
insert into t3 values(3,2,1,1);
alter table t3 change b b int unique, force, algorithm=copy;
connection con4;
insert into t4 values(3,2,1,1);
alter table t4 change b b int unique, force, algorithm=copy;
connection con5;
insert into t5 values(3,2,1,1);
alter table t5 change b b int unique, force, algorithm=copy;
connection con6;
insert into t6 values(3,2,1,1);
alter table t6 change b b int unique, force, algorithm=copy;
connection con7;
insert into t7 values(3,2,1,1);
alter table t7 change b b int unique, force, algorithm=copy;
connection con8;
insert into t8 values(3,2,1,1);
alter table t8 change b b int unique, force, algorithm=copy;
connection con9;
insert into t9 values(3,2,1,1);
alter table t9 change b b int unique, force, algorithm=copy;
connection con10;
insert into t10 values(3,2,1,1);
alter table t10 change b b int unique, force, algorithm=copy;
connection master_node;
set DEBUG_SYNC= "now signal alter_cont";
connection con1;
ERROR 23000: Duplicate entry '2' for key 'b'
connection con2;
ERROR 23000: Duplicate entry '2' for key 'b'
connection con3;
ERROR 23000: Duplicate entry '2' for key 'b'
connection con4;
ERROR 23000: Duplicate entry '2' for key 'b'
connection con5;
ERROR 23000: Duplicate entry '2' for key 'b'
connection con6;
ERROR 23000: Duplicate entry '2' for key 'b'
connection con7;
ERROR 23000: Duplicate entry '2' for key 'b'
connection con8;
ERROR 23000: Duplicate entry '2' for key 'b'
connection con9;
ERROR 23000: Duplicate entry '2' for key 'b'
connection con10;
ERROR 23000: Duplicate entry '2' for key 'b'
connection master_node;
set DEBUG_SYNC= 'RESET';
drop table t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
disconnect con1;
disconnect con2;
disconnect con3;
disconnect con4;
disconnect con5;
disconnect con6;
disconnect con7;
disconnect con8;
disconnect con9;
disconnect con10;
disconnect con11;
disconnect con12;
disconnect con13;
disconnect con14;
disconnect con15;
disconnect con16;
disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
SET GLOBAL debug_dbug= "";
connection master_node;
#concurrent alter Innodb copy
connection master_node;
set global debug_dbug="+d,start_alter_delay_master";
create table t1( a int primary key, b int) engine=innodb;
insert into t1 values(1,1),(2,2);
create table t2( a int primary key, b int) engine=innodb;
insert into t2 values(1,1),(2,2);
create table t3( a int primary key, b int) engine=innodb;
insert into t3 values(1,1),(2,2);
create table t4( a int primary key, b int) engine=innodb;
insert into t4 values(1,1),(2,2);
create table t5( a int primary key, b int) engine=innodb;
insert into t5 values(1,1),(2,2);
create table t6( a int primary key, b int) engine=innodb;
insert into t6 values(1,1),(2,2);
create table t7( a int primary key, b int) engine=innodb;
insert into t7 values(1,1),(2,2);
create table t8( a int primary key, b int) engine=innodb;
insert into t8 values(1,1),(2,2);
create table t9( a int primary key, b int) engine=innodb;
insert into t9 values(1,1),(2,2);
create table t10( a int primary key, b int) engine=innodb;
insert into t10 values(1,1),(2,2);
set global gtid_domain_id= 0;;
connect con1,127.0.0.1,root,,$db_name, $M_port;
connect con2,127.0.0.1,root,,$db_name, $M_port;
connect con3,127.0.0.1,root,,$db_name, $M_port;
connect con4,127.0.0.1,root,,$db_name, $M_port;
connect con5,127.0.0.1,root,,$db_name, $M_port;
set global gtid_domain_id= 0;;
connect con6,127.0.0.1,root,,$db_name, $M_port;
connect con7,127.0.0.1,root,,$db_name, $M_port;
connect con8,127.0.0.1,root,,$db_name, $M_port;
connect con9,127.0.0.1,root,,$db_name, $M_port;
connect con10,127.0.0.1,root,,$db_name, $M_port;
set global gtid_domain_id= 0;;
connect con11,127.0.0.1,root,,$db_name, $M_port;
connect con12,127.0.0.1,root,,$db_name, $M_port;
connect con13,127.0.0.1,root,,$db_name, $M_port;
connect con14,127.0.0.1,root,,$db_name, $M_port;
connect con15,127.0.0.1,root,,$db_name, $M_port;
set global gtid_domain_id= 0;;
connect con16,127.0.0.1,root,,$db_name, $M_port;
connect con17,127.0.0.1,root,,$db_name, $M_port;
connect con18,127.0.0.1,root,,$db_name, $M_port;
connect con19,127.0.0.1,root,,$db_name, $M_port;
connect con20,127.0.0.1,root,,$db_name, $M_port;
connection con1;
alter table t1 add column c int, force, algorithm=copy;
connection con2;
alter table t2 add column c int, force, algorithm=copy;
connection con3;
alter table t3 add column c int, force, algorithm=copy;
connection con4;
alter table t4 add column c int, force, algorithm=copy;
connection con5;
alter table t5 add column c int, force, algorithm=copy;
connection con6;
alter table t6 add column c int, force, algorithm=copy;
connection con7;
alter table t7 add column c int, force, algorithm=copy;
connection con8;
alter table t8 add column c int, force, algorithm=copy;
connection con9;
alter table t9 add column c int, force, algorithm=copy;
connection con10;
alter table t10 add column c int, force, algorithm=copy;
connection master_node;
set DEBUG_SYNC= "now signal alter_cont";
connection con1;
connection con2;
connection con3;
connection con4;
connection con5;
connection con6;
connection con7;
connection con8;
connection con9;
connection con10;
connection master_node;
set DEBUG_SYNC= 'RESET';
#Concurrent DML
connection con1;
alter table t1 add column d int, force, algorithm=copy;
connection con2;
alter table t2 add column d int, force, algorithm=copy;
connection con3;
alter table t3 add column d int, force, algorithm=copy;
connection con4;
alter table t4 add column d int, force, algorithm=copy;
connection con5;
alter table t5 add column d int, force, algorithm=copy;
connection con6;
alter table t6 add column d int, force, algorithm=copy;
connection con7;
alter table t7 add column d int, force, algorithm=copy;
connection con8;
alter table t8 add column d int, force, algorithm=copy;
connection con9;
alter table t9 add column d int, force, algorithm=copy;
connection con10;
alter table t10 add column d int, force, algorithm=copy;
connection master_node;
set DEBUG_SYNC= "now signal alter_cont";
connection con1;
connection con2;
connection con3;
connection con4;
connection con5;
connection con6;
connection con7;
connection con8;
connection con9;
connection con10;
connection master_node;
set DEBUG_SYNC= 'RESET';
# Rollback tests
connection con1;
insert into t1 values(3,2,1,1);
alter table t1 change b b int unique, force, algorithm=copy;
connection con2;
insert into t2 values(3,2,1,1);
alter table t2 change b b int unique, force, algorithm=copy;
connection con3;
insert into t3 values(3,2,1,1);
alter table t3 change b b int unique, force, algorithm=copy;
connection con4;
insert into t4 values(3,2,1,1);
alter table t4 change b b int unique, force, algorithm=copy;
connection con5;
insert into t5 values(3,2,1,1);
alter table t5 change b b int unique, force, algorithm=copy;
connection con6;
insert into t6 values(3,2,1,1);
alter table t6 change b b int unique, force, algorithm=copy;
connection con7;
insert into t7 values(3,2,1,1);
alter table t7 change b b int unique, force, algorithm=copy;
connection con8;
insert into t8 values(3,2,1,1);
alter table t8 change b b int unique, force, algorithm=copy;
connection con9;
insert into t9 values(3,2,1,1);
alter table t9 change b b int unique, force, algorithm=copy;
connection con10;
insert into t10 values(3,2,1,1);
alter table t10 change b b int unique, force, algorithm=copy;
connection master_node;
set DEBUG_SYNC= "now signal alter_cont";
connection con1;
ERROR 23000: Duplicate entry '2' for key 'b'
connection con2;
ERROR 23000: Duplicate entry '2' for key 'b'
connection con3;
ERROR 23000: Duplicate entry '2' for key 'b'
connection con4;
ERROR 23000: Duplicate entry '2' for key 'b'
connection con5;
ERROR 23000: Duplicate entry '2' for key 'b'
connection con6;
ERROR 23000: Duplicate entry '2' for key 'b'
connection con7;
ERROR 23000: Duplicate entry '2' for key 'b'
connection con8;
ERROR 23000: Duplicate entry '2' for key 'b'
connection con9;
ERROR 23000: Duplicate entry '2' for key 'b'
connection con10;
ERROR 23000: Duplicate entry '2' for key 'b'
connection master_node;
set DEBUG_SYNC= 'RESET';
drop table t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
disconnect con1;
disconnect con2;
disconnect con3;
disconnect con4;
disconnect con5;
disconnect con6;
disconnect con7;
disconnect con8;
disconnect con9;
disconnect con10;
disconnect con11;
disconnect con12;
disconnect con13;
disconnect con14;
disconnect con15;
disconnect con16;
disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
SET GLOBAL debug_dbug= "";
connection master_node;
#concurrent alter Innodb Inplace
connection master_node;
set global debug_dbug="+d,start_alter_delay_master";
create table t1( a int primary key, b int) engine=innodb;
insert into t1 values(1,1),(2,2);
create table t2( a int primary key, b int) engine=innodb;
insert into t2 values(1,1),(2,2);
create table t3( a int primary key, b int) engine=innodb;
insert into t3 values(1,1),(2,2);
create table t4( a int primary key, b int) engine=innodb;
insert into t4 values(1,1),(2,2);
create table t5( a int primary key, b int) engine=innodb;
insert into t5 values(1,1),(2,2);
create table t6( a int primary key, b int) engine=innodb;
insert into t6 values(1,1),(2,2);
create table t7( a int primary key, b int) engine=innodb;
insert into t7 values(1,1),(2,2);
create table t8( a int primary key, b int) engine=innodb;
insert into t8 values(1,1),(2,2);
create table t9( a int primary key, b int) engine=innodb;
insert into t9 values(1,1),(2,2);
create table t10( a int primary key, b int) engine=innodb;
insert into t10 values(1,1),(2,2);
set global gtid_domain_id= 0;;
connect con1,127.0.0.1,root,,$db_name, $M_port;
connect con2,127.0.0.1,root,,$db_name, $M_port;
connect con3,127.0.0.1,root,,$db_name, $M_port;
connect con4,127.0.0.1,root,,$db_name, $M_port;
connect con5,127.0.0.1,root,,$db_name, $M_port;
set global gtid_domain_id= 0;;
connect con6,127.0.0.1,root,,$db_name, $M_port;
connect con7,127.0.0.1,root,,$db_name, $M_port;
connect con8,127.0.0.1,root,,$db_name, $M_port;
connect con9,127.0.0.1,root,,$db_name, $M_port;
connect con10,127.0.0.1,root,,$db_name, $M_port;
set global gtid_domain_id= 0;;
connect con11,127.0.0.1,root,,$db_name, $M_port;
connect con12,127.0.0.1,root,,$db_name, $M_port;
connect con13,127.0.0.1,root,,$db_name, $M_port;
connect con14,127.0.0.1,root,,$db_name, $M_port;
connect con15,127.0.0.1,root,,$db_name, $M_port;
set global gtid_domain_id= 0;;
connect con16,127.0.0.1,root,,$db_name, $M_port;
connect con17,127.0.0.1,root,,$db_name, $M_port;
connect con18,127.0.0.1,root,,$db_name, $M_port;
connect con19,127.0.0.1,root,,$db_name, $M_port;
connect con20,127.0.0.1,root,,$db_name, $M_port;
connection con1;
alter table t1 add column c int, force, algorithm=inplace;
connection con2;
alter table t2 add column c int, force, algorithm=inplace;
connection con3;
alter table t3 add column c int, force, algorithm=inplace;
connection con4;
alter table t4 add column c int, force, algorithm=inplace;
connection con5;
alter table t5 add column c int, force, algorithm=inplace;
connection con6;
alter table t6 add column c int, force, algorithm=inplace;
connection con7;
alter table t7 add column c int, force, algorithm=inplace;
connection con8;
alter table t8 add column c int, force, algorithm=inplace;
connection con9;
alter table t9 add column c int, force, algorithm=inplace;
connection con10;
alter table t10 add column c int, force, algorithm=inplace;
connection master_node;
set DEBUG_SYNC= "now signal alter_cont";
connection con1;
connection con2;
connection con3;
connection con4;
connection con5;
connection con6;
connection con7;
connection con8;
connection con9;
connection con10;
connection master_node;
set DEBUG_SYNC= 'RESET';
#Concurrent DML
connection con1;
alter table t1 add column d int, force, algorithm=inplace;
connection con2;
alter table t2 add column d int, force, algorithm=inplace;
connection con3;
alter table t3 add column d int, force, algorithm=inplace;
connection con4;
alter table t4 add column d int, force, algorithm=inplace;
connection con5;
alter table t5 add column d int, force, algorithm=inplace;
connection con6;
alter table t6 add column d int, force, algorithm=inplace;
connection con7;
alter table t7 add column d int, force, algorithm=inplace;
connection con8;
alter table t8 add column d int, force, algorithm=inplace;
connection con9;
alter table t9 add column d int, force, algorithm=inplace;
connection con10;
alter table t10 add column d int, force, algorithm=inplace;
connection con11;
insert into t1 values(5,5,5);;
connection con12;
insert into t2 values(5,5,5);;
connection con13;
insert into t3 values(5,5,5);;
connection con14;
insert into t4 values(5,5,5);;
connection con15;
insert into t5 values(5,5,5);;
connection con16;
insert into t6 values(5,5,5);;
connection con17;
insert into t7 values(5,5,5);;
connection con18;
insert into t8 values(5,5,5);;
connection con19;
insert into t9 values(5,5,5);;
connection con20;
insert into t10 values(5,5,5);;
connection master_node;
set DEBUG_SYNC= "now signal alter_cont";
connection con11;
connection con12;
connection con13;
connection con14;
connection con15;
connection con16;
connection con17;
connection con18;
connection con19;
connection con20;
connection master_node;
set DEBUG_SYNC= "now signal alter_cont";
connection con1;
connection con2;
connection con3;
connection con4;
connection con5;
connection con6;
connection con7;
connection con8;
connection con9;
connection con10;
connection master_node;
set DEBUG_SYNC= 'RESET';
# Rollback tests
connection con1;
insert into t1 values(3,2,1,1);
alter table t1 change b b int unique, force, algorithm=inplace;
connection con2;
insert into t2 values(3,2,1,1);
alter table t2 change b b int unique, force, algorithm=inplace;
connection con3;
insert into t3 values(3,2,1,1);
alter table t3 change b b int unique, force, algorithm=inplace;
connection con4;
insert into t4 values(3,2,1,1);
alter table t4 change b b int unique, force, algorithm=inplace;
connection con5;
insert into t5 values(3,2,1,1);
alter table t5 change b b int unique, force, algorithm=inplace;
connection con6;
insert into t6 values(3,2,1,1);
alter table t6 change b b int unique, force, algorithm=inplace;
connection con7;
insert into t7 values(3,2,1,1);
alter table t7 change b b int unique, force, algorithm=inplace;
connection con8;
insert into t8 values(3,2,1,1);
alter table t8 change b b int unique, force, algorithm=inplace;
connection con9;
insert into t9 values(3,2,1,1);
alter table t9 change b b int unique, force, algorithm=inplace;
connection con10;
insert into t10 values(3,2,1,1);
alter table t10 change b b int unique, force, algorithm=inplace;
connection master_node;
set DEBUG_SYNC= "now signal alter_cont";
connection con1;
ERROR 23000: Duplicate entry '2' for key 'b'
connection con2;
ERROR 23000: Duplicate entry '2' for key 'b'
connection con3;
ERROR 23000: Duplicate entry '2' for key 'b'
connection con4;
ERROR 23000: Duplicate entry '2' for key 'b'
connection con5;
ERROR 23000: Duplicate entry '2' for key 'b'
connection con6;
ERROR 23000: Duplicate entry '2' for key 'b'
connection con7;
ERROR 23000: Duplicate entry '2' for key 'b'
connection con8;
ERROR 23000: Duplicate entry '2' for key 'b'
connection con9;
ERROR 23000: Duplicate entry '2' for key 'b'
connection con10;
ERROR 23000: Duplicate entry '2' for key 'b'
connection master_node;
set DEBUG_SYNC= 'RESET';
drop table t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
disconnect con1;
disconnect con2;
disconnect con3;
disconnect con4;
disconnect con5;
disconnect con6;
disconnect con7;
disconnect con8;
disconnect con9;
disconnect con10;
disconnect con11;
disconnect con12;
disconnect con13;
disconnect con14;
disconnect con15;
disconnect con16;
disconnect con17;
disconnect con18;
disconnect con19;
disconnect con20;
connection default;
SET GLOBAL debug_dbug= "";
disconnect master_node;
disconnect slave_node;
select @@gtid_binlog_state;
@@gtid_binlog_state
0-1-401
RESET master;
connection slave;
select @@gtid_binlog_state;
@@gtid_binlog_state
0-1-401
set global gtid_strict_mode=0;
include/start_slave.inc
connection master;
set global binlog_split_alter=false;
include/rpl_end.inc
......@@ -19,6 +19,7 @@ set global gtid_strict_mode=1;
--let $sync_slave=1
--source include/start_alter_include.test
--connection master
--source include/save_master_gtid.inc
--connection slave
......
......@@ -28,6 +28,7 @@ change master to master_use_gtid=slave_pos;
--let $S_port= $SLAVE_MYPORT
--let $sync_slave=1
--source include/start_alter_include.test
--connection master
--source include/save_master_gtid.inc
--connection slave
......
......@@ -27,6 +27,7 @@ change master to master_use_gtid=slave_pos;
--let $S_port= $SLAVE_MYPORT
--let $sync_slave=1
--source include/start_alter_include.test
--connection master
--source include/save_master_gtid.inc
--connection slave
......
......@@ -27,6 +27,7 @@ change master to master_use_gtid=slave_pos;
--let $S_port= $SLAVE_MYPORT
--let $sync_slave=1
--source include/start_alter_include.test
--connection master
--source include/save_master_gtid.inc
--connection slave
......
......@@ -27,6 +27,7 @@ change master to master_use_gtid=slave_pos;
--let $S_port= $SLAVE_MYPORT
--let $sync_slave=1
--source include/start_alter_include.test
--connection master
--source include/save_master_gtid.inc
--connection slave
......
......@@ -30,6 +30,7 @@ change master to master_use_gtid=slave_pos;
--let $S_port= $SLAVE_MYPORT
--let $sync_slave=1
--source include/start_alter_include.test
--connection master
--source include/save_master_gtid.inc
--connection slave
......
......@@ -25,10 +25,12 @@ set global gtid_strict_mode=1;
--disable_warnings
--disable_query_log
--replace_result $SERVER_MYPORT_1 MYPORT_1
eval change master 'm1' to master_port=$SERVER_MYPORT_1 , master_host='127.0.0.1', master_user='root', master_use_gtid=slave_pos;
#--replace_result $SERVER_MYPORT_2 MYPORT_2
eval change master 'm2' to master_port=$SERVER_MYPORT_2 , master_host='127.0.0.1', master_user='root', master_use_gtid=slave_pos;
--enable_query_log
--enable_warnings
......
......@@ -25,10 +25,12 @@ set global gtid_strict_mode=1;
--disable_warnings
--disable_query_log
--replace_result $SERVER_MYPORT_1 MYPORT_1
eval change master 'm1' to master_port=$SERVER_MYPORT_1 , master_host='127.0.0.1', master_user='root', master_use_gtid=slave_pos;
#--replace_result $SERVER_MYPORT_2 MYPORT_2
eval change master 'm2' to master_port=$SERVER_MYPORT_2 , master_host='127.0.0.1', master_user='root', master_use_gtid=slave_pos;
--enable_query_log
--enable_warnings
......
#
# Start Alter with binlog applied using mysqlbinlog
#
--source include/have_log_bin.inc
--source include/have_innodb.inc
--source include/master-slave.inc
--source include/have_debug.inc
--connection master
set global binlog_split_alter=true;
--connection slave
--source include/stop_slave.inc
change master to master_use_gtid= current_pos;
set global gtid_strict_mode=1;
--echo #Legacy Master Slave
--let $domain_1=0
--let $domain_2=0
--let $M_port= $MASTER_MYPORT
--let $S_port= $SLAVE_MYPORT
--let $sync_slave=0
#create table t1(a int);
#alter table t1 add column b int execute= UNTIL COMMIT 12;
--source include/start_alter_include.test
let MYSQLD_DATADIR= `select @@datadir;`;
--exec $MYSQL_BINLOG $MYSQLD_DATADIR/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/master.sql
select @@gtid_binlog_state;
RESET master;
--connection slave
--exec $MYSQL --host=127.0.0.1 --port=$SLAVE_MYPORT -e "source $MYSQLTEST_VARDIR/tmp/master.sql"
select @@gtid_binlog_state;
set global gtid_strict_mode=0;
--source include/start_slave.inc
--connection master
set global binlog_split_alter=false;
--source include/rpl_end.inc
......@@ -388,6 +388,7 @@ static int process_start_alter(THD *thd, uint64 thread_id)
thd->rgi_slave->reserved_start_alter_thread= false;
if (write_bin_log(thd, false, thd->query(), thd->query_length()))
return START_ALTER_ERROR;
my_ok(thd);
return START_ALTER_SKIP;
}
return START_ALTER_PARSE;
......@@ -498,6 +499,7 @@ static int process_rollback_alter(THD *thd, uint64 thread_id)
write_binlog:
if (write_bin_log(thd, true, thd->query(), thd->query_length()))
return START_ALTER_ERROR;
my_ok(thd);
return START_ALTER_SKIP;
}
bool Sql_cmd_alter_table::execute(THD *thd)
......
......@@ -9365,6 +9365,17 @@ static void wait_for_master(THD *thd, start_alter_info* info)
return;
}
static void alter_committed(THD *thd, start_alter_info* info, Master_info *mi)
{
start_alter_state tmp= info->state;
mysql_mutex_lock(&mi->start_alter_lock);
info->state= start_alter_state::COMMITTED;
mysql_mutex_unlock(&mi->start_alter_lock);
mysql_cond_broadcast(&info->start_alter_cond);
if (tmp == start_alter_state::ROLLBACK_ALTER)
thd->clear_error();
}
/*
master_result:- process the info->state recieved from master
@retval >=1 Error{ 1= ROLLBACK recieved from master , 2= error
......@@ -9380,11 +9391,7 @@ static int master_result(THD *thd, Master_info *mi, start_alter_info *info,
DBUG_ASSERT(info->state > start_alter_state::REGISTERED);
if (info->state == start_alter_state::ROLLBACK_ALTER)
{
mysql_mutex_lock(&mi->start_alter_lock);
info->state= start_alter_state::COMMITTED;
mysql_mutex_unlock(&mi->start_alter_lock);
mysql_cond_broadcast(&info->start_alter_cond);
thd->clear_error();
alter_committed(thd, info, mi);
return MASTER_RESULT_ROLLBACK;
}
else if (info->state == start_alter_state::COMMIT_ALTER && alter_result)
......@@ -10288,7 +10295,7 @@ do_continue:;
if (res)
{
if (opt_binlog_split_alter)
if (partial_alter)
{
thd->gtid_flags3|= Gtid_log_event::FL_ROLLBACK_ALTER_E1;
sprintf(send_query, "/*!100001 %s EXECUTE = ROLLBACK %ld */", thd->query(),
......@@ -10345,6 +10352,8 @@ do_continue:;
thd->close_unused_temporary_table_instances(table_list);
//If issues by binlog/master complete the prepare phase of alter and then commit
if (table->s->tmp_table == NO_TMP_TABLE || (table->s->tmp_table != NO_TMP_TABLE &&
!thd->is_current_stmt_binlog_format_row()))
if (write_start_alter(thd, &partial_alter, info))
DBUG_RETURN(true);
DBUG_EXECUTE_IF("start_alter_delay_master", {
......@@ -10467,12 +10476,7 @@ do_continue:;
}
else if(start_alter_id && !thd->direct_commit_alter)
{
//if(write_bin_log(thd, FALSE, send_query, strlen(send_query), true))
// DBUG_RETURN(true);
mysql_mutex_lock(&mi->start_alter_lock);
info->state= start_alter_state::COMMITTED;
mysql_mutex_unlock(&mi->start_alter_lock);
mysql_cond_broadcast(&info->start_alter_cond);
alter_committed(thd, info, mi);
}
/* We don't replicate alter table statement on temporary tables */
else if (!thd->is_current_stmt_binlog_format_row() &&
......@@ -10676,12 +10680,7 @@ do_continue:;
}
else if(start_alter_id && !thd->direct_commit_alter)
{
//if(write_bin_log(thd, FALSE, send_query, strlen(send_query), true))
// DBUG_RETURN(true);
mysql_mutex_lock(&mi->start_alter_lock);
info->state= start_alter_state::COMMITTED;
mysql_mutex_unlock(&mi->start_alter_lock);
mysql_cond_broadcast(&info->start_alter_cond);
alter_committed(thd, info, mi);
}
else if (write_bin_log(thd, true, thd->query(), thd->query_length()))
DBUG_RETURN(true);
......@@ -10733,9 +10732,10 @@ do_continue:;
(FN_IS_TMP | (no_ha_table ? NO_HA_TABLE : 0)),
alter_ctx.get_tmp_path());
//STODO
//Can be the case when master sent CA and on slave we got RA
if (start_alter_id && !thd->direct_commit_alter)
master_result(thd, mi, info, 1);
else if (opt_binlog_split_alter)
else if (partial_alter) //Write only if SA written
{
thd->gtid_flags3|= Gtid_log_event::FL_ROLLBACK_ALTER_E1;
sprintf(send_query, "/*!100001 %s EXECUTE = ROLLBACK %ld */", thd->query(),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment