Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/MariaDB/mysql-test/suite/binlog/t/   (MariaDB Server Version 8.1-8.4©)  Datei vom 1.9.2026 mit Größe 4 kB image not shown  

Quelle  binlog_empty_xa_prepared.test  Sprache: unbekannt

 
Spracherkennung für: .test vermutete Sprache: SQL {SQL[75] VDM[50] Lisp[41]} [Methode: maximale Elemente, drei Dimensionen]

# 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
--source include/count_sessions.inc

RESET MASTER; # clear binlogs
# MDEV-22420 DDL on temporary object is prohibited when XA is in prepare state

# Temporary sequence 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';

DROP SEQUENCE seq_1;
DROP TABLE tmp_1;

--echo # Proof of  correct logging incl empty XA-PREPARE
--source include/show_binlog_events.inc

SET @@binlog_format="statement";

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';

SET @@binlog_format="mixed";

--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);

--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;

--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;


# MDEV-32257 dangling XA-rollback in binlog from emtpy XA
--connection default
--let $binlog_start = query_get_value(SHOW MASTER STATUS, Position, 1)
--let $binlog_file =  query_get_value(SHOW MASTER STATUS, File, 1)
SET pseudo_slave_mode=1;
XA START 'a';
XA END 'a';
XA PREPARE 'a';
--error ER_XA_RBROLLBACK
XA ROLLBACK 'a';
--source include/show_binlog_events.inc

[Dauer der Verarbeitung: 0.13 Sekunden, vorverarbeitet 2026-10-08]