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 : |
# ==== 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