mirror of
https://github.com/MariaDB/server.git
synced 2025-07-23 08:45:18 +03:00
This allows one to run the test suite even if any of the following options are changed: - character-set-server - collation-server - join-cache-level - log-basename - max-allowed-packet - optimizer-switch - query-cache-size and query-cache-type - skip-name-resolve - table-definition-cache - table-open-cache - Some innodb options etc Changes: - Don't print out the value of system variables as one can't depend on them to being constants. - Don't set global variables to 'default' as the default may not be the same as the test was started with if there was an additional option file. Instead save original value and reset it at end of test. - Test that depends on the latin1 character set should include default_charset.inc or set the character set to latin1 - Test that depends on the original optimizer switch, should include default_optimizer_switch.inc - Test that depends on the value of a specific system variable should set it in the test (like optimizer_use_condition_selectivity) - Split subselect3.test into subselect3.test and subselect3.inc to make it easier to set and reset system variables. - Added .opt files for test that required specfic options that could be changed by external configuration files. - Fixed result files in rockdsb & tokudb that had not been updated for a while.
125 lines
3.2 KiB
Plaintext
125 lines
3.2 KiB
Plaintext
CREATE TABLE t1 (id INT NOT NULL PRIMARY KEY, a VARCHAR(255)) ENGINE=InnoDB encrypted=yes;
|
|
CREATE TABLE t2 (id INT NOT NULL PRIMARY KEY, a VARCHAR(255)) ENGINE=InnoDB;
|
|
CREATE TABLE t3 (id INT NOT NULL PRIMARY KEY, a VARCHAR(255)) ENGINE=InnoDB row_format=compressed encrypted=yes;
|
|
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',42));
|
|
insert into t2 values (current_num,repeat('temp', 42));
|
|
insert into t3 values (current_num,repeat('barfoo',42));
|
|
set current_num = current_num + 1;
|
|
end while;
|
|
end//
|
|
commit;
|
|
set autocommit=0;
|
|
call innodb_insert_proc(10000);
|
|
commit;
|
|
set autocommit=1;
|
|
# Wait max 10 min for key encryption threads to encrypt all spaces
|
|
# tablespaces should be now 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
|
|
db.opt
|
|
t1.frm
|
|
t1.ibd
|
|
t2.frm
|
|
t2.ibd
|
|
t3.frm
|
|
t3.ibd
|
|
FLUSH TABLES t1, t2, t3 FOR EXPORT;
|
|
backup: t1
|
|
backup: t2
|
|
backup: t3
|
|
db.opt
|
|
t1.cfg
|
|
t1.frm
|
|
t1.ibd
|
|
t2.cfg
|
|
t2.frm
|
|
t2.ibd
|
|
t3.cfg
|
|
t3.frm
|
|
t3.ibd
|
|
UNLOCK TABLES;
|
|
ALTER TABLE t1 DISCARD TABLESPACE;
|
|
ALTER TABLE t2 DISCARD TABLESPACE;
|
|
ALTER TABLE t3 DISCARD TABLESPACE;
|
|
restore: t1 .ibd and .cfg files
|
|
restore: t2 .ibd and .cfg files
|
|
restore: t3 .ibd and .cfg files
|
|
ALTER TABLE t1 IMPORT TABLESPACE;
|
|
SELECT COUNT(1) FROM t1;
|
|
COUNT(1)
|
|
10000
|
|
ALTER TABLE t2 IMPORT TABLESPACE;
|
|
SELECT COUNT(1) FROM t2;
|
|
COUNT(1)
|
|
10000
|
|
ALTER TABLE t3 IMPORT TABLESPACE;
|
|
SELECT COUNT(1) FROM t3;
|
|
COUNT(1)
|
|
10000
|
|
# tablespaces should remain encrypted after import
|
|
# 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
|
|
SET GLOBAL innodb_file_format = `Barracuda`;
|
|
SET GLOBAL innodb_file_per_table = ON;
|
|
ALTER TABLE t1 ENGINE InnoDB;
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`id` int(11) NOT NULL,
|
|
`a` varchar(255) DEFAULT NULL,
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `encrypted`=yes
|
|
ALTER TABLE t2 ENGINE InnoDB;
|
|
SHOW CREATE TABLE t2;
|
|
Table Create Table
|
|
t2 CREATE TABLE `t2` (
|
|
`id` int(11) NOT NULL,
|
|
`a` varchar(255) DEFAULT NULL,
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
|
ALTER TABLE t3 ENGINE InnoDB;
|
|
SHOW CREATE TABLE t3;
|
|
Table Create Table
|
|
t3 CREATE TABLE `t3` (
|
|
`id` int(11) NOT NULL,
|
|
`a` varchar(255) DEFAULT NULL,
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED `encrypted`=yes
|
|
# Restarting server
|
|
# Done restarting server
|
|
# Verify that tables are still usable
|
|
SELECT COUNT(1) FROM t1;
|
|
COUNT(1)
|
|
10000
|
|
SELECT COUNT(1) FROM t2;
|
|
COUNT(1)
|
|
10000
|
|
SELECT COUNT(1) FROM t3;
|
|
COUNT(1)
|
|
10000
|
|
# Tablespaces should be encrypted after restart
|
|
# 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
|
|
# Wait max 10 min for key encryption threads to encrypt all spaces
|
|
# Success!
|
|
# Restart mysqld --innodb_encrypt_tables=0 --innodb_encryption_threads=0
|
|
DROP PROCEDURE innodb_insert_proc;
|
|
DROP TABLE t1, t2, t3;
|