-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
MDEV-8770: Incorrect error message when importing page compressed tab…
…lespace Added decompression and after page update recompression support for import.
- Loading branch information
Jan Lindström
committed
Sep 22, 2015
1 parent
e96f3c7
commit 89af0f1
Showing
12 changed files
with
519 additions
and
58 deletions.
There are no files selected for viewing
144 changes: 144 additions & 0 deletions
144
mysql-test/suite/encryption/r/innodb-discard-import.result
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,144 @@ | ||
call mtr.add_suppression("InnoDB: Table .* tablespace is set as discarded"); | ||
SET GLOBAL innodb_file_format = `Barracuda`; | ||
SET GLOBAL innodb_file_per_table = ON; | ||
SET GLOBAL innodb_compression_algorithm = 1; | ||
create table t1(c1 bigint not null, b char(200)) engine=innodb encrypted=yes encryption_key_id=4; | ||
show warnings; | ||
Level Code Message | ||
create table t2(c1 bigint not null, b char(200)) engine=innodb page_compressed=1 encrypted=yes encryption_key_id=4; | ||
show warnings; | ||
Level Code Message | ||
create table t3(c1 bigint not null, b char(200)) engine=innodb row_format=compressed encrypted=yes encryption_key_id=4; | ||
show warnings; | ||
Level Code Message | ||
create table t4(c1 bigint not null, b char(200)) engine=innodb page_compressed=1; | ||
show warnings; | ||
Level Code Message | ||
create procedure innodb_insert_proc (repeat_count int) | ||
begin | ||
declare current_num int; | ||
set current_num = 0; | ||
while current_num < repeat_count do | ||
insert into t1 values(current_num, repeat('foobar',30)); | ||
insert into t2 values(current_num, repeat('barfoo',30)); | ||
insert into t3 values(current_num, repeat('tmpres',30)); | ||
insert into t4 values(current_num, repeat('mysql',30)); | ||
set current_num = current_num + 1; | ||
end while; | ||
end// | ||
commit; | ||
set autocommit=0; | ||
call innodb_insert_proc(2000); | ||
commit; | ||
set autocommit=1; | ||
select count(*) from t1; | ||
count(*) | ||
2000 | ||
select count(*) from t2; | ||
count(*) | ||
2000 | ||
select count(*) from t3; | ||
count(*) | ||
2000 | ||
select count(*) from t4; | ||
count(*) | ||
2000 | ||
FLUSH TABLE t1,t2,t3,t4 FOR EXPORT; | ||
# List before copying files | ||
t1.cfg | ||
t1.frm | ||
t1.ibd | ||
t2.cfg | ||
t2.frm | ||
t2.ibd | ||
t3.cfg | ||
t3.frm | ||
t3.ibd | ||
t4.cfg | ||
t4.frm | ||
t4.ibd | ||
UNLOCK TABLES; | ||
# tables should be either encrypted and/or compressed | ||
# t1 yes on expecting NOT FOUND | ||
NOT FOUND /foobar/ in t1.ibd | ||
# t2 yes on expecting NOT FOUND | ||
NOT FOUND /barfoo/ in t2.ibd | ||
# t3 yes on expecting NOT FOUND | ||
NOT FOUND /tmpres/ in t3.ibd | ||
# t4 yes on expecting NOT FOUND | ||
NOT FOUND /mysql/ in t4.ibd | ||
ALTER TABLE t1 DISCARD TABLESPACE; | ||
ALTER TABLE t2 DISCARD TABLESPACE; | ||
ALTER TABLE t3 DISCARD TABLESPACE; | ||
ALTER TABLE t4 DISCARD TABLESPACE; | ||
SET GLOBAL innodb_file_format = `Barracuda`; | ||
SET GLOBAL innodb_file_per_table = ON; | ||
SET GLOBAL innodb_compression_algorithm = 1; | ||
# List after t1 DISCARD | ||
t1.frm | ||
t2.frm | ||
t3.frm | ||
t4.frm | ||
ALTER TABLE t1 IMPORT TABLESPACE; | ||
Warnings: | ||
Warning 1814 Tablespace has been discarded for table 't1' | ||
SHOW CREATE TABLE t1; | ||
Table Create Table | ||
t1 CREATE TABLE `t1` ( | ||
`c1` bigint(20) NOT NULL, | ||
`b` char(200) DEFAULT NULL | ||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `encrypted`=yes `encryption_key_id`=4 | ||
SELECT COUNT(*) FROM t1; | ||
COUNT(*) | ||
2000 | ||
ALTER TABLE t2 IMPORT TABLESPACE; | ||
Warnings: | ||
Warning 1814 Tablespace has been discarded for table 't2' | ||
SHOW CREATE TABLE t2; | ||
Table Create Table | ||
t2 CREATE TABLE `t2` ( | ||
`c1` bigint(20) NOT NULL, | ||
`b` char(200) DEFAULT NULL | ||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `encrypted`=yes `encryption_key_id`=4 | ||
SELECT COUNT(*) FROM t2; | ||
COUNT(*) | ||
2000 | ||
ALTER TABLE t3 IMPORT TABLESPACE; | ||
Warnings: | ||
Warning 1814 Tablespace has been discarded for table 't3' | ||
SHOW CREATE TABLE t3; | ||
Table Create Table | ||
t3 CREATE TABLE `t3` ( | ||
`c1` bigint(20) NOT NULL, | ||
`b` char(200) DEFAULT NULL | ||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED `encrypted`=yes `encryption_key_id`=4 | ||
SELECT COUNT(*) FROM t3; | ||
COUNT(*) | ||
2000 | ||
ALTER TABLE t4 IMPORT TABLESPACE; | ||
Warnings: | ||
Warning 1814 Tablespace has been discarded for table 't4' | ||
SHOW CREATE TABLE t4; | ||
Table Create Table | ||
t4 CREATE TABLE `t4` ( | ||
`c1` bigint(20) NOT NULL, | ||
`b` char(200) DEFAULT NULL | ||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 | ||
SELECT COUNT(*) FROM t4; | ||
COUNT(*) | ||
2000 | ||
flush data to disk | ||
SET GLOBAL innodb_file_format = `Barracuda`; | ||
SET GLOBAL innodb_file_per_table = ON; | ||
SET GLOBAL innodb_compression_algorithm = 1; | ||
# tables should be still either encrypted and/or compressed | ||
# t1 yes on expecting NOT FOUND | ||
NOT FOUND /foobar/ in t1.ibd | ||
# t2 yes on expecting NOT FOUND | ||
NOT FOUND /barfoo/ in t2.ibd | ||
# t3 yes on expecting NOT FOUND | ||
NOT FOUND /tmpres/ in t3.ibd | ||
# t4 yes on expecting NOT FOUND | ||
NOT FOUND /mysql/ in t4.ibd | ||
DROP PROCEDURE innodb_insert_proc; | ||
DROP TABLE t1,t2,t3,t4; |
167 changes: 167 additions & 0 deletions
167
mysql-test/suite/encryption/t/innodb-discard-import.test
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,167 @@ | ||
-- source include/have_innodb.inc | ||
-- source include/have_file_key_management_plugin.inc | ||
# embedded does not support restart | ||
-- source include/not_embedded.inc | ||
-- source include/not_valgrind.inc | ||
# Avoid CrashReporter popup on Mac | ||
-- source include/not_crashrep.inc | ||
|
||
# | ||
# MDEV-8770: Incorrect error message when importing page compressed tablespace | ||
# | ||
|
||
call mtr.add_suppression("InnoDB: Table .* tablespace is set as discarded"); | ||
|
||
--disable_query_log | ||
let $innodb_file_format_orig = `SELECT @@innodb_file_format`; | ||
let $innodb_file_per_table_orig = `SELECT @@innodb_file_per_table`; | ||
let $innodb_compression_algo = `SELECT @@innodb_compression_algorithm`; | ||
--enable_query_log | ||
|
||
SET GLOBAL innodb_file_format = `Barracuda`; | ||
SET GLOBAL innodb_file_per_table = ON; | ||
SET GLOBAL innodb_compression_algorithm = 1; | ||
|
||
--let $MYSQLD_TMPDIR = `SELECT @@tmpdir` | ||
--let $MYSQLD_DATADIR = `SELECT @@datadir` | ||
--let SEARCH_RANGE = 10000000 | ||
--let t1_IBD = $MYSQLD_DATADIR/test/t1.ibd | ||
--let t2_IBD = $MYSQLD_DATADIR/test/t2.ibd | ||
--let t3_IBD = $MYSQLD_DATADIR/test/t3.ibd | ||
--let t4_IBD = $MYSQLD_DATADIR/test/t4.ibd | ||
|
||
create table t1(c1 bigint not null, b char(200)) engine=innodb encrypted=yes encryption_key_id=4; | ||
show warnings; | ||
create table t2(c1 bigint not null, b char(200)) engine=innodb page_compressed=1 encrypted=yes encryption_key_id=4; | ||
show warnings; | ||
create table t3(c1 bigint not null, b char(200)) engine=innodb row_format=compressed encrypted=yes encryption_key_id=4; | ||
show warnings; | ||
create table t4(c1 bigint not null, b char(200)) engine=innodb page_compressed=1; | ||
show warnings; | ||
|
||
delimiter //; | ||
create procedure innodb_insert_proc (repeat_count int) | ||
begin | ||
declare current_num int; | ||
set current_num = 0; | ||
while current_num < repeat_count do | ||
insert into t1 values(current_num, repeat('foobar',30)); | ||
insert into t2 values(current_num, repeat('barfoo',30)); | ||
insert into t3 values(current_num, repeat('tmpres',30)); | ||
insert into t4 values(current_num, repeat('mysql',30)); | ||
set current_num = current_num + 1; | ||
end while; | ||
end// | ||
delimiter ;// | ||
commit; | ||
|
||
set autocommit=0; | ||
call innodb_insert_proc(2000); | ||
commit; | ||
set autocommit=1; | ||
|
||
select count(*) from t1; | ||
select count(*) from t2; | ||
select count(*) from t3; | ||
select count(*) from t4; | ||
|
||
FLUSH TABLE t1,t2,t3,t4 FOR EXPORT; | ||
--echo # List before copying files | ||
--list_files $MYSQLD_DATADIR/test | ||
--copy_file $MYSQLD_DATADIR/test/t1.cfg $MYSQLD_TMPDIR/t1.cfg | ||
--copy_file $MYSQLD_DATADIR/test/t1.ibd $MYSQLD_TMPDIR/t1.ibd | ||
--copy_file $MYSQLD_DATADIR/test/t2.cfg $MYSQLD_TMPDIR/t2.cfg | ||
--copy_file $MYSQLD_DATADIR/test/t2.ibd $MYSQLD_TMPDIR/t2.ibd | ||
--copy_file $MYSQLD_DATADIR/test/t3.cfg $MYSQLD_TMPDIR/t3.cfg | ||
--copy_file $MYSQLD_DATADIR/test/t3.ibd $MYSQLD_TMPDIR/t3.ibd | ||
--copy_file $MYSQLD_DATADIR/test/t4.cfg $MYSQLD_TMPDIR/t4.cfg | ||
--copy_file $MYSQLD_DATADIR/test/t4.ibd $MYSQLD_TMPDIR/t4.ibd | ||
UNLOCK TABLES; | ||
|
||
--echo # tables should be either encrypted and/or compressed | ||
--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=barfoo | ||
--echo # t2 yes on expecting NOT FOUND | ||
-- let SEARCH_FILE=$t2_IBD | ||
-- source include/search_pattern_in_file.inc | ||
--let SEARCH_PATTERN=tmpres | ||
--echo # t3 yes on expecting NOT FOUND | ||
-- let SEARCH_FILE=$t3_IBD | ||
-- source include/search_pattern_in_file.inc | ||
--let SEARCH_PATTERN=mysql | ||
--echo # t4 yes on expecting NOT FOUND | ||
-- let SEARCH_FILE=$t4_IBD | ||
-- source include/search_pattern_in_file.inc | ||
|
||
ALTER TABLE t1 DISCARD TABLESPACE; | ||
ALTER TABLE t2 DISCARD TABLESPACE; | ||
ALTER TABLE t3 DISCARD TABLESPACE; | ||
ALTER TABLE t4 DISCARD TABLESPACE; | ||
|
||
--source include/restart_mysqld.inc | ||
|
||
SET GLOBAL innodb_file_format = `Barracuda`; | ||
SET GLOBAL innodb_file_per_table = ON; | ||
SET GLOBAL innodb_compression_algorithm = 1; | ||
|
||
--echo # List after t1 DISCARD | ||
--list_files $MYSQLD_DATADIR/test | ||
--copy_file $MYSQLD_TMPDIR/t1.cfg $MYSQLD_DATADIR/test/t1.cfg | ||
--copy_file $MYSQLD_TMPDIR/t1.ibd $MYSQLD_DATADIR/test/t1.ibd | ||
--copy_file $MYSQLD_TMPDIR/t2.cfg $MYSQLD_DATADIR/test/t2.cfg | ||
--copy_file $MYSQLD_TMPDIR/t2.ibd $MYSQLD_DATADIR/test/t2.ibd | ||
--copy_file $MYSQLD_TMPDIR/t3.cfg $MYSQLD_DATADIR/test/t3.cfg | ||
--copy_file $MYSQLD_TMPDIR/t3.ibd $MYSQLD_DATADIR/test/t3.ibd | ||
--copy_file $MYSQLD_TMPDIR/t4.cfg $MYSQLD_DATADIR/test/t4.cfg | ||
--copy_file $MYSQLD_TMPDIR/t4.ibd $MYSQLD_DATADIR/test/t4.ibd | ||
|
||
ALTER TABLE t1 IMPORT TABLESPACE; | ||
SHOW CREATE TABLE t1; | ||
SELECT COUNT(*) FROM t1; | ||
ALTER TABLE t2 IMPORT TABLESPACE; | ||
SHOW CREATE TABLE t2; | ||
SELECT COUNT(*) FROM t2; | ||
ALTER TABLE t3 IMPORT TABLESPACE; | ||
SHOW CREATE TABLE t3; | ||
SELECT COUNT(*) FROM t3; | ||
ALTER TABLE t4 IMPORT TABLESPACE; | ||
SHOW CREATE TABLE t4; | ||
SELECT COUNT(*) FROM t4; | ||
|
||
--echo flush data to disk | ||
--source include/restart_mysqld.inc | ||
|
||
SET GLOBAL innodb_file_format = `Barracuda`; | ||
SET GLOBAL innodb_file_per_table = ON; | ||
SET GLOBAL innodb_compression_algorithm = 1; | ||
|
||
--echo # tables should be still either encrypted and/or compressed | ||
--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=barfoo | ||
--echo # t2 yes on expecting NOT FOUND | ||
-- let SEARCH_FILE=$t2_IBD | ||
-- source include/search_pattern_in_file.inc | ||
--let SEARCH_PATTERN=tmpres | ||
--echo # t3 yes on expecting NOT FOUND | ||
-- let SEARCH_FILE=$t3_IBD | ||
-- source include/search_pattern_in_file.inc | ||
--let SEARCH_PATTERN=mysql | ||
--echo # t4 yes on expecting NOT FOUND | ||
-- let SEARCH_FILE=$t4_IBD | ||
-- source include/search_pattern_in_file.inc | ||
|
||
DROP PROCEDURE innodb_insert_proc; | ||
DROP TABLE t1,t2,t3,t4; | ||
|
||
# reset system | ||
--disable_query_log | ||
EVAL SET GLOBAL innodb_file_per_table = $innodb_file_per_table_orig; | ||
EVAL SET GLOBAL innodb_file_format = $innodb_file_format_orig; | ||
EVAL SET GLOBAL innodb_compression_algorithm = $innodb_compression_algo; | ||
--enable_query_log |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.