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;
......
This diff is collapsed.
......@@ -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,8 +10352,10 @@ 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 (write_start_alter(thd, &partial_alter, info))
DBUG_RETURN(true);
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", {
debug_sync_set_action(thd,
STRING_WITH_LEN("now wait_for alter_cont"));
......@@ -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