MDEV-18632: wsrep_is_wsrep_xid: Conditional jump or move depends on uninitialised value

Transaction XID is not initialized before transaction is started.
This commit is contained in:
Jan Lindström 2019-02-19 16:11:06 +02:00
parent 2a935329bc
commit 48554fe2db
3 changed files with 28 additions and 1 deletions

View File

@ -0,0 +1,10 @@
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
connect con1,localhost,root,,test;
ALTER TABLE t1;
connect con2,localhost,root,,test;
SELECT f() FROM t1;
ERROR 42000: FUNCTION test.f does not exist
disconnect con2;
disconnect con1;
connection default;
DROP TABLE t1;

View File

@ -0,0 +1,17 @@
--source include/have_innodb.inc
#
# MDEV-18632: wsrep_is_wsrep_xid: Conditional jump or move depends on uninitialised value
#
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
--connect (con1,localhost,root,,test)
ALTER TABLE t1;
--connect (con2,localhost,root,,test)
--error ER_SP_DOES_NOT_EXIST
SELECT f() FROM t1;
# Cleanup
--disconnect con2
--disconnect con1
--connection default
DROP TABLE t1;

View File

@ -4712,7 +4712,7 @@ innobase_rollback(
trx is being rolled back due to BF abort, clear XID in order
to avoid writing it to rollback segment out of order. The XID
will be reassigned when the transaction is replayed. */
if (wsrep_is_wsrep_xid(trx->xid)) {
if (trx->state != TRX_STATE_NOT_STARTED && wsrep_is_wsrep_xid(trx->xid)) {
trx->xid->null();
}
#endif /* WITH_WSREP */