config root man

Current Path : /home/usr.opt/mysql57/mysql-test/suite/binlog/t/

FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64
Upload File :
Current File : //home/usr.opt/mysql57/mysql-test/suite/binlog/t/binlog_gtid_unknown_xid.test

# ==== Purpose ====
#
# The purpose of this test is to ensure that the server properly disregards XA
# transaction related statements that try to operate upon an unknown XID, when
# on SBR.
#
# ==== Requirements ====
#
# R1. Ensure that execution proceeds normaly after trying - and failling - to
#     execute `XA COMMIT / ROLLBACK` with an unkown XID.
#
# ==== Implementation ====
#
# Ensure that the server properly disregards XA related statements that operate
# on unknown XIDs given the following setup / statements combinations:
#
# TC1. Manual GTID and apply `XA ROLLBACK` with unkown XID
# --------------------------------------------------------
# 1) Ensure that `AUTOCOMMIT` is OFF.
# 2) Set `GTID_NEXT` to manually introduced value.
# 3) Execute a DML statement.
# 4) Execute `XA ROLLBACK` with an unknown XID.
# 5) Set `AUTOCOMMIT` to the default value so that the DML statement gets
#    commited.
#
# TC2. Manual GTID and apply `XA ROLLBACK` with unkown XID
# --------------------------------------------------------
# 1) Ensure that `AUTOCOMMIT` is OFF.
# 2) Set `GTID_NEXT` to manually introduced value.
# 3) Execute a DML statement.
# 4) Execute `XA ROLLBACK` with an unknown XID.
# 5) Set `AUTOCOMMIT` to the default value so that the DML statement gets
#    commited.
#
# TC3. Manual GTID and apply `XA ROLLBACK` to an existent XA transaction
# --------------------------------------------------------------------
# 1) Ensure that `AUTOCOMMIT` is OFF.
# 2) Set `GTID_NEXT` to manually introduced value.
# 3) Execute a DML statement.
# 4) Execute `XA ROLLBACK` with an existent XID.
# 5) Set `AUTOCOMMIT` to the default value so that the DML statement gets
#    commited.
#
# TC4. Manual GTID and apply `XA COMMIT` to an existent XA transaction
# -----------------------------------------------------------------------
# 1) Ensure that `AUTOCOMMIT` is OFF.
# 2) Set `GTID_NEXT` to manually introduced value.
# 3) Execute a DML statement.
# 4) Execute `XA COMMIT` with an existent XID.
# 5) Set `AUTOCOMMIT` to the default value so that the DML statement gets
#    commited.
#
# ==== References ====
#
# BUG#27928837 `HEAD->VARIABLES.GTID_NEXT.TYPE != UNDEFINED_GTID`

--source include/have_gtid.inc

--let $current_autocommit= `SELECT @@AUTOCOMMIT`

CREATE TABLE t2(a INT);

# TC1. Manual GTID and apply `XA ROLLBACK` with unkown XID
# --------------------------------------------------------
# 1) Ensure that `AUTOCOMMIT` is OFF.
SET @@AUTOCOMMIT=0;
# 2) Set `GTID_NEXT` to manually introduced value.
SET SESSION GTID_NEXT='aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:1';
# 3) Execute a DML statement.
INSERT INTO t2 VALUES(1);
# 4) Execute `XA ROLLBACK` with an unknown XID.
--error ER_XAER_NOTA
XA ROLLBACK 'xa1';
# 5) Set `AUTOCOMMIT` to the default value so that the DML statement gets
#    commited.
SET @@AUTOCOMMIT=1;
#

# TC2. Manul GTID and apply `XA ROLLBACK` with unkown XID
# -----------------------------------------------------------
# 1) Ensure that `AUTOCOMMIT` is OFF.
SET @@AUTOCOMMIT=0;
# 2) Set `GTID_NEXT` to manually introduced value.
SET SESSION GTID_NEXT='aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:2';
# 3) Execute a DML statement.
INSERT INTO t2 VALUES(2);
# 4) Execute `XA COMMIT` with an unknown XID.
--error ER_XAER_NOTA
XA COMMIT 'xa1';
# 5) Set `AUTOCOMMIT` to the default value so that the DML statement gets
#    commited.
SET @@AUTOCOMMIT=1;
#

--connect (other_conn, 127.0.0.1,root,,test,$MASTER_MYPORT,)
XA START 'xa1';
XA END 'xa1';
XA PREPARE 'xa1';
--let $connection_id= `SELECT CONNECTION_ID()`
--disconnect other_conn
# Wait for the `other_conn` to be cleared from the server
--connection default
--let $wait_condition = SELECT COUNT(*) = 0 FROM information_schema.processlist WHERE id = '$connection_id'
--source include/wait_condition.inc

--connection default
# TC3. Manual GTID and apply `XA ROLLBACK` to an existent XA transaction
# --------------------------------------------------------------------
# 1) Ensure that `AUTOCOMMIT` is OFF.
SET @@AUTOCOMMIT=0;
# 2) Set `GTID_NEXT` to manually introduced value.
SET SESSION GTID_NEXT='aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:3';
# 3) Execute a DML statement.
INSERT INTO t2 VALUES(3);
# 4) Execute `XA ROLLBACK` with an existent XID.
--error ER_XAER_RMFAIL
XA ROLLBACK 'xa1';
# 5) Set `AUTOCOMMIT` to the default value so that the DML statement gets
#    commited.
SET @@AUTOCOMMIT=1;
#

# TC4. Manual GTID and apply `XA COMMIT` to an existent XA transaction
# -----------------------------------------------------------------------
# 1) Ensure that `AUTOCOMMIT` is OFF.
SET @@AUTOCOMMIT=0;
# 2) Set `GTID_NEXT` to manually introduced value.
SET SESSION GTID_NEXT='aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:4';
# 3) Execute a DML statement.
INSERT INTO t2 VALUES(4);
# 4) Execute `XA COMMIT` with an existent XID.
--error ER_XAER_RMFAIL
XA COMMIT 'xa1';
# 5) Set `AUTOCOMMIT` to the default value so that the DML statement gets
#    commited.
SET @@AUTOCOMMIT=1;
#

--let $assert_text= All inserts were committed, XA statements and respective failures, were disregarded
--let $assert_cond= "[SELECT COUNT(1) FROM t2]" = "4"
--source include/assert.inc

# CLEAN UP
SET SESSION GTID_NEXT='AUTOMATIC';
XA ROLLBACK 'xa1';
--let $pending = query_get_value(XA RECOVER, data, 1)
--let $assert_text= All XA transactions were cleared
--let $assert_cond= "$pending" = "No such row"
--source include/assert.inc
DROP TABLE t2;
--replace_result $current_autocommit DEFAULT_AUTOCOMMIT
--eval SET @@AUTOCOMMIT=$current_autocommit
RESET MASTER;

Man Man