MDEV-22653: Remove the useless parameter innodb_simulate_comp_failures

The debug parameter innodb_simulate_comp_failures injected compression
failures for ROW_FORMAT=COMPRESSED tables, breaking the pre-existing
logic that I had implemented in the InnoDB Plugin for MySQL 5.1 to prevent
compressed page overflows. A much better check is already achieved by
defining UNIV_ZIP_COPY at the compilation time.
(Only UNIV_ZIP_DEBUG is part of cmake -DWITH_INNODB_EXTRA_DEBUG=ON.)
This commit is contained in:
Marko Mäkelä 2021-03-22 17:46:49 +02:00
commit 0f8caadc96
14 changed files with 0 additions and 400 deletions

View file

@ -1,152 +0,0 @@
--echo #
--echo # Testing robustness against random compression failures
--echo #
--source include/not_embedded.inc
--source include/have_innodb.inc
--let $simulate_comp_failures_save = `SELECT @@innodb_simulate_comp_failures`
--disable_query_log
call mtr.add_suppression("InnoDB: Simulating a compression failure for table `test`\\.`t1`");
--enable_query_log
# create the table with compressed pages of size 8K.
CREATE TABLE t1(id INT AUTO_INCREMENT PRIMARY KEY, msg VARCHAR(255), KEY msg_i(msg)) ENGINE=INNODB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
SHOW CREATE TABLE t1;
# percentage of compressions that will be forced to fail
SET GLOBAL innodb_simulate_comp_failures = 25;
--disable_query_log
--disable_result_log
let $num_inserts_ind = $num_inserts;
let $commit_iterations=50;
while ($num_inserts_ind)
{
let $repeat = `select floor(rand() * 10)`;
eval INSERT INTO t1(id, msg)
VALUES ($num_inserts_ind, REPEAT('abcdefghijklmnopqrstuvwxyz', $repeat));
dec $num_inserts_ind;
}
--enable_query_log
--enable_result_log
COMMIT;
SELECT COUNT(id) FROM t1;
--disable_query_log
--disable_result_log
# do random ops, making sure that some pages will get fragmented and reorganized.
let $num_ops_ind = $num_ops;
let $commit_count= $commit_iterations;
BEGIN;
while($num_ops_ind)
{
let $idx = `select floor(rand()*$num_inserts)`;
let $insert_or_update = `select floor(rand()*3)`;
let $repeat = `select floor(rand() * 9) + 1`;
let $msg = query_get_value(`select repeat('abcdefghijklmnopqrstuvwxyz', $repeat) as x`, x, 1);
let $single_or_multi = `select floor(rand()*10)`;
if ($insert_or_update)
{
let $cnt = query_get_value(SELECT COUNT(*) cnt FROM t1 WHERE id=$idx, cnt, 1);
if ($cnt)
{
let $update = `select floor(rand()*2)`;
if ($update)
{
if ($single_or_multi)
{
eval UPDATE t1 SET msg=\"$msg\" WHERE id=$idx;
}
if (!$single_or_multi)
{
eval UPDATE t1 SET msg=\"$msg\" WHERE id >= $idx - 100 AND id <= $idx + 100;
}
}
if (!$update)
{
if ($single_or_multi)
{
eval INSERT INTO t1(msg, id) VALUES (\"$msg\", $idx) ON DUPLICATE KEY UPDATE msg=VALUES(msg), id = VALUES(id);
}
if (!$single_or_multi)
{
let $diff = 200;
while ($diff)
{
eval INSERT INTO t1(msg, id) VALUES (\"$msg\", $idx + 100 - $diff) ON DUPLICATE KEY UPDATE msg=VALUES(msg), id=VALUES(id);
dec $diff;
}
}
}
}
if (!$cnt)
{
let $null_msg = `select floor(rand()*2)`;
if ($null_msg)
{
eval INSERT INTO t1(id,msg) VALUES ($idx, NULL);
}
if (!$null_msg)
{
eval INSERT INTO t1(id, msg) VALUES ($idx, \"$msg\");
}
}
}
if (!$insert_or_update)
{
if ($single_or_multi)
{
eval DELETE from t1 WHERE id=$idx;
}
if (!$single_or_multi)
{
eval DELETE from t1 WHERE id >= $idx - 100 AND id <= $idx + 100;
}
}
dec $commit_count;
if (!$commit_count)
{
let $commit_count= $commit_iterations;
COMMIT;
BEGIN;
}
dec $num_ops_ind;
}
COMMIT;
# final cleanup
DROP TABLE t1;
eval SET GLOBAL innodb_simulate_comp_failures = $simulate_comp_failures_save;
--enable_query_log

View file

@ -1,17 +0,0 @@
#
# Testing robustness against random compression failures
#
CREATE TABLE t1(id INT AUTO_INCREMENT PRIMARY KEY, msg VARCHAR(255), KEY msg_i(msg)) ENGINE=INNODB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`msg` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `msg_i` (`msg`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8
SET GLOBAL innodb_simulate_comp_failures = 25;
COMMIT;
SELECT COUNT(id) FROM t1;
COUNT(id)
1500

View file

@ -1,17 +0,0 @@
#
# Testing robustness against random compression failures
#
CREATE TABLE t1(id INT AUTO_INCREMENT PRIMARY KEY, msg VARCHAR(255), KEY msg_i(msg)) ENGINE=INNODB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`msg` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `msg_i` (`msg`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8
SET GLOBAL innodb_simulate_comp_failures = 25;
COMMIT;
SELECT COUNT(id) FROM t1;
COUNT(id)
1000

View file

@ -1,2 +0,0 @@
--innodb-file-per-table
--skip-innodb-doublewrite

View file

@ -1,9 +0,0 @@
--source include/big_test.inc
# test takes too long with valgrind
--source include/not_valgrind.inc
--source include/have_debug.inc
--let $num_inserts = 1500
--let $num_ops = 3500
--source suite/innodb/include/innodb_simulate_comp_failures.inc
# clean exit
--exit

View file

@ -1,2 +0,0 @@
--innodb-file-per-table

View file

@ -1,8 +0,0 @@
--source include/have_debug.inc
--source include/not_valgrind.inc
--let $num_inserts = 1000
--let $num_ops = 30
--source suite/innodb/include/innodb_simulate_comp_failures.inc
# clean exit
--exit

View file

@ -1,77 +0,0 @@
SET @start_global_value = @@global.innodb_simulate_comp_failures;
SELECT @start_global_value;
@start_global_value
0
Valid values are between 0 and 99
select @@global.innodb_simulate_comp_failures between 0 and 99;
@@global.innodb_simulate_comp_failures between 0 and 99
1
select @@global.innodb_simulate_comp_failures;
@@global.innodb_simulate_comp_failures
0
select @@session.innodb_simulate_comp_failures;
ERROR HY000: Variable 'innodb_simulate_comp_failures' is a GLOBAL variable
show global variables like 'innodb_simulate_comp_failures';
Variable_name Value
innodb_simulate_comp_failures 0
show session variables like 'innodb_simulate_comp_failures';
Variable_name Value
innodb_simulate_comp_failures 0
select * from information_schema.global_variables where variable_name='innodb_simulate_comp_failures';
VARIABLE_NAME VARIABLE_VALUE
INNODB_SIMULATE_COMP_FAILURES 0
select * from information_schema.session_variables where variable_name='innodb_simulate_comp_failures';
VARIABLE_NAME VARIABLE_VALUE
INNODB_SIMULATE_COMP_FAILURES 0
set global innodb_simulate_comp_failures=10;
select @@global.innodb_simulate_comp_failures;
@@global.innodb_simulate_comp_failures
10
select * from information_schema.global_variables where variable_name='innodb_simulate_comp_failures';
VARIABLE_NAME VARIABLE_VALUE
INNODB_SIMULATE_COMP_FAILURES 10
select * from information_schema.session_variables where variable_name='innodb_simulate_comp_failures';
VARIABLE_NAME VARIABLE_VALUE
INNODB_SIMULATE_COMP_FAILURES 10
set session innodb_simulate_comp_failures=1;
ERROR HY000: Variable 'innodb_simulate_comp_failures' is a GLOBAL variable and should be set with SET GLOBAL
set global innodb_simulate_comp_failures=1.1;
ERROR 42000: Incorrect argument type to variable 'innodb_simulate_comp_failures'
set global innodb_simulate_comp_failures=1e1;
ERROR 42000: Incorrect argument type to variable 'innodb_simulate_comp_failures'
set global innodb_simulate_comp_failures="foo";
ERROR 42000: Incorrect argument type to variable 'innodb_simulate_comp_failures'
set global innodb_simulate_comp_failures=-7;
Warnings:
Warning 1292 Truncated incorrect innodb_simulate_comp_failures value: '-7'
select @@global.innodb_simulate_comp_failures;
@@global.innodb_simulate_comp_failures
0
select * from information_schema.global_variables where variable_name='innodb_simulate_comp_failures';
VARIABLE_NAME VARIABLE_VALUE
INNODB_SIMULATE_COMP_FAILURES 0
set global innodb_simulate_comp_failures=106;
Warnings:
Warning 1292 Truncated incorrect innodb_simulate_comp_failures value: '106'
select @@global.innodb_simulate_comp_failures;
@@global.innodb_simulate_comp_failures
99
select * from information_schema.global_variables where variable_name='innodb_simulate_comp_failures';
VARIABLE_NAME VARIABLE_VALUE
INNODB_SIMULATE_COMP_FAILURES 99
set global innodb_simulate_comp_failures=0;
select @@global.innodb_simulate_comp_failures;
@@global.innodb_simulate_comp_failures
0
set global innodb_simulate_comp_failures=99;
select @@global.innodb_simulate_comp_failures;
@@global.innodb_simulate_comp_failures
99
set global innodb_simulate_comp_failures=DEFAULT;
select @@global.innodb_simulate_comp_failures;
@@global.innodb_simulate_comp_failures
0
SET @@global.innodb_simulate_comp_failures = @start_global_value;
SELECT @@global.innodb_simulate_comp_failures;
@@global.innodb_simulate_comp_failures
0

View file

@ -2202,18 +2202,6 @@ NUMERIC_BLOCK_SIZE 0
ENUM_VALUE_LIST NULL
READ_ONLY NO
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME INNODB_SIMULATE_COMP_FAILURES
SESSION_VALUE NULL
DEFAULT_VALUE 0
VARIABLE_SCOPE GLOBAL
VARIABLE_TYPE INT UNSIGNED
VARIABLE_COMMENT Simulate compression failures.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 99
NUMERIC_BLOCK_SIZE 0
ENUM_VALUE_LIST NULL
READ_ONLY NO
COMMAND_LINE_ARGUMENT NONE
VARIABLE_NAME INNODB_SORT_BUFFER_SIZE
SESSION_VALUE NULL
DEFAULT_VALUE 1048576

View file

@ -1,65 +0,0 @@
--source include/have_innodb.inc
--source include/have_debug.inc
SET @start_global_value = @@global.innodb_simulate_comp_failures;
SELECT @start_global_value;
#
# exists as global only
#
--echo Valid values are between 0 and 99
select @@global.innodb_simulate_comp_failures between 0 and 99;
select @@global.innodb_simulate_comp_failures;
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
select @@session.innodb_simulate_comp_failures;
show global variables like 'innodb_simulate_comp_failures';
show session variables like 'innodb_simulate_comp_failures';
select * from information_schema.global_variables where variable_name='innodb_simulate_comp_failures';
select * from information_schema.session_variables where variable_name='innodb_simulate_comp_failures';
#
# show that it's writable
#
set global innodb_simulate_comp_failures=10;
select @@global.innodb_simulate_comp_failures;
select * from information_schema.global_variables where variable_name='innodb_simulate_comp_failures';
select * from information_schema.session_variables where variable_name='innodb_simulate_comp_failures';
--error ER_GLOBAL_VARIABLE
set session innodb_simulate_comp_failures=1;
#
# incorrect types
#
--error ER_WRONG_TYPE_FOR_VAR
set global innodb_simulate_comp_failures=1.1;
--error ER_WRONG_TYPE_FOR_VAR
set global innodb_simulate_comp_failures=1e1;
--error ER_WRONG_TYPE_FOR_VAR
set global innodb_simulate_comp_failures="foo";
set global innodb_simulate_comp_failures=-7;
select @@global.innodb_simulate_comp_failures;
select * from information_schema.global_variables where variable_name='innodb_simulate_comp_failures';
set global innodb_simulate_comp_failures=106;
select @@global.innodb_simulate_comp_failures;
select * from information_schema.global_variables where variable_name='innodb_simulate_comp_failures';
#
# min/max/DEFAULT values
#
set global innodb_simulate_comp_failures=0;
select @@global.innodb_simulate_comp_failures;
set global innodb_simulate_comp_failures=99;
select @@global.innodb_simulate_comp_failures;
set global innodb_simulate_comp_failures=DEFAULT;
select @@global.innodb_simulate_comp_failures;
SET @@global.innodb_simulate_comp_failures = @start_global_value;
SELECT @@global.innodb_simulate_comp_failures;