--echo # This test scripts covers upgrade of tables, views, tablespaces, --echo # events, stored routines and triggers from 5.7 to 8.0. --source include/big_test.inc --source include/no_valgrind_without_big.inc --source include/have_myisam.inc --disable_query_log call mtr.add_suppression("\\[Warning\\] .*MY-\\d+.* Parent table of FTS auxiliary table.*"); call mtr.add_suppression("You need to use --log-bin to make --binlog-format work"); --enable_query_log --echo # Set different paths for --datadir let $MYSQLD_DATADIR1 = $MYSQL_TMP_DIR/data57; --echo # Copy the remote tablespace & DB zip files from suite location to working location. --copy_file $MYSQLTEST_VARDIR/std_data/data57.zip $MYSQL_TMP_DIR/data57.zip --echo # Check that the file exists in the working folder. --file_exists $MYSQL_TMP_DIR/data57.zip --echo # Unzip the zip file. --exec unzip -qo $MYSQL_TMP_DIR/data57.zip -d $MYSQL_TMP_DIR ######################### # how to record this test JSON result content mismatch # If required fix regex patterns in mysql-test/include/ibd2sdi.pl # and mysql-test/suite/innodb/include/ibd2sdi_replace_pattern.inc, # then run the test with --record option. ######################### --echo # --echo # BUG#25805260: MYSQL 8.0.X CRASHES WHEN OLD-STYLE TRIGGER MISSES THE --echo # "CREATED" LINE IN .TRG. --echo # --echo # Create a trigger without 'created' line. Without patch, --echo # the server exits during upgrade of trigger. --write_file $MYSQL_TMP_DIR/data57/test/vt2.TRG TYPE=TRIGGERS triggers='CREATE DEFINER=`root`@`localhost` TRIGGER tr1_bi BEFORE INSERT ON vt2 FOR EACH ROW SET @a:=1' sql_modes=1073741824 1073741824 definers='root@localhost' 'root@localhost' client_cs_names='latin1' 'latin1' connection_cl_names='latin1_swedish_ci' 'latin1_swedish_ci' db_cl_names='latin1_swedish_ci' 'latin1_swedish_ci' EOF --write_file $MYSQL_TMP_DIR/data57/test/tr1_bi.TRN TYPE=TRIGGERNAME trigger_table=vt2 EOF --echo # Create a table as same as mysql.proc to repeat Bug#24805140 --echo # We need to add an entry in mysql.proc table of the zipped --echo # data data directory before upgrade starts. --echo # Without fix, data population for dictionary tables fail and --echo # upgrade aborts. SET sql_mode=''; --echo # CREATE statement is same as mysql.proc in mysql-5.7. CREATE TABLE test.proc (db char(64) collate utf8_bin DEFAULT '' NOT NULL, name char(64) DEFAULT '' NOT NULL, type enum('FUNCTION','PROCEDURE') NOT NULL, specific_name char(64) DEFAULT '' NOT NULL, language enum('SQL') DEFAULT 'SQL' NOT NULL, sql_data_access enum('CONTAINS_SQL', 'NO_SQL', 'READS_SQL_DATA', 'MODIFIES_SQL_DATA') DEFAULT 'CONTAINS_SQL' NOT NULL, is_deterministic enum('YES','NO') DEFAULT 'NO' NOT NULL, security_type enum('INVOKER','DEFINER') DEFAULT 'DEFINER' NOT NULL, param_list blob NOT NULL, returns longblob DEFAULT '' NOT NULL, body longblob NOT NULL, definer char(93) collate utf8_bin DEFAULT '' NOT NULL, created timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, modified timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', sql_mode set('REAL_AS_FLOAT', 'PIPES_AS_CONCAT', 'ANSI_QUOTES', 'IGNORE_SPACE', 'NOT_USED', 'ONLY_FULL_GROUP_BY', 'NO_UNSIGNED_SUBTRACTION', 'NO_DIR_IN_CREATE', 'POSTGRESQL', 'ORACLE', 'MSSQL', 'DB2', 'MAXDB', 'NO_KEY_OPTIONS', 'NO_TABLE_OPTIONS', 'NO_FIELD_OPTIONS', 'MYSQL323', 'MYSQL40', 'ANSI', 'NO_AUTO_VALUE_ON_ZERO', 'NO_BACKSLASH_ESCAPES', 'STRICT_TRANS_TABLES', 'STRICT_ALL_TABLES', 'NO_ZERO_IN_DATE', 'NO_ZERO_DATE', 'INVALID_DATES', 'ERROR_FOR_DIVISION_BY_ZERO', 'TRADITIONAL', 'NO_AUTO_CREATE_USER', 'HIGH_NOT_PRECEDENCE', 'NO_ENGINE_SUBSTITUTION', 'PAD_CHAR_TO_FULL_LENGTH') DEFAULT '' NOT NULL, comment text collate utf8_bin NOT NULL, character_set_client char(32) collate utf8_bin, collation_connection char(32) collate utf8_bin, db_collation char(32) collate utf8_bin, body_utf8 longblob, PRIMARY KEY (db,name,type)) engine=MyISAM character set utf8 comment='Stored Procedures'; --let $MYSQLD_DATADIR=`SELECT @@datadir` --echo # Remove data and index files manually. --remove_file $MYSQLD_DATADIR/test/proc.MYD --remove_file $MYSQLD_DATADIR/test/proc.MYI --echo # Copy data and index files from zipped data directory. --copy_file $MYSQL_TMP_DIR/data57/mysql/proc.MYD $MYSQLD_DATADIR/test/proc.MYD --copy_file $MYSQL_TMP_DIR/data57/mysql/proc.MYI $MYSQLD_DATADIR/test/proc.MYI --echo # Insert data INSERT INTO test.proc VALUES ('sp','bug24805140','PROCEDURE','bug24805140','SQL', 'CONTAINS_SQL','NO','DEFINER','out a int','', 'begin select requesting_trx_id from ' 'information_schema.INNODB_LOCK_WAITS limit 1 into a; end', 'root@localhost','2016-10-05 21:44:21', '2016-10-05 21:44:21', 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,' 'NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,' 'NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION', '','utf8','utf8_general_ci','latin1_swedish_ci', 'begin select requesting_trx_id from ' 'information_schema.INNODB_LOCK_WAITS limit 1 into a; end'), ('sp','proc2','PROCEDURE','proc2','SQL', 'CONTAINS_SQL','NO','DEFINER','out b int','', 'begin select @@show_compatibility_56 into b; end', 'root@localhost','2016-10-05 21:55:05', '2016-10-05 21:55:05','ONLY_FULL_GROUP_BY,' 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,' 'NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,' 'NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION','', 'utf8','utf8_general_ci','latin1_swedish_ci', 'begin select @@show_compatibility_56 into b; end'); --echo # Data for Bug#25633041 : SHOW CREATE PROC/FUNCTION RESULT --echo # AFTER LIVEUPGR IS DIFFERENT TO DUMPUPGR INSERT INTO `proc` VALUES ('test','downgrade_alter_proc','PROCEDURE', 'downgrade_alter_proc', 'SQL','CONTAINS_SQL','NO','INVOKER','','', 'BEGIN\n SELECT c1, English, French FROM t1 ' 'JOIN t2 ON t1.c3 = t2.col2;\n END', 'root@localhost','1988-04-25 20:45:00', '1988-04-25 20:45:00','NO_ZERO_DATE','','latin1', 'latin1_swedish_ci','latin1_swedish_ci', 'BEGIN\n SELECT c1, English, French FROM t1 ' 'JOIN t2 ON t1.c3 = t2.col2;\n END'), ('test','my_test_func','FUNCTION','myfunc','SQL', 'CONTAINS_SQL','NO','DEFINER', '', 'varchar(20) CHARSET latin1', 'BEGIN\n RETURN \'å\';\nEND', 'root@localhost','2017-03-08 09:07:36', '2017-03-08 09:07:36', 'ONLY_FULL_GROUP_BY,' 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,' 'ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,' 'NO_ENGINE_SUBSTITUTION','','latin1','latin1_swedish_ci', 'latin1_swedish_ci','BEGIN\n RETURN \'Ã¥\';\nEND'); --echo # Remove the original zipped data and index files. --remove_file $MYSQL_TMP_DIR/data57/mysql/proc.MYD --remove_file $MYSQL_TMP_DIR/data57/mysql/proc.MYI --echo # Copy data and index files to zipped data directory. --copy_file $MYSQLD_DATADIR/test/proc.MYD $MYSQL_TMP_DIR/data57/mysql/proc.MYD --copy_file $MYSQLD_DATADIR/test/proc.MYI $MYSQL_TMP_DIR/data57/mysql/proc.MYI --echo # Delete the table for cleanup DROP TABLE test.proc; --echo # Stop DB server which was created by MTR default --exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect --shutdown_server --source include/wait_until_disconnected.inc --echo # These files are added to test error scenario, delete from for upgrade testing. --remove_file $MYSQL_TMP_DIR/data57/test/55_temporal.frm --remove_file $MYSQL_TMP_DIR/data57/test/55_temporal.MYD --remove_file $MYSQL_TMP_DIR/data57/test/55_temporal.MYI --echo # Remove myisam partitioned tables. There are used for negative testing. --remove_files_wildcard $MYSQL_TMP_DIR/data57/partitions * --rmdir $MYSQL_TMP_DIR/data57/partitions --force-rmdir $MYSQL_TMP_DIR/data57/mismatch_frms --echo # Copy table and view files as test case for Bug#24580586 --copy_file $MYSQLTEST_VARDIR/std_data/initial_t@1o.frm $MYSQL_TMP_DIR/data57/test/initial_t@1o.frm --copy_file $MYSQLTEST_VARDIR/std_data/initial_v@1o.frm $MYSQL_TMP_DIR/data57/test/initial_v@1o.frm --echo # Test case for Bug #25139901 : DB COLLATION CHANGED TO SERVER DEFAULT AFTER UPGRADE --echo # Create a folder and db.opt file. Write a character set in db.opt file which is not default. --mkdir $MYSQL_TMP_DIR/data57/db_charset_koi8r/ let DB_OPT_FILE= $MYSQL_TMP_DIR/data57/db_charset_koi8r/db.opt; --echo # 1.1 Create db.opt file. write_file $DB_OPT_FILE; default-character-set=koi8r default-collation=koi8r_bin EOF --echo # Files in 'test' dir --list_files $MYSQL_TMP_DIR/data57/ let $MYSQLD_LOG= $MYSQLTEST_VARDIR/log/save_dd_upgrade_1.log; let ENV_MYSQLD_LOG= $MYSQLD_LOG; # Add '--read-only' option in the scope of fix of Bug#26636238, to avoid creation of another bulky test. --echo # Start the DB server. Server will create and populate Dictionary tables. --exec echo "restart: --loose-skip-log-bin --read-only --skip-log-slave-updates --datadir=$MYSQLD_DATADIR1 --log-error=$MYSQLD_LOG" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect --enable_reconnect --let $wait_counter= 10000 --source include/wait_until_connected_again.inc --echo # Test for Bug#25518436 : MYSQL 8.0.1 - MYSQLD ERRORLOG HAS UPGRADE ERRORS --echo # AT SERVER START AT LIVE UPGRADE --echo # Check for errors from sys schema. --echo # These errors should not be there. --echo # Look for error. perl; use strict; my $log= $ENV{'ENV_MYSQLD_LOG'} or die; open(FILE, "$log") or die; my $c_e= grep(/\[Warning\] Parsing \'sys\.diagnostics\' routine body failed\. Creating routine without parsing routine body/gi,); print "# Sys Schema routine parsing warning found : $c_e times.\n"; seek(FILE,0,0); $c_e= grep(/\[ERROR\] .* Unknown system variable \'show_compatibility_56\'/gi,); print "# Sys Schema routine parsing error found : $c_e times.\n"; seek(FILE,0,0); $c_e= grep(/\[Warning\] Resolving dependency for the view \'sys\.innodb_lock_waits\' failed\. View is no more valid to use/gi,); print "# Sys Schema view parsing warning found : $c_e times.\n"; seek(FILE,0,0); $c_e= grep(/\[ERROR\] .* Unknown table \'INNODB_LOCK_WAITS\' in information_schema/gi,); print "# Sys Schema view parsing error found : $c_e times.\n"; close(FILE); EOF # End of test case for Bug#25518436 --echo # Sanity Testing after Server start CREATE SCHEMA test123; CREATE TABLE test123.t1(a int); INSERT INTO test123.t1 values(1); SELECT * FROM test123.t1; DROP SCHEMA test123; CHECK TABLE test.t_myisam_compressed2, test.t_myisam_compressed3 FOR UPGRADE; SHOW DATABASES; --echo # Check table structures SHOW CREATE TABLE mysql.user; SHOW CREATE TABLE mysql.innodb_table_stats; SHOW CREATE TABLE mysql.innodb_index_stats; SELECT COLUMN_NAME,CHARACTER_MAXIMUM_LENGTH FROM INFORMATION_SCHEMA.COLUMNS col JOIN INFORMATION_SCHEMA.TABLES tab ON col.table_name=tab.table_name WHERE col.TABLE_NAME LIKE '%innodb_%_stats' AND col.COLUMN_NAME LIKE 'table_name'; SHOW CREATE TABLE test.t_compressed; SHOW CREATE TABLE test.t_compressed2; SHOW CREATE TABLE test.t_compressed3; SHOW CREATE TABLE test.t_dynamic; SHOW CREATE TABLE test.t_index; SHOW CREATE TABLE test.vt2; SELECT * FROM test.vt2; SHOW CREATE TABLE test.t_gen_stored; SHOW CREATE TABLE test.jemp; SHOW CREATE TABLE test.t_gen_stored_myisam; SHOW CREATE TABLE test.t_gen_stored_myisam2; SHOW CREATE TABLE test.jemp_myisam; SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE, ENGINE, VERSION, ROW_FORMAT FROM INFORMATION_SCHEMA.tables WHERE table_schema='test'; --echo # Check for views --echo # Invalid view SHOW CREATE VIEW aview.view_invalid; --echo # Valid views SHOW CREATE VIEW aview.view_2; SHOW CREATE VIEW aview.second_view; SELECT * FROM aview.view_2; SELECT * FROM aview.second_view; SHOW CREATE VIEW aview.mixed_view; SHOW CREATE VIEW aview.mixed_view2; SELECT * FROM aview.mixed_view2; --echo # View with different definer SHOW CREATE VIEW aview.view_user; SHOW CREATE VIEW aview.view_user2; --echo # View with different character_set and connection collation SHOW CREATE VIEW aview.view_character_set; --echo # Data check after upgrade for Bug#25139901 SHOW CREATE DATABASE db_charset_koi8r; --echo # Test case for Bug#24580586 SET names utf8; DESC `test`.`initial_vü`; --replace_column 15 CREATE_TIME SELECT * FROM information_schema.tables WHERE table_schema = 'test' and table_type='VIEW'; SET names default; --echo #Test case for Bug#26636238 #Check metadata of a performance schema table when upgrade is performed with --read-only SHOW CREATE TABLE performance_schema.threads; --echo # Check for SP/SF SHOW CREATE PROCEDURE sp.simpleproc; SHOW CREATE PROCEDURE sp.proc_123; SHOW CREATE PROCEDURE sp.proc_456; --echo # Without fix, server start on 5.7 data directory above will fail. SHOW CREATE PROCEDURE sp.bug24805140; --error ER_SP_LOAD_FAILED call sp.bug24805140(); SHOW WARNINGS; SHOW CREATE FUNCTION sp.hello; --echo # Check for events SHOW CREATE EVENT events.e_totals; --echo # Check for fulltext index SHOW CREATE TABLE test.opening_lines; --echo # Check data for Bug#25633041 SHOW CREATE PROCEDURE test.downgrade_alter_proc; SHOW CREATE FUNCTION test.my_test_func; SELECT ROUTINE_NAME, CHARACTER_SET_NAME, CHARACTER_SET_CLIENT, COLLATION_CONNECTION, DATABASE_COLLATION FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA='test' ORDER BY ROUTINE_NAME; --echo # Check for General tablespace SHOW CREATE TABLE tablespace.t2; SHOW CREATE TABLE tablespace.t3; SELECT * FROM tablespace.t3; SHOW CREATE TABLE tablespace.t4; --echo # --echo # Bug#26431355 : ALTER TABLE COMMENT FAILS WITH FAILED TO DROP TABLE SDI AFTER UPGRADE --echo # --echo # Check for table with blackhole engine SHOW CREATE TABLE test.t_blackhole; --echo # Check for table with special character in name SHOW CREATE TABLE `test`.`t_sc~!@#$%^&*(`; --echo # Check for JSON types SHOW CREATE TABLE test.t_json; --echo # Check for geometry data types SHOW CREATE TABLE test.geom; --echo # Check for Triggers. Operations on t1 inserts data in t2. INSERT INTO triggers.t1 VALUES(1); UPDATE triggers.t1 SET a=2 WHERE a=1; SELECT * FROM triggers.t2; SELECT TRIGGER_SCHEMA, TRIGGER_NAME, EVENT_MANIPULATION, ACTION_TIMING, ACTION_ORDER FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_SCHEMA='triggers'; --replace_column 7 # SHOW CREATE TRIGGER triggers.trg_t1_after_insert_3; --replace_column 7 # SHOW CREATE TRIGGER triggers.trg1; --replace_column 7 # SHOW CREATE TRIGGER triggers.t1_bi; --replace_column 7 # SHOW CREATE TRIGGER test.tr1_bi; --echo # I_S query to check Foreign_keys SELECT * FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS WHERE CONSTRAINT_SCHEMA='foreign_keys' ORDER BY CONSTRAINT_SCHEMA,CONSTRAINT_NAME; --echo # Check that views with column names are correct SHOW CREATE VIEW view_with_column_names.v1; SELECT * FROM view_with_column_names.v1; SHOW CREATE VIEW view_with_column_names.v2; SELECT * FROM view_with_column_names.v2; SHOW CREATE VIEW view_with_column_names.v3; SELECT * FROM view_with_column_names.v3; SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='view_with_column_names'; --echo # Bug #28480149 "UPGRADE FAIL: FAILED TO ADD THE FOREIGN KEY CONSTRAINT. --echo # MISSING INDEX FOR CONSTR". Coverage for upgrade scenario. Main part --echo # of coverage resides in foreign_key test. SHOW CREATE TABLE foreign_keys.t9; SHOW CREATE TABLE foreign_keys.ta; SHOW CREATE TABLE foreign_keys.tb; SHOW CREATE TABLE foreign_keys.tc; SHOW CREATE TABLE foreign_keys.td; SHOW CREATE TABLE foreign_keys.te; SHOW CREATE TABLE foreign_keys.tf; --echo # Restart on the upgraded data dir --replace_result $MYSQLD_DATADIR1 MYSQLD_DATADIR1 let $restart_parameters = "restart: --loose-skip-log-bin --skip-log-slave-updates --datadir=$MYSQLD_DATADIR1"; --source include/restart_mysqld.inc let $restart_parameters =; --echo # Execute FTS queries that modify FTS pages select count(*) from sakila.film_text; select * from sakila.film_text where film_id = 984; select * from sakila.film_text where match(title,description) against("SCISSORHANDS"); delete from sakila.film_text where film_id = 984; SET GLOBAL innodb_optimize_fulltext_only=ON; optimize table sakila.film_text; --echo # Stop the server --source include/shutdown_mysqld.inc --echo # Check if .ibds have SDI after upgrade --let $SRC_DIR=$MYSQL_TEST_DIR/std_data/dd/sdi/upgrade # Create a directory to store json generated --let $DEST_DIR=$MYSQL_TMP_DIR/sdi_dest/ --error 0,1 --force-rmdir $DEST_DIR --mkdir $DEST_DIR --echo # Check SDI from vt2.ibd --let JSON_FILE_PATH = $DEST_DIR/vt2.json --exec $IBD2SDI $MYSQLD_DATADIR1/test/vt2.ibd -d $JSON_FILE_PATH 2>&1 --source suite/innodb/include/ibd2sdi_replace.inc if ($MTR_RECORD == 0) { --diff_files $SRC_DIR/vt2.json $JSON_FILE_PATH } --echo # Check SDI from t_json.ibd --let JSON_FILE_PATH = $DEST_DIR/t_json.json --exec $IBD2SDI $MYSQLD_DATADIR1/test/t_json.ibd -d $JSON_FILE_PATH 2>&1 --source suite/innodb/include/ibd2sdi_replace.inc if ($MTR_RECORD == 0) { --diff_files $SRC_DIR/t_json.json $JSON_FILE_PATH } --echo # Check SDI from t_gen_stored.ibd --let JSON_FILE_PATH = $DEST_DIR/t_gen_stored.json --exec $IBD2SDI $MYSQLD_DATADIR1/test/t_gen_stored.ibd -d $JSON_FILE_PATH 2>&1 --source suite/innodb/include/ibd2sdi_replace.inc if ($MTR_RECORD == 0) { --diff_files $SRC_DIR/t_gen_stored.json $JSON_FILE_PATH } --echo # Check SDI from t_dynamic.ibd --let JSON_FILE_PATH = $DEST_DIR/t_dynamic.json --exec $IBD2SDI $MYSQLD_DATADIR1/test/t_dynamic.ibd -d $JSON_FILE_PATH 2>&1 --source suite/innodb/include/ibd2sdi_replace.inc if ($MTR_RECORD == 0) { --diff_files $SRC_DIR/t_dynamic.json $JSON_FILE_PATH } --echo # Check SDI from t_compressed3.ibd --let JSON_FILE_PATH = $DEST_DIR/t_compressed3.json --exec $IBD2SDI $MYSQLD_DATADIR1/test/t_compressed3.ibd -d $JSON_FILE_PATH 2>&1 --source suite/innodb/include/ibd2sdi_replace.inc if ($MTR_RECORD == 0) { --diff_files $SRC_DIR/t_compressed3.json $JSON_FILE_PATH } --echo # Check SDI from t_compressed2.ibd --let JSON_FILE_PATH = $DEST_DIR/t_compressed2.json --exec $IBD2SDI $MYSQLD_DATADIR1/test/t_compressed2.ibd -d $JSON_FILE_PATH 2>&1 --source suite/innodb/include/ibd2sdi_replace.inc if ($MTR_RECORD == 0) { --diff_files $SRC_DIR/t_compressed2.json $JSON_FILE_PATH } --echo # Check SDI from t_compressed.ibd --let JSON_FILE_PATH = $DEST_DIR/t_compressed.json --exec $IBD2SDI $MYSQLD_DATADIR1/test/t_compressed.ibd -d $JSON_FILE_PATH 2>&1 --source suite/innodb/include/ibd2sdi_replace.inc if ($MTR_RECORD == 0) { --diff_files $SRC_DIR/t_compressed.json $JSON_FILE_PATH } --echo # Check SDI from t_blob_myisam.ibd --let JSON_FILE_PATH = $DEST_DIR/t_blob_myisam.json --exec $IBD2SDI $MYSQLD_DATADIR1/test/t_blob_myisam.ibd -d $JSON_FILE_PATH 2>&1 --source suite/innodb/include/ibd2sdi_replace.inc if ($MTR_RECORD == 0) { --diff_files $SRC_DIR/t_blob_myisam.json $JSON_FILE_PATH } --echo # Check SDI from t_blob.ibd --let JSON_FILE_PATH = $DEST_DIR/t_blob.json --exec $IBD2SDI $MYSQLD_DATADIR1/test/t_blob.ibd -d $JSON_FILE_PATH 2>&1 --source suite/innodb/include/ibd2sdi_replace.inc if ($MTR_RECORD == 0) { --diff_files $SRC_DIR/t_blob.json $JSON_FILE_PATH } --echo # Check SDI from opening_lines.ibd --let JSON_FILE_PATH = $DEST_DIR/opening_lines.json --exec $IBD2SDI $MYSQLD_DATADIR1/test/opening_lines.ibd -d $JSON_FILE_PATH 2>&1 --source suite/innodb/include/ibd2sdi_replace.inc if ($MTR_RECORD == 0) { --diff_files $SRC_DIR/opening_lines.json $JSON_FILE_PATH } --echo # Check SDI from jemp.ibd --let JSON_FILE_PATH = $DEST_DIR/jemp.json --exec $IBD2SDI $MYSQLD_DATADIR1/test/jemp.ibd -d $JSON_FILE_PATH 2>&1 --source suite/innodb/include/ibd2sdi_replace.inc if ($MTR_RECORD == 0) { --diff_files $SRC_DIR/jemp.json $JSON_FILE_PATH } --echo # Check SDI from geom.ibd --let JSON_FILE_PATH = $DEST_DIR/geom.json --exec $IBD2SDI $MYSQLD_DATADIR1/test/geom.ibd -d $JSON_FILE_PATH 2>&1 --source suite/innodb/include/ibd2sdi_replace.inc if ($MTR_RECORD == 0) { --diff_files $SRC_DIR/geom.json $JSON_FILE_PATH } --echo # Check SDI from store.ibd --let JSON_FILE_PATH = $DEST_DIR/store.json --exec $IBD2SDI $MYSQLD_DATADIR1/sakila/store.ibd -d $JSON_FILE_PATH 2>&1 --source suite/innodb/include/ibd2sdi_replace.inc if ($MTR_RECORD == 0) { --diff_files $SRC_DIR/store.json $JSON_FILE_PATH } --echo # Check SDI from staff.ibd --let JSON_FILE_PATH = $DEST_DIR/staff.json --exec $IBD2SDI $MYSQLD_DATADIR1/sakila/staff.ibd -d $JSON_FILE_PATH 2>&1 --source suite/innodb/include/ibd2sdi_replace.inc if ($MTR_RECORD == 0) { --diff_files $SRC_DIR/staff.json $JSON_FILE_PATH } --echo # Check SDI from rental.ibd --let JSON_FILE_PATH = $DEST_DIR/rental.json --exec $IBD2SDI $MYSQLD_DATADIR1/sakila/rental.ibd -d $JSON_FILE_PATH 2>&1 --source suite/innodb/include/ibd2sdi_replace.inc if ($MTR_RECORD == 0) { --diff_files $SRC_DIR/rental.json $JSON_FILE_PATH } --echo # Check SDI from payment.ibd --let JSON_FILE_PATH = $DEST_DIR/payment.json --exec $IBD2SDI $MYSQLD_DATADIR1/sakila/payment.ibd -d $JSON_FILE_PATH 2>&1 --source suite/innodb/include/ibd2sdi_replace.inc if ($MTR_RECORD == 0) { --diff_files $SRC_DIR/payment.json $JSON_FILE_PATH } --echo # Check SDI from language.ibd --let JSON_FILE_PATH = $DEST_DIR/language.json --exec $IBD2SDI $MYSQLD_DATADIR1/sakila/language.ibd -d $JSON_FILE_PATH 2>&1 --source suite/innodb/include/ibd2sdi_replace.inc if ($MTR_RECORD == 0) { --diff_files $SRC_DIR/language.json $JSON_FILE_PATH } --echo # Check SDI from inventory.ibd --let JSON_FILE_PATH = $DEST_DIR/inventory.json --exec $IBD2SDI $MYSQLD_DATADIR1/sakila/inventory.ibd -d $JSON_FILE_PATH 2>&1 --source suite/innodb/include/ibd2sdi_replace.inc if ($MTR_RECORD == 0) { --diff_files $SRC_DIR/inventory.json $JSON_FILE_PATH } --echo # Check SDI from film_text.ibd --let JSON_FILE_PATH = $DEST_DIR/film_text.json --exec $IBD2SDI $MYSQLD_DATADIR1/sakila/film_text.ibd -d $JSON_FILE_PATH 2>&1 --source suite/innodb/include/ibd2sdi_replace.inc if ($MTR_RECORD == 0) { --diff_files $SRC_DIR/film_text.json $JSON_FILE_PATH } --echo # Check SDI from film_category.ibd --let JSON_FILE_PATH = $DEST_DIR/film_category.json --exec $IBD2SDI $MYSQLD_DATADIR1/sakila/film_category.ibd -d $JSON_FILE_PATH 2>&1 --source suite/innodb/include/ibd2sdi_replace.inc if ($MTR_RECORD == 0) { --diff_files $SRC_DIR/film_category.json $JSON_FILE_PATH } --echo # Check SDI from film_actor.ibd --let JSON_FILE_PATH = $DEST_DIR/film_actor.json --exec $IBD2SDI $MYSQLD_DATADIR1/sakila/film_actor.ibd -d $JSON_FILE_PATH 2>&1 --source suite/innodb/include/ibd2sdi_replace.inc if ($MTR_RECORD == 0) { --diff_files $SRC_DIR/film_actor.json $JSON_FILE_PATH } --echo # Check SDI from film.ibd --let JSON_FILE_PATH = $DEST_DIR/film.json --exec $IBD2SDI $MYSQLD_DATADIR1/sakila/film.ibd -d $JSON_FILE_PATH 2>&1 --source suite/innodb/include/ibd2sdi_replace.inc if ($MTR_RECORD == 0) { --diff_files $SRC_DIR/film.json $JSON_FILE_PATH } --echo # Check SDI from customer.ibd --let JSON_FILE_PATH = $DEST_DIR/customer.json --exec $IBD2SDI $MYSQLD_DATADIR1/sakila/customer.ibd -d $JSON_FILE_PATH 2>&1 --source suite/innodb/include/ibd2sdi_replace.inc if ($MTR_RECORD == 0) { --diff_files $SRC_DIR/customer.json $JSON_FILE_PATH } --echo # Check SDI from country.ibd --let JSON_FILE_PATH = $DEST_DIR/country.json --exec $IBD2SDI $MYSQLD_DATADIR1/sakila/country.ibd -d $JSON_FILE_PATH 2>&1 --source suite/innodb/include/ibd2sdi_replace.inc if ($MTR_RECORD == 0) { --diff_files $SRC_DIR/country.json $JSON_FILE_PATH } --echo # Check SDI from city.ibd --let JSON_FILE_PATH = $DEST_DIR/city.json --exec $IBD2SDI $MYSQLD_DATADIR1/sakila/city.ibd -d $JSON_FILE_PATH 2>&1 --source suite/innodb/include/ibd2sdi_replace.inc if ($MTR_RECORD == 0) { --diff_files $SRC_DIR/city.json $JSON_FILE_PATH } --echo # Check SDI from category.ibd --let JSON_FILE_PATH = $DEST_DIR/category.json --exec $IBD2SDI $MYSQLD_DATADIR1/sakila/category.ibd -d $JSON_FILE_PATH 2>&1 --source suite/innodb/include/ibd2sdi_replace.inc if ($MTR_RECORD == 0) { --diff_files $SRC_DIR/category.json $JSON_FILE_PATH } --echo # Check SDI from address.ibd --let JSON_FILE_PATH = $DEST_DIR/address.json --exec $IBD2SDI $MYSQLD_DATADIR1/sakila/address.ibd -d $JSON_FILE_PATH 2>&1 --source suite/innodb/include/ibd2sdi_replace.inc if ($MTR_RECORD == 0) { --diff_files $SRC_DIR/address.json $JSON_FILE_PATH } --echo # Check SDI from actor.ibd --let JSON_FILE_PATH = $DEST_DIR/actor.json --exec $IBD2SDI $MYSQLD_DATADIR1/sakila/actor.ibd -d $JSON_FILE_PATH 2>&1 --source suite/innodb/include/ibd2sdi_replace.inc if ($MTR_RECORD == 0) { --diff_files $SRC_DIR/actor.json $JSON_FILE_PATH } --echo # Check SDI from mysql.ibd --let JSON_FILE_PATH = $DEST_DIR/mysql.json --exec $IBD2SDI $MYSQLD_DATADIR1/mysql.ibd -d $JSON_FILE_PATH 2>&1 --source suite/innodb/include/ibd2sdi_replace_mysql.inc if ($MTR_RECORD == 0) { --diff_files $SRC_DIR/mysql.json $JSON_FILE_PATH } --echo # Check SDI from ibdata1 --let JSON_FILE_PATH = $DEST_DIR/ibdata1.json --exec $IBD2SDI $MYSQLD_DATADIR1/ibdata1 -d $JSON_FILE_PATH 2>&1 --source suite/innodb/include/ibd2sdi_replace_system.inc if ($MTR_RECORD == 0) { --diff_files $SRC_DIR/ibdata1.json $JSON_FILE_PATH } --echo # Check SDI from test_tablespace_3.ibd --let JSON_FILE_PATH = $DEST_DIR/test_tablespace_3.json --exec $IBD2SDI $MYSQLD_DATADIR1/test_tablespace_3.ibd -d $JSON_FILE_PATH 2>&1 --source suite/innodb/include/ibd2sdi_replace.inc if ($MTR_RECORD == 0) { --diff_files $SRC_DIR/test_tablespace_3.json $JSON_FILE_PATH } --echo # Check SDI from test_tablespace_2.ibd --let JSON_FILE_PATH = $DEST_DIR/test_tablespace_2.json --exec $IBD2SDI $MYSQLD_DATADIR1/test_tablespace_2.ibd -d $JSON_FILE_PATH 2>&1 --source suite/innodb/include/ibd2sdi_replace.inc if ($MTR_RECORD == 0) { --diff_files $SRC_DIR/test_tablespace_2.json $JSON_FILE_PATH } # If --record is used, save the json files created in the $DEST_DIR # back to the $SRC_DIR. if ($MTR_RECORD == 1) { --copy_files_wildcard $DEST_DIR $SRC_DIR *.json } --echo # Remove json files --force-rmdir $DEST_DIR --echo # Remove copied files --force-rmdir $MYSQL_TMP_DIR/data57 --echo # --echo # Bug#26944731 : UPGRADE TO 8.0 FAILS: DUPLICATE SET VALUES IN TABLE FROM A PERMISSIVE SQL_MODE.. --echo # Bug#26948678 : MYSQLD: INVALID DEFAULT VALUE FOR 'CACHED_TIME' --echo # --echo # Unzip the zip file. --exec unzip -qo $MYSQL_TMP_DIR/data57.zip -d $MYSQL_TMP_DIR let $MYSQLD_LOG= $MYSQLTEST_VARDIR/log/save_dd_upgrade_2.log; # These files are used by other test cases, and is not required here. --remove_file $MYSQL_TMP_DIR/data57/test/55_temporal.frm --remove_file $MYSQL_TMP_DIR/data57/test/55_temporal.MYD --remove_file $MYSQL_TMP_DIR/data57/test/55_temporal.MYI --force-rmdir $MYSQL_TMP_DIR/data57/partitions --force-rmdir $MYSQL_TMP_DIR/data57/mismatch_frms # Copy .frm file with blackhole engine and duplicate values in SET --copy_file $MYSQLTEST_VARDIR/std_data/t_set.frm $MYSQL_TMP_DIR/data57/test/t_set.frm # Test with --explicit-defaults-for-timestamp=0 --exec echo "restart: --loose-skip-log-bin --explicit-defaults-for-timestamp=0 --skip-log-slave-updates --skip-slave-preserve-commit-order --datadir=$MYSQLD_DATADIR1 --log-error=$MYSQLD_LOG" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect --enable_reconnect --let $wait_counter= 6000 --source include/wait_until_connected_again.inc SHOW CREATE TABLE test.t_set; --echo # Stop the server --source include/shutdown_mysqld.inc --echo # Remove copied files --remove_file $MYSQL_TMP_DIR/data57.zip --force-rmdir $MYSQL_TMP_DIR/data57 --echo # Restart the server with default options. --source include/start_mysqld.inc --echo # --echo # Bug #27512609 5.7->8.0 UPGRADE CRASH WITH DEFAULT-TIME-ZONE SET --echo # --echo # let $MYSQLD_LOG= $MYSQLTEST_VARDIR/log/save_dd_upgrade_3.log; --echo # Zip file contains data directory of a clean 5.7 server. --echo # made by: ./mtr --mem --mysqld=--default_time_zone="+01:00" main.1st --echo # --echo # Copy zip files from suite location to working location. --copy_file $MYSQLTEST_VARDIR/std_data/data57_upgrade_default_timezone_bug.zip $MYSQL_TMP_DIR/data57_upgrade_default_timezone_bug.zip --echo # Check that the file exists in the working folder. --file_exists $MYSQL_TMP_DIR/data57_upgrade_default_timezone_bug.zip --echo # Unzip the zip file. --exec unzip -qo $MYSQL_TMP_DIR/data57_upgrade_default_timezone_bug.zip -d $MYSQL_TMP_DIR/data57_upgrade_default_timezone_bug --echo # Set different paths for --datadir let $MYSQLD_DATADIR2 = $MYSQL_TMP_DIR/data57_upgrade_default_timezone_bug/data; --echo # Check that the file exits after unzip --file_exists $MYSQL_TMP_DIR/data57_upgrade_default_timezone_bug/data --echo # Stop DB server which was created by MTR default --exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect --shutdown_server --source include/wait_until_disconnected.inc --echo # Start the DB server --exec echo "restart: --default_time_zone="+01:00" --datadir=$MYSQLD_DATADIR2 --log-error=$MYSQLD_LOG" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect --enable_reconnect --let $wait_counter= 6000 --source include/wait_until_connected_again.inc --disable_query_log call mtr.add_suppression("You need to use --log-bin to make --binlog-format work"); --enable_query_log --echo # Stop the server --source include/shutdown_mysqld.inc --echo # Remove copied files --remove_file $MYSQL_TMP_DIR/data57_upgrade_default_timezone_bug.zip --force-rmdir $MYSQL_TMP_DIR/data57_upgrade_default_timezone_bug --echo # Restart the server with default options. --source include/start_mysqld.inc --echo # --echo # Bug #28884503 UPGRADE FROM 5.7.23+ TO 8.0.11+ FAILS WHEN INNODB_PAGE_SIZE=4K --echo # --let $MYSQLD_LOG= $MYSQLTEST_VARDIR/log/data57_innodb_page_size_4k.log --echo # Zip file contains data directory of a clean 5.7 server. --echo # --echo # Copy zip files from suite location to working location. --copy_file $MYSQLTEST_VARDIR/std_data/data57_upgrade_innodb_4k.zip $MYSQL_TMP_DIR/data57_upgrade_innodb_4k.zip --echo # Check that the file exists in the working folder. --file_exists $MYSQL_TMP_DIR/data57_upgrade_innodb_4k.zip --echo # Unzip the zip file. --exec unzip -qo $MYSQL_TMP_DIR/data57_upgrade_innodb_4k.zip -d $MYSQL_TMP_DIR/data57_upgrade_innodb_4k --echo # Set different paths for --datadir --let $MYSQLD_DATADIR2 = $MYSQL_TMP_DIR/data57_upgrade_innodb_4k/data57_upgrade_innodb_4k --echo # Restart DB server which was created by MTR default --replace_result $MYSQLD_DATADIR2 MYSQLD_DATADIR2 $MYSQLD_LOG MYSQLD_LOG --let restart_parameters=restart: --datadir=$MYSQLD_DATADIR2 --innodb_page_size=4K --log-error=$MYSQLD_LOG --let $wait_counter= 10000 --source include/restart_mysqld.inc --source include/shutdown_mysqld.inc --echo # Remove copied files --remove_file $MYSQL_TMP_DIR/data57_upgrade_innodb_4k.zip --force-rmdir $MYSQL_TMP_DIR/data57_upgrade_innodb_4k --echo # Restart the server with default options. let $restart_parameters =; --source include/start_mysqld.inc --echo # --echo # Bug#29823053: VERY SMALL TABLE_OPEN_CACHE CAUSES SEGMENTATION FAULT WHEN UPGRADING TO 8.0.16 --echo # let $MYSQLD_LOG= $MYSQLTEST_VARDIR/log/save_dd_upgrade_4.log; --echo # Copy zip files from suite location to working location. --copy_file $MYSQLTEST_VARDIR/std_data/upgrade/data_57022.zip $MYSQL_TMP_DIR/data_57022.zip --echo # Check that the file exists in the working folder. --file_exists $MYSQL_TMP_DIR/data_57022.zip --echo # Unzip the zip file. --exec unzip -qo $MYSQL_TMP_DIR/data_57022.zip -d $MYSQL_TMP_DIR --echo # Set different paths for --datadir let $MYSQLD_DATADIR3 = $MYSQL_TMP_DIR/data_57022; --echo # Stop DB server which was created by MTR default --exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect --shutdown_server --source include/wait_until_disconnected.inc --echo # Start the DB server to do upgrade. Without the bugfix, the server will fail. --exec echo "restart: --table_open_cache=1 --datadir=$MYSQLD_DATADIR3 --log-error=$MYSQLD_LOG" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect --enable_reconnect --let $wait_counter= 3000 --source include/wait_until_connected_again.inc --echo # Stop the server --source include/shutdown_mysqld.inc --echo # Remove copied files --remove_file $MYSQL_TMP_DIR/data_57022.zip --force-rmdir $MYSQLD_DATADIR3 --echo # Restart the server with default options. --source include/start_mysqld.inc --echo # end of test