Browse Source

Don't crash if creating sequence under XA

MDEV-22002 Assertion `!is_set() || (m_status == DA_OK_BULK &&
is_bulk_op())' failed upon CREATE TEMPORARY SEQUENCE under XA
bb-10.3-mdev22866
Monty 6 years ago
parent
commit
736ca14323
  1. 13
      mysql-test/main/xa.result
  2. 26
      mysql-test/main/xa.test
  3. 6
      sql/sql_sequence.cc

13
mysql-test/main/xa.result

@ -345,3 +345,16 @@ connection default;
XA END 'xid1';
XA ROLLBACK 'xid1';
DROP TABLE t1, t2, t3;
XA BEGIN 'xid';
CREATE TEMPORARY SEQUENCE s;
ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the ACTIVE state
XA END 'xid';
XA ROLLBACK 'xid';
XA BEGIN 'xid';
CREATE SEQUENCE s;
ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the ACTIVE state
XA END 'xid';
XA ROLLBACK 'xid';
#
# End of 10.3 tests
#

26
mysql-test/main/xa.test

@ -478,3 +478,29 @@ DROP TABLE t1, t2, t3;
--source include/wait_until_count_sessions.inc
#
# MDEV-22002 Assertion `!is_set() || (m_status == DA_OK_BULK && is_bulk_op())'
# failed upon CREATE TEMPORARY SEQUENCE under XA
#
XA BEGIN 'xid';
--error ER_XAER_RMFAIL
CREATE TEMPORARY SEQUENCE s;
XA END 'xid';
XA ROLLBACK 'xid';
XA BEGIN 'xid';
--error ER_XAER_RMFAIL
CREATE SEQUENCE s;
XA END 'xid';
XA ROLLBACK 'xid';
--echo #
--echo # End of 10.3 tests
--echo #

6
sql/sql_sequence.cc

@ -355,8 +355,10 @@ bool sequence_insert(THD *thd, LEX *lex, TABLE_LIST *org_table_list)
seq->reserved_until= seq->start;
error= seq->write_initial_sequence(table);
trans_commit_stmt(thd);
trans_commit_implicit(thd);
if (trans_commit_stmt(thd))
error= 1;
if (trans_commit_implicit(thd))
error= 1;
if (!temporary_table)
{

Loading…
Cancel
Save