Skip to content

Commit fd378fc

Browse files
committed
MDEV-16809 Allow full redo logging for ALTER TABLE
Add the usual basic test for the variable innodb_log_optimize_ddl. Signed-off-by: mleich1 <Matthias.Leich@mariadb.com>
1 parent 5c5a116 commit fd378fc

File tree

2 files changed

+104
-0
lines changed

2 files changed

+104
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
SELECT COUNT(@@GLOBAL.innodb_log_optimize_ddl);
2+
COUNT(@@GLOBAL.innodb_log_optimize_ddl)
3+
1
4+
1 Expected
5+
SELECT COUNT(@@SESSION.innodb_log_optimize_ddl);
6+
ERROR HY000: Variable 'innodb_log_optimize_ddl' is a GLOBAL variable
7+
Expected error 'Variable is a GLOBAL variable'
8+
SELECT @@GLOBAL.innodb_log_optimize_ddl;
9+
@@GLOBAL.innodb_log_optimize_ddl
10+
1
11+
SELECT @@GLOBAL.innodb_log_optimize_ddl INTO @innodb_log_optimize_ddl_save;
12+
SET @@GLOBAL.innodb_log_optimize_ddl = ON;
13+
SET @@GLOBAL.innodb_log_optimize_ddl = OFF;
14+
SET @@GLOBAL.innodb_log_optimize_ddl = 13;
15+
ERROR 42000: Variable 'innodb_log_optimize_ddl' can't be set to the value of '13'
16+
SET @@GLOBAL.innodb_log_optimize_ddl = 'ABC';
17+
ERROR 42000: Variable 'innodb_log_optimize_ddl' can't be set to the value of 'ABC'
18+
SELECT @@GLOBAL.innodb_log_optimize_ddl = 0
19+
OR @@GLOBAL.innodb_log_optimize_ddl = 1 AS col;
20+
col
21+
1
22+
1 Expected
23+
SELECT @@innodb_log_optimize_ddl = @@GLOBAL.innodb_log_optimize_ddl AS col;
24+
col
25+
1
26+
1 Expected
27+
SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
28+
WHERE VARIABLE_NAME='innodb_log_optimize_ddl';
29+
VARIABLE_VALUE
30+
OFF
31+
SHOW VARIABLES WHERE VARIABLE_NAME='innodb_log_optimize_ddl';
32+
Variable_name Value
33+
innodb_log_optimize_ddl OFF
34+
SELECT @@local.innodb_log_optimize_ddl;
35+
ERROR HY000: Variable 'innodb_log_optimize_ddl' is a GLOBAL variable
36+
Expected error 'Variable is a GLOBAL variable'
37+
SELECT innodb_log_optimize_ddl;
38+
ERROR 42S22: Unknown column 'innodb_log_optimize_ddl' in 'field list'
39+
SET GLOBAL innodb_log_optimize_ddl = @innodb_log_optimize_ddl_save;
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
############# suite/sys_vars/t/innodb_log_optimize_ddl_basic.test #############
2+
# #
3+
# Variable Name: innodb_log_optimize_ddl #
4+
# Scope: Global #
5+
# Access Type: Dynamic #
6+
# Data Type: boolean #
7+
# #
8+
# The variable was introduced by #
9+
# MDEV-16809 Allow full redo logging for ALTER TABLE #
10+
# #
11+
###############################################################################
12+
13+
--source include/have_innodb.inc
14+
15+
#### Reveal that the global innodb system variable exists
16+
SELECT COUNT(@@GLOBAL.innodb_log_optimize_ddl);
17+
--echo 1 Expected
18+
19+
#### Reveal that no session innodb system variable exists
20+
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
21+
SELECT COUNT(@@SESSION.innodb_log_optimize_ddl);
22+
--echo Expected error 'Variable is a GLOBAL variable'
23+
24+
#### Display the default value
25+
SELECT @@GLOBAL.innodb_log_optimize_ddl;
26+
27+
SELECT @@GLOBAL.innodb_log_optimize_ddl INTO @innodb_log_optimize_ddl_save;
28+
#### Check if the value can be set
29+
SET @@GLOBAL.innodb_log_optimize_ddl = ON;
30+
SET @@GLOBAL.innodb_log_optimize_ddl = OFF;
31+
32+
#### Check if disallowed values are refused
33+
--error ER_WRONG_VALUE_FOR_VAR
34+
SET @@GLOBAL.innodb_log_optimize_ddl = 13;
35+
--error ER_WRONG_VALUE_FOR_VAR
36+
SET @@GLOBAL.innodb_log_optimize_ddl = 'ABC';
37+
38+
#### Check if the initial value was in the range of supported values
39+
# We use 0 and 1 in order to avoid a warning.
40+
SELECT @@GLOBAL.innodb_log_optimize_ddl = 0
41+
OR @@GLOBAL.innodb_log_optimize_ddl = 1 AS col;
42+
--echo 1 Expected
43+
44+
#### Check if the value presented without GLOBAL point is the same
45+
SELECT @@innodb_log_optimize_ddl = @@GLOBAL.innodb_log_optimize_ddl AS col;
46+
--echo 1 Expected
47+
48+
#### Show the value presented in information_schema and SHOW VARIABLES
49+
# We do not want to get and than maybe suppress the print of
50+
# Warning 1292 Truncated incorrect DOUBLE value: 'OFF'
51+
# and so we simply print the value and do not compare.
52+
SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
53+
WHERE VARIABLE_NAME='innodb_log_optimize_ddl';
54+
SHOW VARIABLES WHERE VARIABLE_NAME='innodb_log_optimize_ddl';
55+
56+
#### Show that variants with @@local. and without @@ do not exist.
57+
--Error ER_INCORRECT_GLOBAL_LOCAL_VAR
58+
SELECT @@local.innodb_log_optimize_ddl;
59+
--echo Expected error 'Variable is a GLOBAL variable'
60+
--Error ER_BAD_FIELD_ERROR
61+
SELECT innodb_log_optimize_ddl;
62+
63+
#### Restore the initial value
64+
SET GLOBAL innodb_log_optimize_ddl = @innodb_log_optimize_ddl_save;
65+

0 commit comments

Comments
 (0)