mirror of
https://github.com/MariaDB/server.git
synced 2025-04-08 00:05:34 +02:00
219 lines
9.9 KiB
Text
219 lines
9.9 KiB
Text
RESET MASTER;
|
|
CREATE TEMPORARY SEQUENCE seq_1;
|
|
XA START '3';
|
|
CREATE TEMPORARY TABLE tmp_1(c INT);
|
|
XA END '3';
|
|
XA PREPARE '3';
|
|
DROP TEMPORARY TABLE tmp_1;
|
|
ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the PREPARED state
|
|
ALTER TABLE tmp_1 DROP COLUMN c;
|
|
ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the PREPARED state
|
|
DROP TEMPORARY SEQUENCE seq_1;
|
|
ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the PREPARED state
|
|
ALTER SEQUENCE seq_1 INCREMENT BY 1;
|
|
ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the PREPARED state
|
|
CREATE TEMPORARY TABLE tmp_2(c INT);
|
|
ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the PREPARED state
|
|
CREATE TEMPORARY SEQUENCE seq_2;
|
|
ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the PREPARED state
|
|
XA ROLLBACK '3';
|
|
# Proof of correct logging incl empty XA-PREPARE
|
|
include/show_binlog_events.inc
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; CREATE TEMPORARY SEQUENCE seq_1
|
|
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE tmp_1(c INT)
|
|
master-bin.000001 # Query # # COMMIT
|
|
master-bin.000001 # Gtid # # XA START X'33',X'',1 GTID #-#-#
|
|
master-bin.000001 # Query # # XA END X'33',X'',1
|
|
master-bin.000001 # XA_prepare # # XA PREPARE X'33',X'',1
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # XA ROLLBACK X'33',X'',1
|
|
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';
|
|
XA ROLLBACK '1';
|
|
Warnings:
|
|
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
|
DROP TABLE t1, t2;
|
|
# Proof of correct logging incl empty XA-PREPARE
|
|
include/show_binlog_events.inc
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT) ENGINE=MyISAM
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; CREATE TABLE t2 (id INT PRIMARY KEY) ENGINE=InnoDB
|
|
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (1),(2)
|
|
master-bin.000001 # Query # # COMMIT
|
|
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO t2 VALUES (1),(2)
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
|
master-bin.000001 # Annotate_rows # # REPLACE INTO t1 SELECT * FROM t1
|
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
|
master-bin.000001 # Query # # COMMIT
|
|
master-bin.000001 # Gtid # # XA START X'31',X'',1 GTID #-#-#
|
|
master-bin.000001 # Query # # XA END X'31',X'',1
|
|
master-bin.000001 # XA_prepare # # XA PREPARE X'31',X'',1
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # XA ROLLBACK X'31',X'',1
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; DROP TABLE `t1`,`t2` /* generated by server */
|
|
RESET MASTER;
|
|
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;
|
|
INSERT INTO t1 VALUES (1);
|
|
CREATE SEQUENCE s ENGINE=InnoDB;
|
|
XA START '2';
|
|
SELECT NEXT VALUE FOR s;
|
|
NEXT VALUE FOR s
|
|
1
|
|
REPLACE INTO t1 SELECT * FROM t1;
|
|
XA END '2';
|
|
XA PREPARE '2';
|
|
XA ROLLBACK '2';
|
|
DROP SEQUENCE s;
|
|
DROP TABLE t1;
|
|
# Proof of correct logging incl empty XA-PREPARE
|
|
include/show_binlog_events.inc
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB
|
|
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
|
master-bin.000001 # Annotate_rows # # INSERT INTO t1 VALUES (1)
|
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; CREATE SEQUENCE s ENGINE=InnoDB
|
|
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
|
master-bin.000001 # Annotate_rows # # SELECT NEXT VALUE FOR s
|
|
master-bin.000001 # Table_map # # table_id: # (test.s)
|
|
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
|
master-bin.000001 # Query # # COMMIT
|
|
master-bin.000001 # Gtid # # XA START X'32',X'',1 GTID #-#-#
|
|
master-bin.000001 # Query # # XA END X'32',X'',1
|
|
master-bin.000001 # XA_prepare # # XA PREPARE X'32',X'',1
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # XA ROLLBACK X'32',X'',1
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; DROP SEQUENCE `s` /* generated by server */
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */
|
|
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;
|
|
INSERT INTO t1 VALUES (1);
|
|
connect con1,localhost,root,,;
|
|
XA START '1';
|
|
INSERT INTO t1 VALUES (2),(1);
|
|
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
|
|
SELECT * FROM t1 WHERE a = 2;
|
|
a
|
|
XA END '1';
|
|
XA PREPARE '1';
|
|
disconnect con1;
|
|
connection default;
|
|
XA RECOVER;
|
|
formatID gtrid_length bqual_length data
|
|
1 1 0 1
|
|
XA COMMIT '1';
|
|
ERROR XA100: XA_RBROLLBACK: Transaction branch was rolled back
|
|
Must be no XA PREPARE group nor XA completion one:
|
|
include/show_binlog_events.inc
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB
|
|
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
|
master-bin.000001 # Annotate_rows # # INSERT INTO t1 VALUES (1)
|
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; CREATE SEQUENCE s ENGINE=InnoDB
|
|
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
|
master-bin.000001 # Annotate_rows # # SELECT NEXT VALUE FOR s
|
|
master-bin.000001 # Table_map # # table_id: # (test.s)
|
|
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
|
master-bin.000001 # Query # # COMMIT
|
|
master-bin.000001 # Gtid # # XA START X'32',X'',1 GTID #-#-#
|
|
master-bin.000001 # Query # # XA END X'32',X'',1
|
|
master-bin.000001 # XA_prepare # # XA PREPARE X'32',X'',1
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # XA ROLLBACK X'32',X'',1
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; DROP SEQUENCE `s` /* generated by server */
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB
|
|
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
|
master-bin.000001 # Annotate_rows # # INSERT INTO t1 VALUES (1)
|
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
DROP TABLE t1;
|
|
connect con2,localhost,root,,;
|
|
CREATE TABLE tm (a INT PRIMARY KEY) ENGINE=MyISAM;
|
|
XA START '1';
|
|
INSERT INTO tm VALUES (1),(1);
|
|
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
|
|
SELECT * FROM tm WHERE a = 2;
|
|
a
|
|
XA END '1';
|
|
XA PREPARE '1';
|
|
disconnect con2;
|
|
connection default;
|
|
XA RECOVER;
|
|
formatID gtrid_length bqual_length data
|
|
1 1 0 1
|
|
XA ROLLBACK '1';
|
|
ERROR XA100: XA_RBROLLBACK: Transaction branch was rolled back
|
|
Must be no XA PREPARE group nor XA completion one:
|
|
include/show_binlog_events.inc
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB
|
|
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
|
master-bin.000001 # Annotate_rows # # INSERT INTO t1 VALUES (1)
|
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; CREATE SEQUENCE s ENGINE=InnoDB
|
|
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
|
master-bin.000001 # Annotate_rows # # SELECT NEXT VALUE FOR s
|
|
master-bin.000001 # Table_map # # table_id: # (test.s)
|
|
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
|
master-bin.000001 # Query # # COMMIT
|
|
master-bin.000001 # Gtid # # XA START X'32',X'',1 GTID #-#-#
|
|
master-bin.000001 # Query # # XA END X'32',X'',1
|
|
master-bin.000001 # XA_prepare # # XA PREPARE X'32',X'',1
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # XA ROLLBACK X'32',X'',1
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; DROP SEQUENCE `s` /* generated by server */
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB
|
|
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
|
master-bin.000001 # Annotate_rows # # INSERT INTO t1 VALUES (1)
|
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */
|
|
master-bin.000001 # Gtid # # GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; CREATE TABLE tm (a INT PRIMARY KEY) ENGINE=MyISAM
|
|
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tm VALUES (1),(1)
|
|
master-bin.000001 # Query # # COMMIT
|
|
DROP TABLE tm;
|