polardbxengine/mysql-test/t/dd_upgrade_test.test

854 lines
34 KiB
Plaintext

--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,<FILE>);
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,<FILE>);
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,<FILE>);
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,<FILE>);
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