Server IP : 172.67.216.182 / Your IP : 172.70.208.162 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/suite/binlog/t/ |
Upload File : |
# ==== Purpose ==== # # Test that sql_mode can correct restore before generating the binlog event # when creating CREATEable objects. # # ==== Method ==== # # Scan binlog file to check if the sql_mode is still set to 0 before generating binlog event # -- source include/have_log_bin.inc # BUG#39526 sql_mode not retained in binary log for CREATE PROCEDURE SET @old_sql_mode= @@global.sql_mode; SET @old_binlog_format=@@session.binlog_format; let $MYSQLD_DATADIR= `select @@datadir`; SET SESSION sql_mode=8; --echo Initialization RESET MASTER; CREATE TABLE t1 (id INT); CREATE PROCEDURE testProc() SELECT * FROM t1; CREATE VIEW testView as SELECT * from t1; DELIMITER |; CREATE FUNCTION testFunc() RETURNS INT BEGIN return 1; END;| DELIMITER ;| DELIMITER |; CREATE TRIGGER testTrig BEFORE INSERT ON t1 FOR EACH ROW BEGIN UPDATE t1 SET id = id +1; END;| DELIMITER ;| DELIMITER |; CREATE EVENT testEvent ON SCHEDULE EVERY 1 DAY DO BEGIN UPDATE t1 SET id = id +1; END;| DELIMITER ;| --echo Check Result let $MYSQLD_DATADIR= `select @@datadir`; --exec $MYSQL_BINLOG --force-if-open $MYSQLD_DATADIR/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug39526.binlog --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR eval select (@a:=load_file("$MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug39526.binlog")) is not null AS Loaded; let $s_mode_unsigned= `select @a like "%@@session.sql_mode=0%" /* must return 0 */`; echo *** String sql_mode=0 is found: $s_mode_unsigned ***; --remove_file $MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug39526.binlog --echo Clean Up DROP PROCEDURE testProc; DROP FUNCTION testFunc; DROP TRIGGER testTrig; DROP EVENT testEvent; DROP VIEW testView; DROP TABLE t1; SET @@global.sql_mode= @old_sql_mode; SET @@session.binlog_format=@old_binlog_format; --echo --echo # --echo # Test for Bug#12601974 - STORED PROCEDURE SQL_MODE=NO_BACKSLASH_ESCAPES --echo # IGNORED AND BREAKS REPLICATION --echo # --disable_warnings DROP DATABASE IF EXISTS mysqltest_db; DROP TABLE IF EXISTS test_table; --enable_warnings CREATE DATABASE mysqltest_db; USE mysqltest_db; CREATE TABLE test_table (c1 CHAR(50)); SET @org_mode=@@sql_mode; SET @@sql_mode=''; DELIMITER $; CREATE PROCEDURE proc_without_sql_mode (IN param1 CHAR(50), IN param2 CHAR(50)) BEGIN DECLARE var1 CHAR(50) DEFAULT param1; DECLARE var2 CHAR(50) DEFAULT param2; DECLARE var3 CHAR(50) DEFAULT 'abcd\bef'; DECLARE var4 CHAR(50) DEFAULT 'abcd\nef'; DECLARE var5 CHAR(50) DEFAULT 'abcd\ref'; DECLARE var6 CHAR(50) DEFAULT 'abcd\tef'; DECLARE var7 CHAR(50) DEFAULT 'abcd\\ef'; DECLARE var8 CHAR(50) DEFAULT 'abcd\%ef'; DECLARE var9 CHAR(50) DEFAULT 'abcd\_ef'; INSERT INTO test_table VALUES (var1); INSERT INTO test_table VALUES (var2); INSERT INTO test_table VALUES (var3); INSERT INTO test_table VALUES (var4); INSERT INTO test_table VALUES (var5); INSERT INTO test_table VALUES (var6); INSERT INTO test_table VALUES (var7); INSERT INTO test_table VALUES (var8); INSERT INTO test_table VALUES (var9); END $ SET @@sql_mode='NO_BACKSLASH_ESCAPES'$ CREATE PROCEDURE proc_with_sql_mode (IN param1 CHAR(50), IN param2 CHAR(50)) BEGIN DECLARE var1 CHAR(50) DEFAULT param1; DECLARE var2 CHAR(50) DEFAULT param2; DECLARE var3 CHAR(50) DEFAULT 'wxyz\bef'; DECLARE var4 CHAR(50) DEFAULT 'wxyz\nef'; DECLARE var5 CHAR(50) DEFAULT 'wxyz\ref'; DECLARE var6 CHAR(50) DEFAULT 'wxyz\tef'; DECLARE var7 CHAR(50) DEFAULT 'wxyz\\ef'; DECLARE var8 CHAR(50) DEFAULT 'wxyz\%ef'; DECLARE var9 CHAR(50) DEFAULT 'wxyz\_ef'; INSERT INTO test_table VALUES (var1); INSERT INTO test_table VALUES (var2); INSERT INTO test_table VALUES (var3); INSERT INTO test_table VALUES (var4); INSERT INTO test_table VALUES (var5); INSERT INTO test_table VALUES (var6); INSERT INTO test_table VALUES (var7); INSERT INTO test_table VALUES (var8); INSERT INTO test_table VALUES (var9); END $ DELIMITER ;$ SET @@sql_mode=''; CALL proc_without_sql_mode('abcd\'ef', 'abcd\"ef'); CALL proc_with_sql_mode('wxyz\'ef', 'wxyz\"ef'); SELECT * FROM test_table; let $MYSQLD_DATADIR= `select @@datadir`; --exec $MYSQL_BINLOG --force-if-open -d mysqltest_db $MYSQLD_DATADIR/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug12601974.binlog --echo "Dropping table test_table" DROP TABLE test_table; # We need to reset master (and purge GTID_EXECUTED) to avoid # transactions skip when we replay mysqlbinlog_bug12601974.binlog # with gtid-mode=ON. RESET MASTER; --exec $MYSQL -e "source $MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug12601974.binlog" --echo #"test_table" content after replaying the binlog SELECT * FROM test_table; --echo #Clean up --remove_file $MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug12601974.binlog DROP DATABASE mysqltest_db; SET @@sql_mode= @org_mode; use test; --echo --echo #End of Test for Bug#12601974