403Webshell
Server IP : 104.21.38.3  /  Your IP : 162.158.189.109
Web Server : Apache
System : Linux krdc-ubuntu-s-2vcpu-4gb-amd-blr1-01.localdomain 5.15.0-142-generic #152-Ubuntu SMP Mon May 19 10:54:31 UTC 2025 x86_64
User : www ( 1000)
PHP Version : 7.4.33
Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /www/server/mysql/src/mysql-test/extra/binlog_tests/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /www/server/mysql/src/mysql-test/extra/binlog_tests/binlog_gtid_next_xa.inc
# ==== Purpose ====
#
# The test is binlog-on-off insensitive to test XA transaction
# identified with explicit GTID_NEXT values.
# It is included from a top-level tests against server
# with --log-bin and --skip-log-bin either.
#
# ==== Usage ====
#
# --let $rpl_skip_log_bin= [1]
#
# Parameters:
#
# $rpl_skip_log_bin
#   top-level caller sets it to 1 when the server is run with --skip-log-bin.
#   The value is checked in the current file in order to pick for execution
#   only one binlog format, as well as passed to interested included files,
#   such as rpl_init.inc.
#
# An XA transaction generates two transactions in the binary log:
#  1. XA BEGIN; DML; XA END; XA PREPARE;
#  2. XA [COMMIT|ROLLBACK];
#
# This test verifies that all possible combinations of GTID_NEXT for
# the two parts of the transaction are allowed (provided that
# GTID_MODE allows it), and that GTID ownership is maintained
# correctly. Specifically, ownership should be released between the
# two transactions and after the two transactions.
#
# ==== Implementation ====
#
# Execute the following:
#
# For COMMIT_OR_ROLLBACK in COMMIT, ROLLBACK:
#   For GTID1 in AUTOMATIC, GTID, ANONYMOUS:
#     For GTID2 in AUTOMATIC, GTID, ANONYMOUS, none:
#       SET GTID_NEXT = <GTID1>;
#       XA BEGIN;
#       DML;
#       XA END;
#       verify that no GTID is owned
#
#       if GTID2 != none:
#         SET GTID_NEXT = <GTID2>;
#       XA <COMMIT_OR_ROLLBACK>;
#       verify that no GTID is owned
#
# The two innermost loops are unrolled because it is not practical to
# implement such logic in mtr.  The body of the inner loop is
# implemented in extra/binlog_tests/{gtid_next_xa,gtid_next_xa_error_simul}.test
# where the latter of two verifies clear exits out of errors, and
# seemless continuation after the server restart while having an XA in
# prepared state.
#
# ==== References ====
#
# WL#6860: binlogging XA transactions
# - Test was created in this worklog.

# No need to run this test in multiple combinations.
if (!$rpl_skip_log_bin)
{
  --source include/have_debug.inc
  --source include/have_binlog_format_statement.inc
  # --log-bin ON specific error simulation
  call mtr.add_suppression("The transaction owned GTID is already in the gtid_executed table");
  CALL mtr.add_suppression("Statement is unsafe because it is being used inside a XA transaction");
}
--source include/not_gtid_enabled.inc

--let $rpl_gtid_utils= 1
--let $rpl_topology= none
# rpl_init.inc is aware of possible $rpl_skip_log_bin = 1
--source include/rpl_init.inc
--source include/rpl_default_connections.inc
call mtr.add_suppression("Found 1 prepared XA transactions");
--let $rpl_gtid_mode= ON_PERMISSIVE
--source include/rpl_set_gtid_mode.inc

--connect(conn_err_simul,localhost,root,,)

--connection master

CREATE TABLE t1 (a INT);

--let $xid= 1
--let $commit= COMMIT
# This is GTID setting related error
--let $error= 0
# Unlike the above this is an error in applying the prepare or the commit
--let $error_simul =

