mirror of
https://github.com/MariaDB/server.git
synced 2025-07-27 18:02:13 +03:00
Write proper tests for MDEV-12634: Uninitialised ROW_MERGE_RESERVE_SIZE bytes
Introduce innodb_encrypt_log.combinations and prove that the encryption and decryption take place during both online ADD INDEX (WL#5266) and online table-rebuilding ALTER (WL#6625).
This commit is contained in:
@ -180,6 +180,15 @@ t1 CREATE TABLE `t1` (
|
||||
PRIMARY KEY (`c1`),
|
||||
KEY `c2d` (`c2`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 STATS_PERSISTENT=1
|
||||
SET @merge_encrypt_0=
|
||||
(SELECT variable_value FROM information_schema.global_status
|
||||
WHERE variable_name = 'innodb_encryption_n_merge_blocks_encrypted');
|
||||
SET @merge_decrypt_0=
|
||||
(SELECT variable_value FROM information_schema.global_status
|
||||
WHERE variable_name = 'innodb_encryption_n_merge_blocks_decrypted');
|
||||
SET @rowlog_encrypt_0=
|
||||
(SELECT variable_value FROM information_schema.global_status
|
||||
WHERE variable_name = 'innodb_encryption_n_rowlog_blocks_encrypted');
|
||||
SET DEBUG_SYNC = 'row_log_apply_before SIGNAL c2e_created WAIT_FOR dml2_done';
|
||||
SET lock_wait_timeout = 10;
|
||||
ALTER TABLE t1 DROP INDEX c2d, ADD INDEX c2e(c2),
|
||||
@ -209,6 +218,22 @@ BEGIN;
|
||||
UPDATE t1 SET c2 = c2 + 1;
|
||||
DELETE FROM t1;
|
||||
ROLLBACK;
|
||||
BEGIN;
|
||||
DELETE FROM t1;
|
||||
ROLLBACK;
|
||||
UPDATE t1 SET c2 = c2 + 1;
|
||||
BEGIN;
|
||||
UPDATE t1 SET c2 = c2 + 1;
|
||||
DELETE FROM t1;
|
||||
ROLLBACK;
|
||||
BEGIN;
|
||||
DELETE FROM t1;
|
||||
ROLLBACK;
|
||||
UPDATE t1 SET c2 = c2 + 1;
|
||||
BEGIN;
|
||||
UPDATE t1 SET c2 = c2 + 1;
|
||||
DELETE FROM t1;
|
||||
ROLLBACK;
|
||||
SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl';
|
||||
name count
|
||||
ddl_background_drop_indexes 0
|
||||
@ -220,6 +245,22 @@ INNER JOIN INFORMATION_SCHEMA.INNODB_SYS_FIELDS sf
|
||||
ON si.index_id = sf.index_id WHERE si.name = '?c2e';
|
||||
name pos
|
||||
c2 0
|
||||
SET @merge_encrypt_1=
|
||||
(SELECT variable_value FROM information_schema.global_status
|
||||
WHERE variable_name = 'innodb_encryption_n_merge_blocks_encrypted');
|
||||
SET @merge_decrypt_1=
|
||||
(SELECT variable_value FROM information_schema.global_status
|
||||
WHERE variable_name = 'innodb_encryption_n_merge_blocks_decrypted');
|
||||
SET @rowlog_encrypt_1=
|
||||
(SELECT variable_value FROM information_schema.global_status
|
||||
WHERE variable_name = 'innodb_encryption_n_rowlog_blocks_encrypted');
|
||||
SELECT
|
||||
(@merge_encrypt_1-@merge_encrypt_0)-
|
||||
(@merge_decrypt_1-@merge_decrypt_0) as sort_balance,
|
||||
@merge_encrypt_1>@merge_encrypt_0, @merge_decrypt_1>@merge_decrypt_0,
|
||||
@rowlog_encrypt_1>@rowlog_encrypt_0;
|
||||
sort_balance @merge_encrypt_1>@merge_encrypt_0 @merge_decrypt_1>@merge_decrypt_0 @rowlog_encrypt_1>@rowlog_encrypt_0
|
||||
0 0 0 0
|
||||
SET DEBUG_SYNC = 'now SIGNAL dml2_done';
|
||||
ERROR HY000: Creating index 'c2e' required more than 'innodb_online_alter_log_max_size' bytes of modification log. Please try again.
|
||||
SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl';
|
||||
@ -245,6 +286,18 @@ ddl_background_drop_indexes 0
|
||||
ddl_background_drop_tables 0
|
||||
ddl_online_create_index 0
|
||||
ddl_pending_alter_table 0
|
||||
SET @merge_encrypt_1=
|
||||
(SELECT variable_value FROM information_schema.global_status
|
||||
WHERE variable_name = 'innodb_encryption_n_merge_blocks_encrypted');
|
||||
SET @merge_decrypt_1=
|
||||
(SELECT variable_value FROM information_schema.global_status
|
||||
WHERE variable_name = 'innodb_encryption_n_merge_blocks_decrypted');
|
||||
SET @rowlog_encrypt_1=
|
||||
(SELECT variable_value FROM information_schema.global_status
|
||||
WHERE variable_name = 'innodb_encryption_n_rowlog_blocks_encrypted');
|
||||
SET @rowlog_decrypt_1=
|
||||
(SELECT variable_value FROM information_schema.global_status
|
||||
WHERE variable_name = 'innodb_encryption_n_rowlog_blocks_decrypted');
|
||||
SET DEBUG_SYNC = 'row_log_apply_before SIGNAL c2f_created WAIT_FOR dml3_done';
|
||||
ALTER TABLE t1 ADD INDEX c2f(c2);
|
||||
SET DEBUG_SYNC = 'now WAIT_FOR c2f_created';
|
||||
@ -262,6 +315,14 @@ BEGIN;
|
||||
UPDATE t1 SET c2 = c2 + 1;
|
||||
DELETE FROM t1;
|
||||
ROLLBACK;
|
||||
BEGIN;
|
||||
INSERT INTO t1 SELECT 320 + c1, c2, c3 FROM t1 WHERE c1 > 160;
|
||||
DELETE FROM t1 WHERE c1 > 320;
|
||||
ROLLBACK;
|
||||
BEGIN;
|
||||
UPDATE t1 SET c2 = c2 + 1;
|
||||
DELETE FROM t1;
|
||||
ROLLBACK;
|
||||
SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl';
|
||||
name count
|
||||
ddl_background_drop_indexes 0
|
||||
@ -278,6 +339,32 @@ ddl_background_drop_indexes 0
|
||||
ddl_background_drop_tables 0
|
||||
ddl_online_create_index 0
|
||||
ddl_pending_alter_table 0
|
||||
SET @merge_encrypt_2=
|
||||
(SELECT variable_value FROM information_schema.global_status
|
||||
WHERE variable_name = 'innodb_encryption_n_merge_blocks_encrypted');
|
||||
SET @merge_decrypt_2=
|
||||
(SELECT variable_value FROM information_schema.global_status
|
||||
WHERE variable_name = 'innodb_encryption_n_merge_blocks_decrypted');
|
||||
SET @rowlog_encrypt_2=
|
||||
(SELECT variable_value FROM information_schema.global_status
|
||||
WHERE variable_name = 'innodb_encryption_n_rowlog_blocks_encrypted');
|
||||
SET @rowlog_decrypt_2=
|
||||
(SELECT variable_value FROM information_schema.global_status
|
||||
WHERE variable_name = 'innodb_encryption_n_rowlog_blocks_decrypted');
|
||||
SELECT
|
||||
(@merge_encrypt_2-@merge_encrypt_1)-
|
||||
(@merge_decrypt_2-@merge_decrypt_1) as sort_balance,
|
||||
(@rowlog_encrypt_2-@rowlog_encrypt_1)-
|
||||
(@rowlog_decrypt_2-@rowlog_decrypt_1) as log_balance;
|
||||
sort_balance log_balance
|
||||
0 0
|
||||
SELECT
|
||||
@merge_encrypt_2-@merge_encrypt_1>0 as sort_encrypted,
|
||||
@merge_decrypt_2-@merge_decrypt_1>0 as sort_decrypted,
|
||||
@rowlog_encrypt_2-@rowlog_encrypt_1>0 as log_encrypted,
|
||||
@rowlog_decrypt_2-@rowlog_decrypt_1>0 as log_decrypted;
|
||||
sort_encrypted sort_decrypted log_encrypted log_decrypted
|
||||
0 0 0 0
|
||||
SELECT COUNT(c22f) FROM t1;
|
||||
COUNT(c22f)
|
||||
320
|
||||
|
Reference in New Issue
Block a user