summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <knielsen@knielsen-hq.org>2014-02-08 01:16:45 +0100
committerunknown <knielsen@knielsen-hq.org>2014-02-08 01:16:45 +0100
commit3c97d24f74b8bfb72746b0a32a78193f20665c44 (patch)
tree4dc59c2039b202c2124ec9a7241ecae2a7144c33
parent7bb022f3cf1971c90295ed882712ed84079bda20 (diff)
downloadmariadb-git-3c97d24f74b8bfb72746b0a32a78193f20665c44.tar.gz
MDEV-4984: Implement MASTER_GTID_WAIT() and @@LAST_GTID.
Couple of small fixes following buildbot testing.
-rw-r--r--mysql-test/include/sync_with_master_gtid.inc3
-rw-r--r--mysql-test/suite/rpl/r/rpl_gtid_basic.result10
-rw-r--r--mysql-test/suite/rpl/t/rpl_gtid_basic.test4
-rw-r--r--mysql-test/suite/sys_vars/t/last_gtid_basic.test2
-rw-r--r--sql/rpl_gtid.cc10
5 files changed, 17 insertions, 12 deletions
diff --git a/mysql-test/include/sync_with_master_gtid.inc b/mysql-test/include/sync_with_master_gtid.inc
index 7512c045c6b..97ada8eea29 100644
--- a/mysql-test/include/sync_with_master_gtid.inc
+++ b/mysql-test/include/sync_with_master_gtid.inc
@@ -40,7 +40,8 @@ if (!$_slave_timeout)
if ($_result == -1)
{
--let $_current_gtid_pos= `SELECT @@GLOBAL.gtid_slave_pos`
- --die Timeout in master_gtid_wait('$master_pos', $_slave_timeout), current slave GTID position is: $_current_gtid_pos.
+ --echo Timeout in master_gtid_wait('$master_pos', $_slave_timeout), current slave GTID position is: $_current_gtid_pos.
+ --die Failed to sync with master
}
--let $include_filename= sync_with_master_gtid.inc
diff --git a/mysql-test/suite/rpl/r/rpl_gtid_basic.result b/mysql-test/suite/rpl/r/rpl_gtid_basic.result
index 49891e1abd3..6467b114884 100644
--- a/mysql-test/suite/rpl/r/rpl_gtid_basic.result
+++ b/mysql-test/suite/rpl/r/rpl_gtid_basic.result
@@ -272,7 +272,7 @@ SELECT master_gtid_wait('2-1-1,1-1-4,0-1-110');
SELECT master_gtid_wait('0-1-1000', 0.5);
SELECT master_gtid_wait('0-1-2000');
SELECT master_gtid_wait('2-1-10');
-SELECT master_gtid_wait('2-1-5', 1);
+SELECT master_gtid_wait('2-1-6', 1);
SELECT master_gtid_wait('2-1-5');
SELECT master_gtid_wait('2-1-10');
SELECT master_gtid_wait('2-1-5,1-1-4,0-1-110');
@@ -284,14 +284,14 @@ SELECT master_gtid_wait('0-1-109');
SELECT master_gtid_wait('2-1-2', 0.5);
master_gtid_wait('2-1-2', 0.5)
-1
-KILL QUERY 22;
+KILL QUERY KILL_ID;
ERROR 70100: Query execution was interrupted
SET gtid_domain_id=2;
SET gtid_seq_no=2;
INSERT INTO t1 VALUES (4);
master_gtid_wait('2-1-2')
0
-KILL CONNECTION 25;
+KILL CONNECTION KILL_ID;
ERROR HY000: Lost connection to MySQL server during query
SET gtid_domain_id=1;
SET gtid_seq_no=4;
@@ -305,8 +305,8 @@ master_gtid_wait('2-1-1,1-1-4,0-1-110')
0
master_gtid_wait('0-1-1000', 0.5)
-1
-master_gtid_wait('2-1-5', 1)
-0
+master_gtid_wait('2-1-6', 1)
+-1
master_gtid_wait('0-1-109')
0
SET gtid_domain_id=2;
diff --git a/mysql-test/suite/rpl/t/rpl_gtid_basic.test b/mysql-test/suite/rpl/t/rpl_gtid_basic.test
index b8453766195..85dd2a6c0a4 100644
--- a/mysql-test/suite/rpl/t/rpl_gtid_basic.test
+++ b/mysql-test/suite/rpl/t/rpl_gtid_basic.test
@@ -287,7 +287,7 @@ send SELECT master_gtid_wait('0-1-2000');
send SELECT master_gtid_wait('2-1-10');
--connect (s5,127.0.0.1,root,,test,$SERVER_MYPORT_2,)
-send SELECT master_gtid_wait('2-1-5', 1);
+send SELECT master_gtid_wait('2-1-6', 1);
# This one we will kill also.
--connect (s6,127.0.0.1,root,,test,$SERVER_MYPORT_2,)
@@ -314,6 +314,7 @@ send SELECT master_gtid_wait('0-1-109');
# This one should time out.
SELECT master_gtid_wait('2-1-2', 0.5);
+--replace_result $kill1_id KILL_ID
eval KILL QUERY $kill1_id;
--connection s3
--error ER_QUERY_INTERRUPTED
@@ -328,6 +329,7 @@ INSERT INTO t1 VALUES (4);
reap;
--connection server_2
+--replace_result $kill2_id KILL_ID
eval KILL CONNECTION $kill2_id;
--connection s6
diff --git a/mysql-test/suite/sys_vars/t/last_gtid_basic.test b/mysql-test/suite/sys_vars/t/last_gtid_basic.test
index d1cd05f2c30..85fbf079bfb 100644
--- a/mysql-test/suite/sys_vars/t/last_gtid_basic.test
+++ b/mysql-test/suite/sys_vars/t/last_gtid_basic.test
@@ -1,3 +1,5 @@
+--source include/not_embedded.inc
+
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
SELECT @@global.last_gtid;
diff --git a/sql/rpl_gtid.cc b/sql/rpl_gtid.cc
index 00140fd3475..2f2254d53af 100644
--- a/sql/rpl_gtid.cc
+++ b/sql/rpl_gtid.cc
@@ -1792,7 +1792,7 @@ gtid_waiting::wait_for_gtid(THD *thd, rpl_gtid *wait_gtid,
bool timed_out= false;
#ifdef HAVE_REPLICATION
queue_element elem;
- uint32_t domain_id= wait_gtid->domain_id;
+ uint32 domain_id= wait_gtid->domain_id;
uint64 seq_no= wait_gtid->seq_no;
hash_element *he;
rpl_slave_state::element *slave_state_elem= NULL;
@@ -1958,10 +1958,6 @@ gtid_waiting::wait_for_gtid(THD *thd, rpl_gtid *wait_gtid,
thd_wait_end(thd);
}
- if (elem.wakeup_reason == queue_element::DONE)
- break;
- takeover= true;
-
if (thd->killed || timed_out)
{
remove_from_wait_hash(he, &elem);
@@ -1975,6 +1971,10 @@ gtid_waiting::wait_for_gtid(THD *thd, rpl_gtid *wait_gtid,
thd->send_kill_message();
break;
}
+
+ if (elem.wakeup_reason == queue_element::DONE)
+ break;
+ takeover= true;
}
if (did_enter_cond)