summaryrefslogtreecommitdiff
path: root/mysql-test/suite/sys_vars/t/innodb_log_optimize_ddl_basic.test
blob: b89830934142658973f04c7671d7624c64e5999f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
############# suite/sys_vars/t/innodb_log_optimize_ddl_basic.test #############
#                                                                             #
# Variable Name: innodb_log_optimize_ddl                                      #
# Scope: Global                                                               #
# Access Type: Dynamic                                                        #
# Data Type: boolean                                                          #
#                                                                             #
# The variable was introduced by                                              #
# MDEV-16809 Allow full redo logging for ALTER TABLE                          #
#                                                                             #
###############################################################################

--source include/have_innodb.inc

#### Reveal that the global innodb system variable exists
SELECT COUNT(@@GLOBAL.innodb_log_optimize_ddl);
--echo 1 Expected

#### Reveal that no session innodb system variable exists
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
SELECT COUNT(@@SESSION.innodb_log_optimize_ddl);
--echo Expected error 'Variable is a GLOBAL variable'

SELECT @@GLOBAL.innodb_log_optimize_ddl INTO @innodb_log_optimize_ddl_save;
#### Check if the value can be set
SET @@GLOBAL.innodb_log_optimize_ddl = ON;
SET @@GLOBAL.innodb_log_optimize_ddl = OFF;

#### Check if disallowed values are refused
--error ER_WRONG_VALUE_FOR_VAR
SET @@GLOBAL.innodb_log_optimize_ddl = 13;
--error ER_WRONG_VALUE_FOR_VAR
SET @@GLOBAL.innodb_log_optimize_ddl = 'ABC';

#### Check if the initial value was in the range of supported values
# We use 0 and 1 in order to avoid a warning.
SELECT @@GLOBAL.innodb_log_optimize_ddl = 0
    OR @@GLOBAL.innodb_log_optimize_ddl = 1 AS col;
--echo 1 Expected

#### Check if the value presented without GLOBAL point is the same
SELECT @@innodb_log_optimize_ddl = @@GLOBAL.innodb_log_optimize_ddl AS col;
--echo 1 Expected

#### Show the value presented in information_schema and SHOW VARIABLES
# We do not want to get and than maybe suppress the print of
#     Warning 1292 Truncated incorrect DOUBLE value: 'OFF'
# and so we simply print the value and do not compare.
SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='innodb_log_optimize_ddl';
SHOW VARIABLES WHERE VARIABLE_NAME='innodb_log_optimize_ddl';

#### Show that variants with @@local. and without @@ do not exist.
--Error ER_INCORRECT_GLOBAL_LOCAL_VAR
SELECT @@local.innodb_log_optimize_ddl;
--echo Expected error 'Variable is a GLOBAL variable'
--Error ER_BAD_FIELD_ERROR
SELECT innodb_log_optimize_ddl;

#### Restore the initial value
SET GLOBAL innodb_log_optimize_ddl = @innodb_log_optimize_ddl_save;