diff options
Diffstat (limited to 'mysql-test/suite/parts/inc/partition_check_drop.inc')
-rw-r--r-- | mysql-test/suite/parts/inc/partition_check_drop.inc | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/mysql-test/suite/parts/inc/partition_check_drop.inc b/mysql-test/suite/parts/inc/partition_check_drop.inc new file mode 100644 index 00000000..e7767d66 --- /dev/null +++ b/mysql-test/suite/parts/inc/partition_check_drop.inc @@ -0,0 +1,76 @@ +################################################################################ +# inc/partition_check_drop.inc # +# # +# Purpose: # +# Check that a drop table removes all files belonging to this table. # +# Remaining unused files can be caused by imperfect DROP TABLE or # +# ALTER TABLE <alter partitioning>. # +# # +# This routine is only useful for the partition_<feature>_<engine> tests. # +# # +#------------------------------------------------------------------------------# +# Original Author: mleich # +# Original Date: 2006-05-12 # +################################################################################ + +if ($no_debug) +{ + --disable_query_log +} + +# Get the MySQL Servers datadir without ending slash +let $MYSQLD_DATADIR= `select LEFT(@@datadir, LENGTH(@@datadir)-1)`; +#echo MYSQLD_DATADIR: $MYSQLD_DATADIR; + +if ($do_file_tests) +{ + let $ls_file= $MYSQLD_DATADIR/test/tmp2; + # List the files belonging to the table t1 + --replace_result $MYSQLTEST_VARDIR \$MYSQLTEST_VARDIR #p# #P# #sp# #SP# + --list_files_write_file $ls_file $MYSQLD_DATADIR/test t1* + --chmod 0644 $ls_file + if ($with_directories) + { + --replace_result $MYSQLTEST_VARDIR \$MYSQLTEST_VARDIR #p# #P# #sp# #SP# + --list_files_append_file $ls_file $MYSQLTEST_VARDIR/tmp t1* + } + eval SET @aux = load_file('$ls_file'); + + # clean up + --remove_file $ls_file +} +if (!$do_file_tests) +{ + SET @aux = '--- not determined ---'; +} + +# UPDATE the current filelist of the table t1 within t0_definition +# Note: This list should be empty, because the table t1 was dropped ! +eval INSERT INTO t0_definition SET state = 'old', file_list = @aux +ON DUPLICATE KEY UPDATE file_list = @aux; +# eval UPDATE t0_definition SET file_list = @aux WHERE state = 'old'; + +# Check if filelist is empty. +let $found_garbage= `SELECT file_list <> '' FROM t0_definition WHERE state = 'old'`; +if ($found_garbage) +{ + # Unfortunately the DROP TABLE did not remove the unused files + if ($ls) + { + --echo # Attention: There are unused files. + --echo # Either the DROP TABLE or a preceding ALTER TABLE + --echo # <alter partitioning> worked incomplete. + --echo # We found: + # Print the list of files into the protocol + eval SELECT file_list AS "unified filelist" + FROM t0_definition WHERE state = 'old'; + } + # Do a manual cleanup, because the following tests should not suffer from + # remaining files + --remove_files_wildcard $MYSQLD_DATADIR/test t1* + if ($with_directories) + { + --remove_files_wildcard $MYSQLTEST_VARDIR/tmp t1* + } +} +--enable_query_log |