128 lines
4.1 KiB
Plaintext
128 lines
4.1 KiB
Plaintext
# ==== Purpose ====
|
|
#
|
|
# Check the removal of sql_mode flags from routines' metadata.
|
|
#
|
|
# List of removed modes:
|
|
#
|
|
# - POSTGRESQL (0x00100)
|
|
# - ORACLE (0x00200)
|
|
# - MSSQL (0x00400)
|
|
# - DB2 (0x00800)
|
|
# - MAXDB (0x01000)
|
|
# - NO_KEY_OPTIONS (0x02000)
|
|
# - NO_TABLE_OPTIONS (0x04000)
|
|
# - NO_FIELD_OPTIONS (0x08000)
|
|
# - MYSQL323 (0x10000)
|
|
# - MYSQL40 (0x20000)
|
|
# - NO_AUTO_CREAETE_USER (0x10000000)
|
|
#
|
|
# ==== Implementation ====
|
|
#
|
|
# Setup "fake replication" where the slave only starts the SQL thread,
|
|
# not the IO thread, and reads from an existing relay log that has
|
|
# been prepared so that it contains the error. This requires some
|
|
# extra server options: see the -master.opt file.
|
|
|
|
--source include/not_group_replication_plugin.inc
|
|
--let $rpl_skip_start_slave= 1
|
|
--source include/master-slave.inc
|
|
|
|
--echo ==== Initialize ====
|
|
--connection slave
|
|
|
|
# The binlog we read does funny things with triggers and causes this warning.
|
|
--disable_query_log
|
|
CALL mtr.add_suppression('Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT');
|
|
CALL mtr.add_suppression("Either event.*is from an old master");
|
|
--enable_query_log
|
|
|
|
# Need to restore this at the end; CHANGE MASTER modifies it (see the
|
|
# manual for CHANGE MASTER).
|
|
SET @old_relay_log_purge= @@global.relay_log_purge;
|
|
|
|
|
|
# the relay log contains CREATE SCHEMA db1; CREATE PROCEDURE p_...
|
|
--let $fake_relay_log = $MYSQL_TEST_DIR/std_data/bug27213339-bin.000001
|
|
--source include/setup_fake_relay_log.inc
|
|
|
|
--echo ==== Test ====
|
|
--source include/start_slave_sql.inc
|
|
--let $slave_param= Exec_Master_Log_Pos
|
|
--let $slave_param_value=11102
|
|
--source include/wait_for_slave_param.inc
|
|
|
|
--echo ==== Check ====
|
|
|
|
SHOW CREATE EVENT db1.e_DB2;
|
|
SHOW CREATE EVENT db1.e_MAXDB;
|
|
SHOW CREATE EVENT db1.e_MSSQL;
|
|
SHOW CREATE EVENT db1.e_MYSQL323;
|
|
SHOW CREATE EVENT db1.e_MYSQL40;
|
|
SHOW CREATE EVENT db1.e_NO_FIELD_OPTIONS;
|
|
SHOW CREATE EVENT db1.e_NO_KEY_OPTIONS;
|
|
SHOW CREATE EVENT db1.e_NO_TABLE_OPTIONS;
|
|
SHOW CREATE EVENT db1.e_ORACLE;
|
|
SHOW CREATE EVENT db1.e_POSTGRESQL;
|
|
SHOW CREATE EVENT db1.e1;
|
|
|
|
|
|
SHOW CREATE FUNCTION db1.f_DB2;
|
|
SHOW CREATE FUNCTION db1.f_MAXDB;
|
|
SHOW CREATE FUNCTION db1.f_MSSQL;
|
|
SHOW CREATE FUNCTION db1.f_MYSQL323;
|
|
SHOW CREATE FUNCTION db1.f_MYSQL40;
|
|
SHOW CREATE FUNCTION db1.f_NO_FIELD_OPTIONS;
|
|
SHOW CREATE FUNCTION db1.f_NO_KEY_OPTIONS;
|
|
SHOW CREATE FUNCTION db1.f_NO_TABLE_OPTIONS;
|
|
SHOW CREATE FUNCTION db1.f_ORACLE;
|
|
SHOW CREATE FUNCTION db1.f_POSTGRESQL;
|
|
SHOW CREATE FUNCTION db1.f1;
|
|
|
|
SHOW CREATE PROCEDURE db1.p_DB2;
|
|
SHOW CREATE PROCEDURE db1.p_MAXDB;
|
|
SHOW CREATE PROCEDURE db1.p_MSSQL;
|
|
SHOW CREATE PROCEDURE db1.p_MYSQL323;
|
|
SHOW CREATE PROCEDURE db1.p_MYSQL40;
|
|
SHOW CREATE PROCEDURE db1.p_NO_FIELD_OPTIONS;
|
|
SHOW CREATE PROCEDURE db1.p_NO_KEY_OPTIONS;
|
|
SHOW CREATE PROCEDURE db1.p_NO_TABLE_OPTIONS;
|
|
SHOW CREATE PROCEDURE db1.p_ORACLE;
|
|
SHOW CREATE PROCEDURE db1.p_POSTGRESQL;
|
|
SHOW CREATE PROCEDURE db1.p1;
|
|
|
|
SHOW CREATE TRIGGER db1.t_DB2;
|
|
SHOW CREATE TRIGGER db1.t_MAXDB;
|
|
SHOW CREATE TRIGGER db1.t_MSSQL;
|
|
SHOW CREATE TRIGGER db1.t_MYSQL323;
|
|
SHOW CREATE TRIGGER db1.t_MYSQL40;
|
|
SHOW CREATE TRIGGER db1.t_NO_FIELD_OPTIONS;
|
|
SHOW CREATE TRIGGER db1.t_NO_KEY_OPTIONS;
|
|
SHOW CREATE TRIGGER db1.t_NO_TABLE_OPTIONS;
|
|
SHOW CREATE TRIGGER db1.t_ORACLE;
|
|
SHOW CREATE TRIGGER db1.t_POSTGRESQL;
|
|
SHOW CREATE TRIGGER db1.t1;
|
|
|
|
--echo ==== Clean up ====
|
|
|
|
DROP SCHEMA db1;
|
|
|
|
--source include/stop_slave_sql.inc
|
|
--source include/cleanup_fake_relay_log.inc
|
|
|
|
#
|
|
# Dump the relay binlog file using mysqlbinlog to show sql_mode filtering:
|
|
#
|
|
# SET @@session.sql_mode = ... & /*!80005 &~0x1003ff00*/
|
|
#
|
|
# We should use --short-form everywhere because in other case output will
|
|
# be time dependend. Better than nothing.
|
|
#
|
|
let $MYSQLD_DATADIR= `select @@datadir`;
|
|
--let $mysqlbinlog_parameters= --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ $MYSQL_TEST_DIR/std_data/bug27213339-bin.000001
|
|
--source include/mysqlbinlog.inc
|
|
|
|
|
|
SET @@global.relay_log_purge= @old_relay_log_purge;
|
|
--let $rpl_only_running_threads= 1
|
|
--source include/rpl_end.inc
|