polardbxengine/mysql-test/suite/innodb/t/missing_redologs.test

84 lines
2.3 KiB
Plaintext

--source include/have_innodb_max_16k.inc
--source include/not_asan.inc
--source include/not_valgrind.inc
--echo #
--echo # Bug #29820184 REDO LOGS MAY SILENTLY BE IGNORED WHEN ENCRYPTED TABLE
--echo # CANNOT BE DECRYPTED.
--echo #
CREATE TABLE t1(
a INT NOT NULL PRIMARY KEY,
c CHAR(200),
b BLOB,
INDEX(b(10))) ENGINE=innodb ROW_FORMAT=compressed ENCRYPTION='Y';
CREATE TABLE t2(
a INT NOT NULL PRIMARY KEY,
c CHAR(200),
b BLOB,
INDEX(b(10))) ENGINE=innodb ROW_FORMAT=compressed ENCRYPTION='Y';
CREATE TABLE t3(
a INT NOT NULL PRIMARY KEY,
c CHAR(200),
b BLOB,
INDEX(b(10))) ENGINE=innodb ENCRYPTION='Y';
CREATE TABLE t4(
a INT NOT NULL PRIMARY KEY,
c CHAR(200),
b BLOB,
INDEX(b(10))) ENGINE=innodb ENCRYPTION='Y';
--source include/restart_mysqld.inc
--source include/no_checkpoint_start.inc
--disable_query_log
--let $i = 20
BEGIN;
WHILE ($i)
{
eval INSERT INTO t1(a,c,b) VALUES ($i, REPEAT('secret1',20), REPEAT('secret2',6000));
dec $i;
}
--enable_query_log
INSERT INTO t2 SELECT * FROM t1;
INSERT INTO t3 SELECT * FROM t1;
INSERT INTO t4 SELECT * FROM t1;
COMMIT;
# If checkpoint happens we will skip this test.
# If no checkpoint happens, InnoDB refuses to
# start as used encryption key is not found.
SET GLOBAL innodb_flush_log_at_trx_commit=1;
BEGIN;
UPDATE t1 SET c = REPEAT('secret3', 20);
UPDATE t2 SET c = REPEAT('secret4', 20);
UPDATE t3 set c = REPEAT('secret4', 20);
UPDATE t4 set c = REPEAT('secret4', 20);
INSERT INTO t1 (a,c,b) VALUES (21, REPEAT('secret5',20), REPEAT('secret6',6000));
INSERT INTO t2 (a,c,b) VALUES (21, REPEAT('secret7',20), REPEAT('secret8',6000));
INSERT into t3 (a,c,b) VALUES (21, REPEAT('secret9',20), REPEAT('secre10',6000));
INSERT into t4 (a,c,b) VALUES (21, REPEAT('secre11',20), REPEAT('secre12',6000));
COMMIT;
let $cleanup= drop TABLE t1,t2,t3,t4;
--let CLEANUP_IF_CHECKPOINT= $cleanup; --skip "Unexpected checkpoint happened";
--source include/no_checkpoint_end.inc
--echo # Restart mysqld without keyring plugin
--error 1
--exec $MYSQLD_CMD
--echo # Restart mysqld with keyring plugin
--let $restart_parameters=restart:--early-plugin-load="keyring_file=$KEYRING_PLUGIN" --keyring-file-data=$MYSQLTEST_VARDIR/std_data/keys2.txt
--source include/start_mysqld_no_echo.inc
drop TABLE t1,t2,t3,t4;
--remove_file $MYSQLTEST_VARDIR/std_data/keys2.txt