328 lines
11 KiB
Plaintext
328 lines
11 KiB
Plaintext
# *************************************************************************
|
|
# wl#8619 : Test the functionality of portability to a different OS
|
|
# Test Linux --datadir and tablespaces runs on windows platform
|
|
# In order to run this testcase tablespace_portable_linux.zip file should
|
|
# exist in the mysql-test/std_data
|
|
# Note :This testcase is valid for the current trunk(9.0) release only,
|
|
# so for the future versions,this testcase has to modify and update the zip
|
|
# file with latest version of --datadir. As per the wl feature ,the upgrade
|
|
# script can not run with --datadir of zip file, it should be 1st upgraded
|
|
# the --datadir and tablespaces and then take the zip file and unzip in target
|
|
# location and then test the functionality. Hence intentionally upgrade
|
|
# step was not added in this testcase.
|
|
# How to create zip file:mysql-test/std_data/README_tablespace_portable_linux.txt
|
|
# *************************************************************************
|
|
--source include/have_innodb_16k.inc
|
|
--source include/not_valgrind.inc
|
|
--source include/windows.inc
|
|
|
|
let $MYSQLD_OLD_DATADIR = `select @@datadir`;
|
|
|
|
CREATE TABLE tab(c1 int);
|
|
|
|
INSERT INTO tab VALUES(10);
|
|
|
|
--echo # copy the win datadir zip into destination location
|
|
--copy_file $MYSQL_TEST_DIR/std_data/tablespace_portable_linux.zip $MYSQL_TMP_DIR/tablespace_portable_linux.zip
|
|
|
|
--echo # Unzip the zip file on windows platform
|
|
--exec unzip -q $MYSQL_TMP_DIR/tablespace_portable_linux.zip -d $MYSQL_TMP_DIR
|
|
|
|
--echo ## Stop DB server
|
|
--source include/shutdown_mysqld.inc
|
|
|
|
--echo ## Start Linx DB with --innodb-directories
|
|
let $innodb_dirs='$MYSQL_TMP_DIR/datadir1;$MYSQL_TMP_DIR/undo_files;$MYSQL_TMP_DIR/part0;$MYSQL_TMP_DIR/part1;$MYSQL_TMP_DIR/part2;$MYSQL_TMP_DIR/part3';
|
|
--let $restart_parameters=restart: --datadir=$MYSQL_TMP_DIR/Linx-DB --innodb_undo_directory=$MYSQL_TMP_DIR/undo_files --innodb_data_home_dir=$MYSQL_TMP_DIR/data_home --innodb_undo_tablespaces=5 --innodb_log_files_in_group=4 --innodb_log_group_home_dir=$MYSQL_TMP_DIR/data_home --innodb_data_file_path=data01:20M;data02:20M:autoextend --lower_case_table_names=1 --log_error_verbosity=3 --innodb-directories=$innodb_dirs
|
|
--source include/start_mysqld_no_echo.inc
|
|
|
|
--echo ## Check new datadir
|
|
--replace_result $MYSQL_TMP_DIR NEW_DATADIR
|
|
SELECT @@datadir;
|
|
|
|
--replace_result $MYSQL_TMP_DIR UNDO_FILES
|
|
SELECT @@innodb_undo_directory;
|
|
|
|
--replace_result $MYSQL_TMP_DIR DATA_HOME
|
|
SELECT @@innodb_data_home_dir;
|
|
|
|
--replace_result $MYSQL_TMP_DIR DATA_HOME_DIR
|
|
SELECT @@innodb_log_group_home_dir;
|
|
|
|
SELECT @@innodb_data_file_path;
|
|
|
|
SELECT @@innodb_undo_tablespaces;
|
|
|
|
--replace_result $MYSQL_TMP_DIR db_directory1
|
|
SHOW CREATE TABLE tab3;
|
|
|
|
--replace_result $MYSQL_TMP_DIR db_directory1
|
|
SHOW CREATE TABLE purchase;
|
|
|
|
--disable_warnings
|
|
|
|
# server was crashing here with ha_innodb.cc != nullptr
|
|
--replace_column 1 #
|
|
SELECT TABLESPACE_NAME,FILE_TYPE,TABLE_NAME,ENGINE FROM INFORMATION_SCHEMA.FILES;
|
|
|
|
--echo ## Stop DB server
|
|
--source include/shutdown_mysqld.inc
|
|
|
|
--echo ## restart the server with --datadir and without scan DIR option
|
|
--let $restart_parameters=restart: --datadir=$MYSQL_TMP_DIR/Linx-DB --innodb_undo_directory=$MYSQL_TMP_DIR/undo_files --innodb_data_home_dir=$MYSQL_TMP_DIR/data_home --innodb_undo_tablespaces=5 --innodb_log_files_in_group=4 --innodb_log_group_home_dir=$MYSQL_TMP_DIR/data_home --innodb_data_file_path=data01:20M;data02:20M:autoextend --log_error_verbosity=3 --lower_case_table_names=1
|
|
--source include/start_mysqld_no_echo.inc
|
|
|
|
--echo ## Check new datadir
|
|
--replace_result $MYSQL_TMP_DIR NEW_DATADIR
|
|
SELECT @@datadir;
|
|
|
|
--replace_result $MYSQL_TMP_DIR UNDO_FILES
|
|
SELECT @@innodb_undo_directory;
|
|
|
|
--replace_result $MYSQL_TMP_DIR DATA_HOME
|
|
SELECT @@innodb_data_home_dir;
|
|
|
|
--replace_result $MYSQL_TMP_DIR DATA_HOME_DIR
|
|
SELECT @@innodb_log_group_home_dir;
|
|
|
|
SELECT @@innodb_data_file_path;
|
|
|
|
SELECT @@innodb_undo_tablespaces;
|
|
|
|
--replace_result $MYSQL_TMP_DIR db_directory1
|
|
SHOW CREATE TABLE tab3;
|
|
|
|
SHOW CREATE TABLE tab4;
|
|
|
|
--replace_result $MYSQL_TMP_DIR db_directory1
|
|
SHOW CREATE TABLE purchase;
|
|
|
|
--echo ## Check with DML & DDL operations
|
|
SELECT * FROM tab1;
|
|
|
|
SELECT * FROM tab2;
|
|
|
|
SELECT * FROM tab3;
|
|
|
|
DELETE FROM tab1;
|
|
|
|
DELETE FROM tab2;
|
|
|
|
DELETE FROM tab3;
|
|
|
|
DELETE FROM tab4;
|
|
|
|
DELETE FROM purchase;
|
|
|
|
# Server throws error Got error 44 - 'InnoDB error' to be fixed
|
|
#ALTER TABLE tab3 ADD COLUMN c3 VARCHAR(15);
|
|
|
|
ALTER TABLE tab4 ADD COLUMN c3 VARCHAR(15);
|
|
|
|
INSERT INTO tab1 VALUES(1, 'VISH');
|
|
|
|
INSERT INTO tab2 VALUES(2, 'VISH');
|
|
|
|
INSERT INTO tab3 VALUES (100,'VISWANATH',100);
|
|
|
|
INSERT INTO tab3 VALUES (300,'VISWANATH',100);
|
|
|
|
INSERT INTO tab4 VALUES(2, 'VISH', 'NATH');
|
|
|
|
INSERT INTO purchase VALUES(1,'1980-05-31');
|
|
INSERT INTO purchase VALUES(2,'1999-05-31');
|
|
INSERT INTO purchase VALUES(3,'1998-05-31');
|
|
INSERT INTO purchase VALUES(4,'1979-05-31');
|
|
INSERT INTO purchase VALUES(5,'1978-05-31');
|
|
INSERT INTO purchase VALUES(6,'1997-05-31');
|
|
|
|
SELECT * FROM tab1;
|
|
|
|
SELECT * FROM tab2;
|
|
|
|
SELECT * FROM tab3;
|
|
|
|
SELECT * FROM tab4;
|
|
|
|
SELECT * FROM purchase;
|
|
|
|
--echo ## Stop DB server for moving tablespaces around
|
|
--source include/shutdown_mysqld.inc
|
|
|
|
--echo ## Moving tablespace files in criss-cross form
|
|
--move_file $MYSQL_TMP_DIR/part0/test/purchase#p#p0#sp#s0.ibd $MYSQL_TMP_DIR/datadir1/test/purchase#p#p0#sp#s0.ibd
|
|
--move_file $MYSQL_TMP_DIR/part1/test/purchase#p#p0#sp#s1.ibd $MYSQL_TMP_DIR/datadir1/test/purchase#p#p0#sp#s1.ibd
|
|
--move_file $MYSQL_TMP_DIR/datadir1/test/tab3#p#p0.ibd $MYSQL_TMP_DIR/part0/test/tab3#p#p0.ibd
|
|
--move_file $MYSQL_TMP_DIR/datadir1/test/tab3#p#p1.ibd $MYSQL_TMP_DIR/part1/test/tab3#p#p1.ibd
|
|
--move_file $MYSQL_TMP_DIR/undo_files/ts2.ibd $MYSQL_TMP_DIR/data_home/ts2.ibd
|
|
|
|
--echo ## Start Linx DB with --innodb-directories
|
|
let $innodb_dirs='$MYSQL_TMP_DIR/Linx-DB/../datadir1;$MYSQL_TMP_DIR/Linx-DB/../undo_files;$MYSQL_TMP_DIR/Linx-DB/../part0;$MYSQL_TMP_DIR/Linx-DB/../part1;$MYSQL_TMP_DIR/part2;$MYSQL_TMP_DIR/part3';
|
|
--let $restart_parameters=restart: --datadir=$MYSQL_TMP_DIR/Linx-DB --innodb_undo_directory=$MYSQL_TMP_DIR/undo_files --innodb_data_home_dir=$MYSQL_TMP_DIR/data_home --innodb_undo_tablespaces=5 --innodb_log_files_in_group=4 --innodb_log_group_home_dir=$MYSQL_TMP_DIR/data_home --innodb_data_file_path=data01:20M;data02:20M:autoextend --lower_case_table_names=1 --log_error_verbosity=3 --innodb-directories=$innodb_dirs
|
|
--source include/start_mysqld_no_echo.inc
|
|
|
|
--echo ## Check new datadir
|
|
--replace_result $MYSQL_TMP_DIR NEW_DATADIR
|
|
SELECT @@datadir;
|
|
|
|
--replace_result $MYSQL_TMP_DIR UNDO_FILES
|
|
SELECT @@innodb_undo_directory;
|
|
|
|
--replace_result $MYSQL_TMP_DIR DATA_HOME
|
|
SELECT @@innodb_data_home_dir;
|
|
|
|
--replace_result $MYSQL_TMP_DIR DATA_HOME_DIR
|
|
SELECT @@innodb_log_group_home_dir;
|
|
|
|
SELECT @@innodb_data_file_path;
|
|
|
|
SELECT @@innodb_undo_tablespaces;
|
|
|
|
--replace_result $MYSQL_TMP_DIR db_directory1
|
|
SHOW CREATE TABLE tab3;
|
|
|
|
--replace_result $MYSQL_TMP_DIR db_directory1
|
|
SHOW CREATE TABLE purchase;
|
|
|
|
SHOW CREATE TABLE tab4;
|
|
|
|
--echo ## Stop DB server after scan DIR
|
|
--source include/shutdown_mysqld.inc
|
|
|
|
--echo ## restart the server with --datadir and without scan DIR option
|
|
--let $restart_parameters=restart: --datadir=$MYSQL_TMP_DIR/Linx-DB --innodb_undo_directory=$MYSQL_TMP_DIR/undo_files --innodb_data_home_dir=$MYSQL_TMP_DIR/data_home --innodb_undo_tablespaces=5 --innodb_log_files_in_group=4 --innodb_log_group_home_dir=$MYSQL_TMP_DIR/data_home --innodb_data_file_path=data01:20M;data02:20M:autoextend --log_error_verbosity=3 --lower_case_table_names=1
|
|
--source include/start_mysqld_no_echo.inc
|
|
|
|
--echo ## Check new datadir
|
|
--replace_result $MYSQL_TMP_DIR NEW_DATADIR
|
|
SELECT @@datadir;
|
|
|
|
--replace_result $MYSQL_TMP_DIR UNDO_FILES
|
|
SELECT @@innodb_undo_directory;
|
|
|
|
--replace_result $MYSQL_TMP_DIR DATA_HOME
|
|
SELECT @@innodb_data_home_dir;
|
|
|
|
--replace_result $MYSQL_TMP_DIR DATA_HOME_DIR
|
|
SELECT @@innodb_log_group_home_dir;
|
|
|
|
SELECT @@innodb_data_file_path;
|
|
|
|
SELECT @@innodb_undo_tablespaces;
|
|
|
|
--replace_result $MYSQL_TMP_DIR db_directory1
|
|
SHOW CREATE TABLE tab3;
|
|
|
|
--replace_result $MYSQL_TMP_DIR db_directory1
|
|
SHOW CREATE TABLE purchase;
|
|
|
|
SHOW CREATE TABLE tab4;
|
|
|
|
--echo ## Check with DML operations
|
|
DELETE FROM tab1;
|
|
|
|
DELETE FROM tab2;
|
|
|
|
DELETE FROM tab3;
|
|
|
|
DELETE FROM tab4;
|
|
|
|
DELETE FROM purchase;
|
|
|
|
# Server throws error Got error 44 - 'InnoDB error' to be fixed
|
|
#ALTER TABLE tab3 ADD COLUMN c3 VARCHAR(15);
|
|
|
|
ALTER TABLE tab4 DROP COLUMN c3;
|
|
|
|
# Server throws error Got error 44 - 'InnoDB error' to be fixed
|
|
#ALTER TABLE purchase ADD COLUMN c3 VARCHAR(15);
|
|
|
|
INSERT INTO tab1 VALUES(1, 'VISH');
|
|
|
|
INSERT INTO tab2 VALUES(2, 'VISH');
|
|
|
|
INSERT INTO tab3 VALUES (100,'VISWANATH',100);
|
|
|
|
INSERT INTO tab3 VALUES (300,'VISWANATH',100);
|
|
|
|
INSERT INTO tab4 VALUES(2, 'VISH');
|
|
|
|
INSERT INTO purchase VALUES(1,'1980-05-31');
|
|
INSERT INTO purchase VALUES(2,'1999-05-31');
|
|
INSERT INTO purchase VALUES(3,'1998-05-31');
|
|
INSERT INTO purchase VALUES(4,'1979-05-31');
|
|
INSERT INTO purchase VALUES(5,'1978-05-31');
|
|
INSERT INTO purchase VALUES(6,'1997-05-31');
|
|
|
|
SELECT * FROM tab1;
|
|
|
|
SELECT * FROM tab2;
|
|
|
|
SELECT * FROM tab3;
|
|
|
|
SELECT * FROM tab4;
|
|
|
|
# clean up
|
|
DROP TABLE tab1;
|
|
|
|
DROP TABLE tab2;
|
|
|
|
DROP TABLE tab3;
|
|
|
|
DROP TABLE tab4;
|
|
|
|
DROP TABLE purchase;
|
|
|
|
DROP TABLESPACE ts2;
|
|
|
|
--echo ## Stop DB server for clean up
|
|
--source include/shutdown_mysqld.inc
|
|
|
|
--echo ## Cleanup the Windows --datadir location and its *.ibd file location
|
|
--remove_files_wildcard $MYSQL_TMP_DIR/data_home/ data*
|
|
--remove_files_wildcard $MYSQL_TMP_DIR/data_home/ ib_buffer*
|
|
--remove_files_wildcard $MYSQL_TMP_DIR/data_home/ ib_log*
|
|
--remove_files_wildcard $MYSQL_TMP_DIR/data_home/ ibtmp*
|
|
--remove_files_wildcard $MYSQL_TMP_DIR/data_home/ tablespaces*
|
|
--rmdir $MYSQL_TMP_DIR/data_home
|
|
|
|
--remove_files_wildcard $MYSQL_TMP_DIR/undo_files/ undo*
|
|
--rmdir $MYSQL_TMP_DIR/undo_files
|
|
|
|
--rmdir $MYSQL_TMP_DIR/datadir1/test
|
|
--rmdir $MYSQL_TMP_DIR/datadir1
|
|
--rmdir $MYSQL_TMP_DIR/part0/test
|
|
--rmdir $MYSQL_TMP_DIR/part1/test
|
|
--rmdir $MYSQL_TMP_DIR/part2/test
|
|
--rmdir $MYSQL_TMP_DIR/part3/test
|
|
--rmdir $MYSQL_TMP_DIR/part0
|
|
--rmdir $MYSQL_TMP_DIR/part1
|
|
--rmdir $MYSQL_TMP_DIR/part2
|
|
--rmdir $MYSQL_TMP_DIR/part3
|
|
|
|
--remove_files_wildcard $MYSQL_TMP_DIR/Linx-DB/test/ *
|
|
--remove_files_wildcard $MYSQL_TMP_DIR/Linx-DB/sys/ *
|
|
--remove_files_wildcard $MYSQL_TMP_DIR/Linx-DB/mysql/ *
|
|
--remove_files_wildcard $MYSQL_TMP_DIR/Linx-DB/performance_schema/ *
|
|
--rmdir $MYSQL_TMP_DIR/Linx-DB/mysql
|
|
--rmdir $MYSQL_TMP_DIR/Linx-DB/sys
|
|
--rmdir $MYSQL_TMP_DIR/Linx-DB/test
|
|
--rmdir $MYSQL_TMP_DIR/Linx-DB/performance_schema
|
|
--remove_files_wildcard $MYSQL_TMP_DIR/Linx-DB/ *
|
|
--rmdir $MYSQL_TMP_DIR/Linx-DB
|
|
--remove_files_wildcard $MYSQL_TMP_DIR/ tablespace_portable_win.zip
|
|
|
|
--echo ## Restart the server with MTR default location
|
|
--replace_result $MYSQLD_OLD_DATADIR OLD_DATADIR
|
|
--let $restart_parameters="restart: --datadir=$MYSQLD_OLD_DATADIR"
|
|
--source include/start_mysqld.inc
|
|
|
|
--replace_result $MYSQLD_OLD_DATADIR OLD_DATADIR
|
|
SELECT @@datadir;
|
|
|
|
SELECT * FROM tab;
|
|
|
|
DROP TABLE tab;
|
|
|
|
call mtr.add_suppression("\\[Warning\\] .*MY-\\d+.* Tablespace 'innodb_system' filename is unknown. Use \\--innodb-directories to locate of the file.");
|