mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 18:20:07 +01:00
136 lines
3.1 KiB
Text
136 lines
3.1 KiB
Text
# The test verifies execution and binary logging of user XA that produce empty
|
|
# XA-PREPARE group of events.
|
|
|
|
--source include/have_binlog_format_mixed.inc
|
|
--source include/have_innodb.inc
|
|
|
|
RESET MASTER; # clear binlogs
|
|
# MDEV-22420 DDL on temporary object is prohibited when XA is in prepare state
|
|
|
|
# Temporary sequnce may not be created within a transaction
|
|
CREATE TEMPORARY SEQUENCE seq_1;
|
|
|
|
XA START '3';
|
|
CREATE TEMPORARY TABLE tmp_1(c INT);
|
|
XA END '3';
|
|
XA PREPARE '3';
|
|
--error ER_XAER_RMFAIL
|
|
DROP TEMPORARY TABLE tmp_1;
|
|
--error ER_XAER_RMFAIL
|
|
ALTER TABLE tmp_1 DROP COLUMN c;
|
|
--error ER_XAER_RMFAIL
|
|
DROP TEMPORARY SEQUENCE seq_1;
|
|
--error ER_XAER_RMFAIL
|
|
ALTER SEQUENCE seq_1 INCREMENT BY 1;
|
|
|
|
--error ER_XAER_RMFAIL
|
|
CREATE TEMPORARY TABLE tmp_2(c INT);
|
|
--error ER_XAER_RMFAIL
|
|
CREATE TEMPORARY SEQUENCE seq_2;
|
|
|
|
# Cleanup
|
|
XA ROLLBACK '3';
|
|
|
|
--echo # Proof of correct logging incl empty XA-PREPARE
|
|
--source include/show_binlog_events.inc
|
|
|
|
# The test verifies execution and binary logging of user XA that produce empty
|
|
# XA-PREPARE group of events.
|
|
#
|
|
# MDEV-22757 Assertion `!binlog || exist_hton_without_prepare'
|
|
# in MYSQL_BIN_LOG::unlog_xa_prepare
|
|
|
|
RESET MASTER;
|
|
CREATE TABLE t1 (a INT) ENGINE=MyISAM;
|
|
CREATE TABLE t2 (id INT PRIMARY KEY) ENGINE=InnoDB;
|
|
INSERT INTO t1 VALUES (1),(2);
|
|
INSERT INTO t2 VALUES (1),(2);
|
|
|
|
XA START '1';
|
|
REPLACE INTO t1 SELECT * FROM t1;
|
|
REPLACE INTO t2 SELECT * FROM t2;
|
|
XA END '1';
|
|
XA PREPARE '1';
|
|
|
|
# Cleanup
|
|
XA ROLLBACK '1';
|
|
DROP TABLE t1, t2;
|
|
|
|
--echo # Proof of correct logging incl empty XA-PREPARE
|
|
--source include/show_binlog_events.inc
|
|
|
|
|
|
# MDEV-22430 Assertion ... in MYSQL_BIN_LOG::unlog_xa_prepare
|
|
|
|
RESET MASTER;
|
|
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;
|
|
INSERT INTO t1 VALUES (1);
|
|
CREATE SEQUENCE s ENGINE=InnoDB;
|
|
|
|
XA START '2';
|
|
--disable_ps2_protocol
|
|
SELECT NEXT VALUE FOR s;
|
|
--enable_ps2_protocol
|
|
REPLACE INTO t1 SELECT * FROM t1;
|
|
XA END '2';
|
|
XA PREPARE '2';
|
|
|
|
# Cleanup
|
|
XA ROLLBACK '2';
|
|
DROP SEQUENCE s;
|
|
DROP TABLE t1;
|
|
|
|
--echo # Proof of correct logging incl empty XA-PREPARE
|
|
--source include/show_binlog_events.inc
|
|
|
|
|
|
# MDEV-25616 Binlog event for XA COMMIT is generated without matching XA START
|
|
|
|
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;
|
|
INSERT INTO t1 VALUES (1);
|
|
|
|
--source include/count_sessions.inc
|
|
--connect(con1,localhost,root,,)
|
|
|
|
XA START '1';
|
|
--error ER_DUP_ENTRY
|
|
INSERT INTO t1 VALUES (2),(1);
|
|
SELECT * FROM t1 WHERE a = 2;
|
|
XA END '1';
|
|
XA PREPARE '1';
|
|
|
|
--disconnect con1
|
|
|
|
--connection default
|
|
--source include/wait_until_count_sessions.inc
|
|
XA RECOVER;
|
|
|
|
--error ER_XA_RBROLLBACK
|
|
XA COMMIT '1';
|
|
--echo Must be no XA PREPARE group nor XA completion one:
|
|
--source include/show_binlog_events.inc
|
|
DROP TABLE t1;
|
|
|
|
--source include/count_sessions.inc
|
|
|
|
--connect(con2,localhost,root,,)
|
|
CREATE TABLE tm (a INT PRIMARY KEY) ENGINE=MyISAM;
|
|
XA START '1';
|
|
--error ER_DUP_ENTRY
|
|
INSERT INTO tm VALUES (1),(1);
|
|
SELECT * FROM tm WHERE a = 2;
|
|
XA END '1';
|
|
XA PREPARE '1';
|
|
|
|
--disconnect con2
|
|
|
|
--connection default
|
|
--source include/wait_until_count_sessions.inc
|
|
XA RECOVER;
|
|
|
|
--error ER_XA_RBROLLBACK
|
|
XA ROLLBACK '1';
|
|
--echo Must be no XA PREPARE group nor XA completion one:
|
|
--source include/show_binlog_events.inc
|
|
DROP TABLE tm;
|
|
|