Commit 5a8a8fc9 authored by Marko Mäkelä's avatar Marko Mäkelä

MDEV-31928 Assertion xid ... < 128 failed in trx_undo_write_xid()

trx_undo_write_xid(): Correct an off-by-one error in a debug assertion.
parent 518fe519
...@@ -15,3 +15,30 @@ xa prepare 'xid2'; ...@@ -15,3 +15,30 @@ xa prepare 'xid2';
release savepoint `sv1`; release savepoint `sv1`;
xa commit 'xid2'; xa commit 'xid2';
drop table t1; drop table t1;
#
# MDEV-31928 Assertion xid ... < 128 failed in trx_undo_write_xid()
#
CREATE TABLE t (a INT PRIMARY KEY) ENGINE=INNODB;
XA START 'gtrid_67890123456789012345678901234567890123456789012345678901234','bqual_6789012345678901234567890123456789012345678901234567890123',1234567890;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '1234567890' at line 1
XA START 'gtrid_6789012345678901234567890123456789012345678901234567890123','bqual_67890123456789012345678901234567890123456789012345678901234',1234567890;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '1234567890' at line 1
XA START 'gtrid_6789012345678901234567890123456789012345678901234567890123','bqual_6789012345678901234567890123456789012345678901234567890123',1234567890;
INSERT INTO t VALUES(1);
XA END 'gtrid_67890123456789012345678901234567890123456789012345678901234','bqual_6789012345678901234567890123456789012345678901234567890123',1234567890;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '1234567890' at line 1
XA END 'gtrid_6789012345678901234567890123456789012345678901234567890123','bqual_67890123456789012345678901234567890123456789012345678901234',1234567890;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '1234567890' at line 1
XA END 'gtrid_6789012345678901234567890123456789012345678901234567890123','bqual_6789012345678901234567890123456789012345678901234567890123',1234567890;
XA PREPARE 'gtrid_67890123456789012345678901234567890123456789012345678901234','bqual_6789012345678901234567890123456789012345678901234567890123',1234567890;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '1234567890' at line 1
XA PREPARE 'gtrid_6789012345678901234567890123456789012345678901234567890123','bqual_67890123456789012345678901234567890123456789012345678901234',1234567890;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '1234567890' at line 1
XA PREPARE 'gtrid_6789012345678901234567890123456789012345678901234567890123','bqual_6789012345678901234567890123456789012345678901234567890123',1234567890;
XA COMMIT 'gtrid_67890123456789012345678901234567890123456789012345678901234','bqual_6789012345678901234567890123456789012345678901234567890123',1234567890;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '1234567890' at line 1
XA COMMIT 'gtrid_6789012345678901234567890123456789012345678901234567890123','bqual_67890123456789012345678901234567890123456789012345678901234',1234567890;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '1234567890' at line 1
XA COMMIT 'gtrid_6789012345678901234567890123456789012345678901234567890123','bqual_6789012345678901234567890123456789012345678901234567890123',1234567890;
DROP TABLE t;
# End of 10.4 tests
--source include/have_innodb.inc --source include/have_innodb.inc
--disable_abort_on_error --error ER_XAER_NOTA
xa rollback 'xid2'; xa rollback 'xid2';
drop table if exists t1; drop table if exists t1;
create table t1(a int)engine=innodb; create table t1(a int)engine=innodb;
...@@ -9,9 +9,42 @@ xa start 'xid2'; ...@@ -9,9 +9,42 @@ xa start 'xid2';
insert into `t1` values (1); insert into `t1` values (1);
savepoint `sv1`; savepoint `sv1`;
xa end 'xid2'; xa end 'xid2';
--error ER_XAER_RMFAIL
start transaction; start transaction;
xa prepare 'xid2'; xa prepare 'xid2';
release savepoint `sv1`; release savepoint `sv1`;
xa commit 'xid2'; xa commit 'xid2';
drop table t1; drop table t1;
-- echo #
-- echo # MDEV-31928 Assertion xid ... < 128 failed in trx_undo_write_xid()
-- echo #
CREATE TABLE t (a INT PRIMARY KEY) ENGINE=INNODB;
--error ER_PARSE_ERROR
XA START 'gtrid_67890123456789012345678901234567890123456789012345678901234','bqual_6789012345678901234567890123456789012345678901234567890123',1234567890;
--error ER_PARSE_ERROR
XA START 'gtrid_6789012345678901234567890123456789012345678901234567890123','bqual_67890123456789012345678901234567890123456789012345678901234',1234567890;
XA START 'gtrid_6789012345678901234567890123456789012345678901234567890123','bqual_6789012345678901234567890123456789012345678901234567890123',1234567890;
INSERT INTO t VALUES(1);
--error ER_PARSE_ERROR
XA END 'gtrid_67890123456789012345678901234567890123456789012345678901234','bqual_6789012345678901234567890123456789012345678901234567890123',1234567890;
--error ER_PARSE_ERROR
XA END 'gtrid_6789012345678901234567890123456789012345678901234567890123','bqual_67890123456789012345678901234567890123456789012345678901234',1234567890;
XA END 'gtrid_6789012345678901234567890123456789012345678901234567890123','bqual_6789012345678901234567890123456789012345678901234567890123',1234567890;
--error ER_PARSE_ERROR
XA PREPARE 'gtrid_67890123456789012345678901234567890123456789012345678901234','bqual_6789012345678901234567890123456789012345678901234567890123',1234567890;
--error ER_PARSE_ERROR
XA PREPARE 'gtrid_6789012345678901234567890123456789012345678901234567890123','bqual_67890123456789012345678901234567890123456789012345678901234',1234567890;
XA PREPARE 'gtrid_6789012345678901234567890123456789012345678901234567890123','bqual_6789012345678901234567890123456789012345678901234567890123',1234567890;
--error ER_PARSE_ERROR
XA COMMIT 'gtrid_67890123456789012345678901234567890123456789012345678901234','bqual_6789012345678901234567890123456789012345678901234567890123',1234567890;
--error ER_PARSE_ERROR
XA COMMIT 'gtrid_6789012345678901234567890123456789012345678901234567890123','bqual_67890123456789012345678901234567890123456789012345678901234',1234567890;
XA COMMIT 'gtrid_6789012345678901234567890123456789012345678901234567890123','bqual_6789012345678901234567890123456789012345678901234567890123',1234567890;
DROP TABLE t;
-- echo # End of 10.4 tests
...@@ -665,7 +665,7 @@ trx_undo_write_xid( ...@@ -665,7 +665,7 @@ trx_undo_write_xid(
{ {
DBUG_ASSERT(xid->gtrid_length >= 0); DBUG_ASSERT(xid->gtrid_length >= 0);
DBUG_ASSERT(xid->bqual_length >= 0); DBUG_ASSERT(xid->bqual_length >= 0);
DBUG_ASSERT(xid->gtrid_length + xid->bqual_length < XIDDATASIZE); DBUG_ASSERT(xid->gtrid_length + xid->bqual_length <= XIDDATASIZE);
mlog_write_ulint(log_hdr + TRX_UNDO_XA_FORMAT, mlog_write_ulint(log_hdr + TRX_UNDO_XA_FORMAT,
static_cast<ulint>(xid->formatID), static_cast<ulint>(xid->formatID),
......
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