mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
MDEV-9099: Test encryption.innodb_encryption_discard_import fails on buildbot
This commit is contained in:
126
mysql-test/suite/encryption/include/innodb-util.pl
Normal file
126
mysql-test/suite/encryption/include/innodb-util.pl
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
#
|
||||||
|
# Utility functions to copy files for WL#5522
|
||||||
|
#
|
||||||
|
# All the tables must be in the same database, you can call it like so:
|
||||||
|
# ib_backup_tablespaces("test", "t1", "blah", ...).
|
||||||
|
|
||||||
|
use File::Copy;
|
||||||
|
use File::Spec;
|
||||||
|
|
||||||
|
sub ib_normalize_path {
|
||||||
|
my ($path) = @_;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub ib_backup_tablespace {
|
||||||
|
my ($db, $table) = @_;
|
||||||
|
my $datadir = $ENV{'MYSQLD_DATADIR'};
|
||||||
|
my $cfg_file = sprintf("%s.cfg", $table);
|
||||||
|
my $ibd_file = sprintf("%s.ibd", $table);
|
||||||
|
my $tmpd = $ENV{'MYSQLTEST_VARDIR'} . "/tmp";
|
||||||
|
|
||||||
|
my @args = (File::Spec->catfile($datadir, $db, $ibd_file),
|
||||||
|
File::Spec->catfile($tmpd, $ibd_file));
|
||||||
|
|
||||||
|
copy(@args) or die "copy @args failed: $!";
|
||||||
|
|
||||||
|
my @args = (File::Spec->catfile($datadir, $db, $cfg_file),
|
||||||
|
File::Spec->catfile($tmpd, $cfg_file));
|
||||||
|
|
||||||
|
copy(@args) or die "copy @args failed: $!";
|
||||||
|
}
|
||||||
|
|
||||||
|
sub ib_cleanup {
|
||||||
|
my ($db, $table) = @_;
|
||||||
|
my $datadir = $ENV{'MYSQLD_DATADIR'};
|
||||||
|
my $cfg_file = sprintf("%s.cfg", $table);
|
||||||
|
|
||||||
|
print "unlink: $cfg_file\n";
|
||||||
|
|
||||||
|
# These may or may not exist
|
||||||
|
unlink(File::Spec->catfile($datadir, $db, $cfg_file));
|
||||||
|
}
|
||||||
|
|
||||||
|
sub ib_unlink_tablespace {
|
||||||
|
my ($db, $table) = @_;
|
||||||
|
my $datadir = $ENV{'MYSQLD_DATADIR'};
|
||||||
|
my $ibd_file = sprintf("%s.ibd", $table);
|
||||||
|
|
||||||
|
print "unlink: $ibd_file\n";
|
||||||
|
# This may or may not exist
|
||||||
|
unlink(File::Spec->catfile($datadir, $db, $ibd_file));
|
||||||
|
|
||||||
|
ib_cleanup($db, $table);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub ib_backup_tablespaces {
|
||||||
|
my ($db, @tables) = @_;
|
||||||
|
|
||||||
|
foreach my $table (@tables) {
|
||||||
|
print "backup: $table\n";
|
||||||
|
ib_backup_tablespace($db, $table);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub ib_discard_tablespace { }
|
||||||
|
|
||||||
|
sub ib_discard_tablespaces { }
|
||||||
|
|
||||||
|
sub ib_restore_cfg_file {
|
||||||
|
my ($tmpd, $datadir, $db, $table) = @_;
|
||||||
|
my $cfg_file = sprintf("%s.cfg", $table);
|
||||||
|
|
||||||
|
my @args = (File::Spec->catfile($tmpd, $cfg_file),
|
||||||
|
File::Spec->catfile($datadir, "$db", $cfg_file));
|
||||||
|
|
||||||
|
copy(@args) or die "copy @args failed: $!";
|
||||||
|
}
|
||||||
|
|
||||||
|
sub ib_restore_ibd_file {
|
||||||
|
my ($tmpd, $datadir, $db, $table) = @_;
|
||||||
|
my $ibd_file = sprintf("%s.ibd", $table);
|
||||||
|
|
||||||
|
my @args = (File::Spec->catfile($tmpd, $ibd_file),
|
||||||
|
File::Spec->catfile($datadir, $db, $ibd_file));
|
||||||
|
|
||||||
|
copy(@args) or die "copy @args failed: $!";
|
||||||
|
}
|
||||||
|
|
||||||
|
sub ib_restore_tablespace {
|
||||||
|
my ($db, $table) = @_;
|
||||||
|
my $datadir = $ENV{'MYSQLD_DATADIR'};
|
||||||
|
my $tmpd = $ENV{'MYSQLTEST_VARDIR'} . "/tmp";
|
||||||
|
|
||||||
|
ib_restore_cfg_file($tmpd, $datadir, $db, $table);
|
||||||
|
ib_restore_ibd_file($tmpd, $datadir, $db, $table);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub ib_restore_tablespaces {
|
||||||
|
my ($db, @tables) = @_;
|
||||||
|
|
||||||
|
foreach my $table (@tables) {
|
||||||
|
print "restore: $table .ibd and .cfg files\n";
|
||||||
|
ib_restore_tablespace($db, $table);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub ib_restore_cfg_files {
|
||||||
|
my ($db, @tables) = @_;
|
||||||
|
my $datadir = $ENV{'MYSQLD_DATADIR'};
|
||||||
|
my $tmpd = $ENV{'MYSQLTEST_VARDIR'} . "/tmp";
|
||||||
|
|
||||||
|
foreach my $table (@tables) {
|
||||||
|
print "restore: $table .cfg file\n";
|
||||||
|
ib_restore_cfg_file($tmpd, $datadir, $db, $table);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub ib_restore_ibd_files {
|
||||||
|
my ($db, @tables) = @_;
|
||||||
|
my $datadir = $ENV{'MYSQLD_DATADIR'};
|
||||||
|
my $tmpd = $ENV{'MYSQLTEST_VARDIR'} . "/tmp";
|
||||||
|
|
||||||
|
foreach my $table (@tables) {
|
||||||
|
print "restore: $table .ibd file\n";
|
||||||
|
ib_restore_ibd_file($tmpd, $datadir, $db, $table);
|
||||||
|
}
|
||||||
|
}
|
@ -28,8 +28,16 @@ NOT FOUND /foobar/ in t1.ibd
|
|||||||
NOT FOUND /temp/ in t2.ibd
|
NOT FOUND /temp/ in t2.ibd
|
||||||
# t3 ... on expecting NOT FOUND
|
# t3 ... on expecting NOT FOUND
|
||||||
NOT FOUND /barfoo/ in t3.ibd
|
NOT FOUND /barfoo/ in t3.ibd
|
||||||
FLUSH TABLE t1, t2, t3 FOR EXPORT;
|
t1.frm
|
||||||
# List before copying files
|
t1.ibd
|
||||||
|
t2.frm
|
||||||
|
t2.ibd
|
||||||
|
t3.frm
|
||||||
|
t3.ibd
|
||||||
|
FLUSH TABLES t1, t2, t3 FOR EXPORT;
|
||||||
|
backup: t1
|
||||||
|
backup: t2
|
||||||
|
backup: t3
|
||||||
t1.cfg
|
t1.cfg
|
||||||
t1.frm
|
t1.frm
|
||||||
t1.ibd
|
t1.ibd
|
||||||
@ -40,50 +48,21 @@ t3.cfg
|
|||||||
t3.frm
|
t3.frm
|
||||||
t3.ibd
|
t3.ibd
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
# Restarting server
|
|
||||||
# Done restarting server
|
|
||||||
# List before t1 DISCARD
|
|
||||||
t1.frm
|
|
||||||
t1.ibd
|
|
||||||
t2.frm
|
|
||||||
t2.ibd
|
|
||||||
t3.frm
|
|
||||||
t3.ibd
|
|
||||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
|
||||||
SET GLOBAL innodb_file_per_table = ON;
|
|
||||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||||
ALTER TABLE t2 DISCARD TABLESPACE;
|
ALTER TABLE t2 DISCARD TABLESPACE;
|
||||||
ALTER TABLE t3 DISCARD TABLESPACE;
|
ALTER TABLE t3 DISCARD TABLESPACE;
|
||||||
# List after t1 DISCARD
|
restore: t1 .ibd and .cfg files
|
||||||
t1.frm
|
restore: t2 .ibd and .cfg files
|
||||||
t2.frm
|
restore: t3 .ibd and .cfg files
|
||||||
t3.frm
|
|
||||||
# Restarting server
|
|
||||||
# Done restarting server
|
|
||||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
|
||||||
SET GLOBAL innodb_file_per_table = ON;
|
|
||||||
# Tablespaces should be still encrypted
|
|
||||||
# t1 yes on expecting NOT FOUND
|
|
||||||
NOT FOUND /foobar/ in t1.ibd
|
|
||||||
# t2 ... on expecting NOT FOUND
|
|
||||||
NOT FOUND /temp/ in t2.ibd
|
|
||||||
# t3 ... on expecting NOT FOUND
|
|
||||||
NOT FOUND /barfoo/ in t3.ibd
|
|
||||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||||
Warnings:
|
|
||||||
Warning 1814 Tablespace has been discarded for table 't1'
|
|
||||||
SELECT COUNT(1) FROM t1;
|
SELECT COUNT(1) FROM t1;
|
||||||
COUNT(1)
|
COUNT(1)
|
||||||
10000
|
10000
|
||||||
ALTER TABLE t2 IMPORT TABLESPACE;
|
ALTER TABLE t2 IMPORT TABLESPACE;
|
||||||
Warnings:
|
|
||||||
Warning 1814 Tablespace has been discarded for table 't2'
|
|
||||||
SELECT COUNT(1) FROM t2;
|
SELECT COUNT(1) FROM t2;
|
||||||
COUNT(1)
|
COUNT(1)
|
||||||
10000
|
10000
|
||||||
ALTER TABLE t3 IMPORT TABLESPACE;
|
ALTER TABLE t3 IMPORT TABLESPACE;
|
||||||
Warnings:
|
|
||||||
Warning 1814 Tablespace has been discarded for table 't3'
|
|
||||||
SELECT COUNT(1) FROM t3;
|
SELECT COUNT(1) FROM t3;
|
||||||
COUNT(1)
|
COUNT(1)
|
||||||
10000
|
10000
|
||||||
|
@ -2,12 +2,12 @@
|
|||||||
-- source include/have_example_key_management_plugin.inc
|
-- source include/have_example_key_management_plugin.inc
|
||||||
-- source include/not_valgrind.inc
|
-- source include/not_valgrind.inc
|
||||||
-- source include/not_embedded.inc
|
-- source include/not_embedded.inc
|
||||||
-- source include/not_windows.inc
|
|
||||||
|
|
||||||
call mtr.add_suppression("InnoDB: Table .* tablespace is set as discarded.");
|
call mtr.add_suppression("InnoDB: Table .* tablespace is set as discarded.");
|
||||||
|
|
||||||
--let $MYSQLD_TMPDIR = `SELECT @@tmpdir`
|
let $MYSQLD_TMPDIR = `SELECT @@tmpdir`;
|
||||||
--let $MYSQLD_DATADIR = `SELECT @@datadir`
|
let $MYSQLD_DATADIR = `SELECT @@datadir`;
|
||||||
|
|
||||||
--let SEARCH_RANGE = 10000000
|
--let SEARCH_RANGE = 10000000
|
||||||
--let $id = `SELECT RAND()`
|
--let $id = `SELECT RAND()`
|
||||||
--let t1_IBD = $MYSQLD_DATADIR/test/t1.ibd
|
--let t1_IBD = $MYSQLD_DATADIR/test/t1.ibd
|
||||||
@ -66,88 +66,25 @@ set autocommit=1;
|
|||||||
-- let SEARCH_FILE=$t3_IBD
|
-- let SEARCH_FILE=$t3_IBD
|
||||||
-- source include/search_pattern_in_file.inc
|
-- source include/search_pattern_in_file.inc
|
||||||
|
|
||||||
FLUSH TABLE t1, t2, t3 FOR EXPORT;
|
let MYSQLD_DATADIR =`SELECT @@datadir`;
|
||||||
|
--list_files $MYSQLD_DATADIR/test
|
||||||
--echo # List before copying files
|
FLUSH TABLES t1, t2, t3 FOR EXPORT;
|
||||||
|
perl;
|
||||||
|
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||||
|
ib_backup_tablespaces("test", "t1","t2","t3");
|
||||||
|
EOF
|
||||||
--list_files $MYSQLD_DATADIR/test
|
--list_files $MYSQLD_DATADIR/test
|
||||||
--disable_result_log
|
|
||||||
--error 0,1,2
|
|
||||||
--remove_file $MYSQLD_TMPDIR/t1.cfg
|
|
||||||
--error 0,1,2
|
|
||||||
--remove_file $MYSQLD_TMPDIR/t1.ibd
|
|
||||||
--error 0,1,2
|
|
||||||
--remove_file $MYSQLD_TMPDIR/t2.cfg
|
|
||||||
--error 0,1,2
|
|
||||||
--remove_file $MYSQLD_TMPDIR/t2.ibd
|
|
||||||
--error 0,1,2
|
|
||||||
--remove_file $MYSQLD_TMPDIR/t3.cfg
|
|
||||||
--error 0,1,2
|
|
||||||
--remove_file $MYSQLD_TMPDIR/t3.ibd
|
|
||||||
--enable_result_log
|
|
||||||
--copy_file $MYSQLD_DATADIR/test/t1.cfg $MYSQLD_TMPDIR/t1$id.cfg
|
|
||||||
--copy_file $MYSQLD_DATADIR/test/t1.ibd $MYSQLD_TMPDIR/t1$id.ibd
|
|
||||||
--copy_file $MYSQLD_DATADIR/test/t2.cfg $MYSQLD_TMPDIR/t2$id.cfg
|
|
||||||
--copy_file $MYSQLD_DATADIR/test/t2.ibd $MYSQLD_TMPDIR/t2$id.ibd
|
|
||||||
--copy_file $MYSQLD_DATADIR/test/t3.cfg $MYSQLD_TMPDIR/t3$id.cfg
|
|
||||||
--copy_file $MYSQLD_DATADIR/test/t3.ibd $MYSQLD_TMPDIR/t3$id.ibd
|
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
|
||||||
--echo # Restarting server
|
|
||||||
-- source include/restart_mysqld.inc
|
|
||||||
--echo # Done restarting server
|
|
||||||
--echo # List before t1 DISCARD
|
|
||||||
--list_files $MYSQLD_DATADIR/test
|
|
||||||
|
|
||||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
|
||||||
SET GLOBAL innodb_file_per_table = ON;
|
|
||||||
|
|
||||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||||
ALTER TABLE t2 DISCARD TABLESPACE;
|
ALTER TABLE t2 DISCARD TABLESPACE;
|
||||||
ALTER TABLE t3 DISCARD TABLESPACE;
|
ALTER TABLE t3 DISCARD TABLESPACE;
|
||||||
|
|
||||||
--echo # List after t1 DISCARD
|
perl;
|
||||||
--list_files $MYSQLD_DATADIR/test
|
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||||
--error 0,1,2
|
ib_discard_tablespaces("test", "t1","t2","t3");
|
||||||
--remove_file $MYSQLD_DATADIR/test/t1.cfg
|
ib_restore_tablespaces("test", "t1","t2","t3");
|
||||||
--error 0,1,2
|
EOF
|
||||||
--remove_file $MYSQLD_DATADIR/test/t1.ibd
|
|
||||||
--error 0,1,2
|
|
||||||
--remove_file $MYSQLD_DATADIR/test/t2.cfg
|
|
||||||
--error 0,1,2
|
|
||||||
--remove_file $MYSQLD_DATADIR/test/t2.ibd
|
|
||||||
--error 0,1,2
|
|
||||||
--remove_file $MYSQLD_DATADIR/test/t3.cfg
|
|
||||||
--error 0,1,2
|
|
||||||
--remove_file $MYSQLD_DATADIR/test/t3.ibd
|
|
||||||
--enable_result_log
|
|
||||||
--echo # Restarting server
|
|
||||||
-- source include/restart_mysqld.inc
|
|
||||||
--echo # Done restarting server
|
|
||||||
|
|
||||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
|
||||||
SET GLOBAL innodb_file_per_table = ON;
|
|
||||||
|
|
||||||
--copy_file $MYSQLD_TMPDIR/t1$id.cfg $MYSQLD_DATADIR/test/t1.cfg
|
|
||||||
--copy_file $MYSQLD_TMPDIR/t1$id.ibd $MYSQLD_DATADIR/test/t1.ibd
|
|
||||||
--copy_file $MYSQLD_TMPDIR/t2$id.cfg $MYSQLD_DATADIR/test/t2.cfg
|
|
||||||
--copy_file $MYSQLD_TMPDIR/t2$id.ibd $MYSQLD_DATADIR/test/t2.ibd
|
|
||||||
--copy_file $MYSQLD_TMPDIR/t3$id.cfg $MYSQLD_DATADIR/test/t3.cfg
|
|
||||||
--copy_file $MYSQLD_TMPDIR/t3$id.ibd $MYSQLD_DATADIR/test/t3.ibd
|
|
||||||
|
|
||||||
--sleep 5
|
|
||||||
--echo # Tablespaces should be still encrypted
|
|
||||||
--let SEARCH_PATTERN=foobar
|
|
||||||
--echo # t1 yes on expecting NOT FOUND
|
|
||||||
-- let SEARCH_FILE=$t1_IBD
|
|
||||||
-- source include/search_pattern_in_file.inc
|
|
||||||
--let SEARCH_PATTERN=temp
|
|
||||||
--echo # t2 ... on expecting NOT FOUND
|
|
||||||
-- let SEARCH_FILE=$t2_IBD
|
|
||||||
-- source include/search_pattern_in_file.inc
|
|
||||||
--echo # t3 ... on expecting NOT FOUND
|
|
||||||
--let SEARCH_PATTERN=barfoo
|
|
||||||
-- let SEARCH_FILE=$t3_IBD
|
|
||||||
-- source include/search_pattern_in_file.inc
|
|
||||||
|
|
||||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||||
SELECT COUNT(1) FROM t1;
|
SELECT COUNT(1) FROM t1;
|
||||||
|
Reference in New Issue
Block a user