Skip to content

Commit cf1a09e

Browse files
committed
MDEV-6107 merge default_tmp_storage_engine
Adapt default_tmp_storage_engine implementation from mysql-5.6 New feature (as compared to 5.6), default_tmp_storage_engine=NULL means that temporary tables will use default_storage_engine value. This makes the behavior backward compatible.
1 parent 2edcf8f commit cf1a09e

17 files changed

+516
-68
lines changed

mysql-test/lib/mtr_cases.pm

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ our $do_test;
3636
our $skip_test;
3737
our $binlog_format;
3838
our $enable_disabled;
39-
our $default_storage_engine;
4039
our $opt_with_ndbcluster_only;
4140

4241
sub collect_option {

mysql-test/r/mysqld--help.result

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,9 @@ The following options may be given as the first argument:
144144
The default storage engine for new tables
145145
--default-time-zone=name
146146
Set the default time zone.
147+
--default-tmp-storage-engine=name
148+
The default storage engine for user-created temporary
149+
tables
147150
--default-week-format=#
148151
The default week format used by WEEK() functions
149152
--delay-key-write[=name]
@@ -1085,6 +1088,7 @@ deadlock-timeout-short 10000
10851088
default-regex-flags
10861089
default-storage-engine myisam
10871090
default-time-zone (No default value)
1091+
default-tmp-storage-engine (No default value)
10881092
default-week-format 0
10891093
delay-key-write ON
10901094
delayed-insert-limit 100
Lines changed: 181 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,181 @@
1+
SET @start_global_value = @@global.default_tmp_storage_engine;
2+
SELECT @start_global_value;
3+
@start_global_value
4+
NULL
5+
SET @start_session_value = @@session.default_tmp_storage_engine;
6+
SELECT @start_session_value;
7+
@start_session_value
8+
NULL
9+
'#--------------------FN_DYNVARS_005_01-------------------------#'
10+
SET @@global.default_tmp_storage_engine = MEMORY;
11+
SET @@global.default_tmp_storage_engine = DEFAULT;
12+
SELECT @@global.default_tmp_storage_engine;
13+
@@global.default_tmp_storage_engine
14+
NULL
15+
SET @@session.default_tmp_storage_engine = MEMORY;
16+
SET @@session.default_tmp_storage_engine = DEFAULT;
17+
SELECT @@session.default_tmp_storage_engine;
18+
@@session.default_tmp_storage_engine
19+
NULL
20+
'#--------------------FN_DYNVARS_005_02-------------------------#'
21+
SET @@global.default_tmp_storage_engine = MYISAM;
22+
SELECT @@global.default_tmp_storage_engine;
23+
@@global.default_tmp_storage_engine
24+
MyISAM
25+
SET @@global.default_tmp_storage_engine = MERGE;
26+
SELECT @@global.default_tmp_storage_engine;
27+
@@global.default_tmp_storage_engine
28+
MRG_MyISAM
29+
SET @@global.default_tmp_storage_engine = MEMORY;
30+
SELECT @@global.default_tmp_storage_engine;
31+
@@global.default_tmp_storage_engine
32+
MEMORY
33+
'#--------------------FN_DYNVARS_005_03-------------------------#'
34+
SET @@session.default_tmp_storage_engine = MYISAM;
35+
SELECT @@session.default_tmp_storage_engine;
36+
@@session.default_tmp_storage_engine
37+
MyISAM
38+
SET @@session.default_tmp_storage_engine = MERGE;
39+
SELECT @@session.default_tmp_storage_engine;
40+
@@session.default_tmp_storage_engine
41+
MRG_MyISAM
42+
SET @@session.default_tmp_storage_engine = MEMORY;
43+
SELECT @@session.default_tmp_storage_engine;
44+
@@session.default_tmp_storage_engine
45+
MEMORY
46+
'#------------------FN_DYNVARS_005_04-----------------------#'
47+
SET @@global.default_tmp_storage_engine = 8199;
48+
ERROR 42000: Incorrect argument type to variable 'default_tmp_storage_engine'
49+
SET @@global.default_tmp_storage_engine = -1024;
50+
ERROR 42000: Incorrect argument type to variable 'default_tmp_storage_engine'
51+
SET @@global.default_tmp_storage_engine = 65530.34;
52+
ERROR 42000: Incorrect argument type to variable 'default_tmp_storage_engine'
53+
SET @@global.default_tmp_storage_engine = FILE;
54+
ERROR 42000: Unknown storage engine 'FILE'
55+
SET @@session.default_tmp_storage_engine = 8199;
56+
ERROR 42000: Incorrect argument type to variable 'default_tmp_storage_engine'
57+
SET @@session.default_tmp_storage_engine = 65530.34;
58+
ERROR 42000: Incorrect argument type to variable 'default_tmp_storage_engine'
59+
SET @@session.default_tmp_storage_engine = RECORD;
60+
ERROR 42000: Unknown storage engine 'RECORD'
61+
'#------------------FN_DYNVARS_005_05-----------------------#'
62+
SELECT @@global.default_tmp_storage_engine =
63+
VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
64+
WHERE VARIABLE_NAME='default_tmp_storage_engine';
65+
@@global.default_tmp_storage_engine =
66+
VARIABLE_VALUE
67+
1
68+
'#------------------FN_DYNVARS_005_06-----------------------#'
69+
SELECT @@session.default_tmp_storage_engine =
70+
VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES
71+
WHERE VARIABLE_NAME='default_tmp_storage_engine';
72+
@@session.default_tmp_storage_engine =
73+
VARIABLE_VALUE
74+
1
75+
'#------------------FN_DYNVARS_005_07-----------------------#'
76+
SET @@global.default_tmp_storage_engine = TRUE;
77+
ERROR 42000: Incorrect argument type to variable 'default_tmp_storage_engine'
78+
SET @@global.default_tmp_storage_engine = FALSE;
79+
ERROR 42000: Incorrect argument type to variable 'default_tmp_storage_engine'
80+
'#---------------------FN_DYNVARS_001_8----------------------#'
81+
SET @@default_tmp_storage_engine = MYISAM;
82+
SELECT @@default_tmp_storage_engine = @@local.default_tmp_storage_engine;
83+
@@default_tmp_storage_engine = @@local.default_tmp_storage_engine
84+
1
85+
SELECT @@local.default_tmp_storage_engine = @@session.default_tmp_storage_engine;
86+
@@local.default_tmp_storage_engine = @@session.default_tmp_storage_engine
87+
1
88+
'#---------------------FN_DYNVARS_001_9----------------------#'
89+
SET default_tmp_storage_engine = MEMORY;
90+
SELECT @@default_tmp_storage_engine;
91+
@@default_tmp_storage_engine
92+
MEMORY
93+
SELECT local.default_tmp_storage_engine;
94+
ERROR 42S02: Unknown table 'local' in field list
95+
SELECT session.default_tmp_storage_engine;
96+
ERROR 42S02: Unknown table 'session' in field list
97+
SELECT default_tmp_storage_engine = @@session.default_tmp_storage_engine;
98+
ERROR 42S22: Unknown column 'default_tmp_storage_engine' in 'field list'
99+
SET @@default_tmp_storage_engine = @start_global_value;
100+
SET default_tmp_storage_engine = MyISAM;
101+
SET default_storage_engine = MyISAM;
102+
CREATE TABLE t1 (a INT);
103+
CREATE TEMPORARY TABLE t2 (b INT);
104+
SHOW CREATE TABLE t1;
105+
Table Create Table
106+
t1 CREATE TABLE `t1` (
107+
`a` int(11) DEFAULT NULL
108+
) ENGINE=MyISAM DEFAULT CHARSET=latin1
109+
SHOW CREATE TABLE t2;
110+
Table Create Table
111+
t2 CREATE TEMPORARY TABLE `t2` (
112+
`b` int(11) DEFAULT NULL
113+
) ENGINE=MyISAM DEFAULT CHARSET=latin1
114+
DROP TABLE t1, t2;
115+
SET default_storage_engine = MEMORY;
116+
CREATE TABLE t1 (a INT);
117+
CREATE TEMPORARY TABLE t2 (b INT);
118+
SHOW CREATE TABLE t1;
119+
Table Create Table
120+
t1 CREATE TABLE `t1` (
121+
`a` int(11) DEFAULT NULL
122+
) ENGINE=MEMORY DEFAULT CHARSET=latin1
123+
SHOW CREATE TABLE t2;
124+
Table Create Table
125+
t2 CREATE TEMPORARY TABLE `t2` (
126+
`b` int(11) DEFAULT NULL
127+
) ENGINE=MyISAM DEFAULT CHARSET=latin1
128+
DROP TABLE t1, t2;
129+
SET @@global.default_tmp_storage_engine = NULL;
130+
SET @@session.default_tmp_storage_engine = NULL;
131+
SET default_storage_engine = MEMORY;
132+
CREATE TABLE t1 (a INT);
133+
CREATE TEMPORARY TABLE t2 (b INT);
134+
SHOW CREATE TABLE t1;
135+
Table Create Table
136+
t1 CREATE TABLE `t1` (
137+
`a` int(11) DEFAULT NULL
138+
) ENGINE=MEMORY DEFAULT CHARSET=latin1
139+
SHOW CREATE TABLE t2;
140+
Table Create Table
141+
t2 CREATE TEMPORARY TABLE `t2` (
142+
`b` int(11) DEFAULT NULL
143+
) ENGINE=MEMORY DEFAULT CHARSET=latin1
144+
DROP TABLE t1, t2;
145+
SET default_storage_engine = MYISAM;
146+
CREATE TABLE t1 (a INT);
147+
CREATE TEMPORARY TABLE t2 (b INT);
148+
SHOW CREATE TABLE t1;
149+
Table Create Table
150+
t1 CREATE TABLE `t1` (
151+
`a` int(11) DEFAULT NULL
152+
) ENGINE=MyISAM DEFAULT CHARSET=latin1
153+
SHOW CREATE TABLE t2;
154+
Table Create Table
155+
t2 CREATE TEMPORARY TABLE `t2` (
156+
`b` int(11) DEFAULT NULL
157+
) ENGINE=MyISAM DEFAULT CHARSET=latin1
158+
DROP TABLE t1, t2;
159+
SET default_tmp_storage_engine = DEFAULT;
160+
SET default_storage_engine = DEFAULT;
161+
CREATE TABLE t1 (a INT);
162+
CREATE TEMPORARY TABLE t2 (b INT);
163+
SHOW CREATE TABLE t1;
164+
Table Create Table
165+
t1 CREATE TABLE `t1` (
166+
`a` int(11) DEFAULT NULL
167+
) ENGINE=MyISAM DEFAULT CHARSET=latin1
168+
SHOW CREATE TABLE t2;
169+
Table Create Table
170+
t2 CREATE TEMPORARY TABLE `t2` (
171+
`b` int(11) DEFAULT NULL
172+
) ENGINE=MyISAM DEFAULT CHARSET=latin1
173+
DROP TABLE t1, t2;
174+
SET @@global.default_tmp_storage_engine = @start_global_value;
175+
SELECT @@global.default_tmp_storage_engine;
176+
@@global.default_tmp_storage_engine
177+
NULL
178+
SET @@session.default_tmp_storage_engine = @start_session_value;
179+
SELECT @@session.default_tmp_storage_engine;
180+
@@session.default_tmp_storage_engine
181+
NULL

0 commit comments

Comments
 (0)