# Fixme: The declarion has to be done here even though it gets in use only inside
# a sourced file. Otherwise mtr parser reacts buggy near the if() of the following
# while block.
--let $error_at_prepare=0

--let $i= 0
while ($i < 2)
{
  --let $gtid1= AUTOMATIC
  --let $gtid2= AUTOMATIC
  --source extra/binlog_tests/gtid_next_xa.test

  --let $gtid1= AUTOMATIC
  --let $gtid2= $uuida:$xid
  --source extra/binlog_tests/gtid_next_xa.test

  --let $gtid1= AUTOMATIC
  --let $gtid2= ANONYMOUS
  --source extra/binlog_tests/gtid_next_xa.test

  --let $gtid1= AUTOMATIC
  --let $gtid2= none
  --source extra/binlog_tests/gtid_next_xa.test

  --let $gtid1= $uuida:$xid
  --let $gtid2= AUTOMATIC
  --source extra/binlog_tests/gtid_next_xa.test

  --let $gtid1= $uuida:$xid
  --let $gtid2= $uuidb:$xid
  --source extra/binlog_tests/gtid_next_xa.test

  --let $gtid1= $uuida:$xid
  --let $gtid2= ANONYMOUS
  --source extra/binlog_tests/gtid_next_xa.test

  --let $error= convert_error(ER_GTID_NEXT_TYPE_UNDEFINED_GROUP)
  --let $gtid1= $uuida:$xid
  --let $gtid2= none
  --source extra/binlog_tests/gtid_next_xa.test
  --let $error= 0

  --let $gtid1= ANONYMOUS
  --let $gtid2= AUTOMATIC
  --source extra/binlog_tests/gtid_next_xa.test

  --let $gtid1= ANONYMOUS
  --let $gtid2= $uuida:$xid
  --source extra/binlog_tests/gtid_next_xa.test

  --let $gtid1= ANONYMOUS
  --let $gtid2= ANONYMOUS
  --source extra/binlog_tests/gtid_next_xa.test

  --let $gtid1= ANONYMOUS
  --let $gtid2= none
  --source extra/binlog_tests/gtid_next_xa.test

  # Commit 1 phase or Rollback  "clean" case
  --let $one_phase = one phase
  --let $gtid1= $uuida:$xid
  --let $gtid2= $uuidb:$xid
  --source extra/binlog_tests/gtid_next_xa.test
  --let $one_phase =

  # Commit 1 phase or Rollback simulated error case
  --let $one_phase = one phase
  --let $error_simul = at_commit
  --let $gtid1= $uuida:$xid
  --let $gtid2= $uuidb:$xid
  --source extra/binlog_tests/gtid_next_xa_error_simul.test
  --let $error_simul=
  --let $one_phase =

  # Regular 2 phase cases with simulated error

  --let $error_simul = at_prepare
  --let $gtid1= $uuida:$xid
  --let $gtid2= $uuidb:$xid
  --source extra/binlog_tests/gtid_next_xa_error_simul.test
  --let $error_simul=

  --let $error_simul = at_commit
  --let $gtid1= $uuida:$xid
  --let $gtid2= $uuidb:$xid
  --source extra/binlog_tests/gtid_next_xa_error_simul.test
  --let $error_simul=

  --let $do_shutdown_after_prepare = 1
  --let $error_simul = at_commit
  --let $gtid1= $uuida:$xid
  --let $gtid2= $uuidb:$xid
  --source extra/binlog_tests/gtid_next_xa_error_simul.test
  --let $error_simul=
  --let $do_shutdown_after_prepare = 0

  --inc $i
  --let $commit= ROLLBACK
}

DROP TABLE t1;

# rpl_init.inc saves GTID_MODE in the $gtid_mode variable
--let $rpl_gtid_mode= $gtid_mode
--source include/rpl_set_gtid_mode.inc

--source include/rpl_end.inc

Youez - 2016 - github.com/yon3zu
LinuXploit