summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNirbhay Choubey <nirbhay@mariadb.com>2016-04-30 21:47:35 -0400
committerNirbhay Choubey <nirbhay@mariadb.com>2016-04-30 21:47:35 -0400
commitd6ba30890c6ae63b54e7f5321e7174bfbdd85367 (patch)
tree880b0bdf35137570cf885c2c11de396c500ea4e2
parent9f5b285662ed8c13d6e87d8baf2f0ad4484d4a85 (diff)
downloadmariadb-git-hf-10.1-mdev9853.tar.gz
MDEV-9853: WSREP says it cannot get fake InnoDB transaction ID followed by segmentation faulthf-10.1-mdev9853
Ha_trx_info should not be reset in ha_fake_trx_id() as it is later used during commit.
-rw-r--r--mysql-test/suite/galera/r/create.result10
-rw-r--r--mysql-test/suite/galera/suite.pm1
-rw-r--r--mysql-test/suite/galera/t/create.test15
-rw-r--r--sql/handler.cc1
4 files changed, 26 insertions, 1 deletions
diff --git a/mysql-test/suite/galera/r/create.result b/mysql-test/suite/galera/r/create.result
index d8a2db99a68..d23fb186f5e 100644
--- a/mysql-test/suite/galera/r/create.result
+++ b/mysql-test/suite/galera/r/create.result
@@ -58,4 +58,14 @@ t2 CREATE TABLE `t2` (
KEY `idx` (`i`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
DROP TABLE t1, t2;
+#
+# MDEV-9853: WSREP says it cannot get fake InnoDB transaction ID
+# followed by segmentation fault
+#
+CREATE TABLE `t1`(`c1` INT) ENGINE=INNODB;
+SET autocommit=0;
+CREATE TABLE `t2` (`c1` INT) ENGINE=INNODB SELECT * FROM t1;
+COMMIT;
+SET autocommit=1;
+DROP TABLE t1, t2;
# End of tests
diff --git a/mysql-test/suite/galera/suite.pm b/mysql-test/suite/galera/suite.pm
index 2da2b3ad503..b3795b91666 100644
--- a/mysql-test/suite/galera/suite.pm
+++ b/mysql-test/suite/galera/suite.pm
@@ -67,6 +67,7 @@ push @::global_suppressions,
qr|WSREP: gcs_caused\(\) returned .*|,
qr|WSREP: Protocol violation. JOIN message sender .* is not in state transfer \(SYNCED\). Message ignored.|,
qr(WSREP: Action message in non-primary configuration from member [0-9]*),
+ qr(WSREP: cannot get fake InnoDB transaction ID),
);
diff --git a/mysql-test/suite/galera/t/create.test b/mysql-test/suite/galera/t/create.test
index fb9b0935288..9d0ab215cbb 100644
--- a/mysql-test/suite/galera/t/create.test
+++ b/mysql-test/suite/galera/t/create.test
@@ -54,5 +54,20 @@ SHOW CREATE TABLE t2;
# Cleanup
DROP TABLE t1, t2;
+--echo #
+--echo # MDEV-9853: WSREP says it cannot get fake InnoDB transaction ID
+--echo # followed by segmentation fault
+--echo #
+CREATE TABLE `t1`(`c1` INT) ENGINE=INNODB;
+
+SET autocommit=0;
+CREATE TABLE `t2` (`c1` INT) ENGINE=INNODB SELECT * FROM t1;
+COMMIT;
+SET autocommit=1;
+
+# Cleanup
+DROP TABLE t1, t2;
+
+--source include/galera_end.inc
--echo # End of tests
diff --git a/sql/handler.cc b/sql/handler.cc
index fb2921f9ba3..1866e1eafbc 100644
--- a/sql/handler.cc
+++ b/sql/handler.cc
@@ -6121,7 +6121,6 @@ void ha_fake_trx_id(THD *thd)
else
hton->fake_trx_id(hton, thd);
ha_info_next= ha_info->next();
- ha_info->reset(); /* keep it conveniently zero-filled */
}
DBUG_VOID_RETURN;
}