File: temptable.test

package info (click to toggle)
mysql-8.0 8.0.43-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,273,924 kB
  • sloc: cpp: 4,684,605; ansic: 412,450; pascal: 108,398; java: 83,641; perl: 30,221; cs: 27,067; sql: 26,594; sh: 24,181; python: 21,816; yacc: 17,169; php: 11,522; xml: 7,388; javascript: 7,076; makefile: 2,194; lex: 1,075; awk: 670; asm: 520; objc: 183; ruby: 97; lisp: 86
file content (278 lines) | stat: -rw-r--r-- 6,868 bytes parent folder | download
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
#
# Some basic tests for the TempTable storage engine.
#
# Use "-- sorted_result" instead of "ORDER BY" because the latter may cause
# different execution plans.
#

# Windows does not have gunzip(1)
-- source include/not_windows.inc

-- let $is_debug = `SELECT VERSION() LIKE '%debug%'`

CREATE DATABASE temptable_test;
USE temptable_test;

-- exec gunzip < $MYSQL_TEST_DIR/t/temptable_dump.sql.gz | $MYSQL temptable_test

-- disable_query_log
-- disable_result_log
ANALYZE TABLE A;
ANALYZE TABLE AA;
ANALYZE TABLE B;
ANALYZE TABLE BB;
ANALYZE TABLE C;
ANALYZE TABLE CC;
ANALYZE TABLE D;
ANALYZE TABLE DD;
ANALYZE TABLE DUMMY;
ANALYZE TABLE E;
ANALYZE TABLE HH;
ANALYZE TABLE K;
ANALYZE TABLE MM;
ANALYZE TABLE PP;
ANALYZE TABLE table10000_innodb_int_autoinc;

SET SESSION internal_tmp_mem_storage_engine = 'TempTable';

# Several of the DBUG_PRINT calls give 'conditional jump'
if (!$VALGRIND_TEST) {
  if ($is_debug) {
    SET GLOBAL debug = "+d,temptable_api";
  }
}

-- enable_result_log
-- enable_query_log

#

-- echo # Test 01
-- sorted_result
SELECT * FROM information_schema.table_constraints
WHERE table_schema = 'mysql' AND table_name != 'ndb_binlog_index'
ORDER BY table_schema,table_name,constraint_name COLLATE utf8_general_ci;

-- echo # Test 03
SET optimizer_switch = 'derived_merge=off';
-- sorted_result
SELECT DISTINCT
  alias1.`col_int` AS field1,
  alias1.`pk` AS field2,
  alias1.`col_int` AS field3,
  alias1.`col_int_key` AS field4,
  alias1.`col_int_key` AS field5
FROM
  view_K AS alias1
  LEFT JOIN
  view_HH AS alias2
  ON
  alias1.`col_varchar_255_latin1` = alias2.`col_varchar_255_utf8_key`
WHERE alias1.`col_int` IS NULL
ORDER BY field1;
SET optimizer_switch = default;

-- echo # Test 04
-- sorted_result
SELECT
  GRANDPARENT1.`pk` AS g1,
  GRANDPARENT1.`col_datetime_key`
FROM
  CC AS GRANDPARENT1
  LEFT JOIN
  CC AS GRANDPARENT2
  USING (`col_int_key`)
WHERE
  GRANDPARENT1.`col_int_key` IN (
    SELECT PARENT1.`col_int_key` AS p1 FROM CC AS PARENT1
  ) AND GRANDPARENT1.`pk` <> 2
HAVING g1 <> 'p'
ORDER BY GRANDPARENT1.`col_datetime_key`;

-- echo # Test 05
-- sorted_result
SELECT
  GRANDPARENT1.`col_int_key` AS g1,
  GRANDPARENT1.`col_datetime_key` AS dt
FROM
  C AS GRANDPARENT1
  LEFT JOIN
  C AS GRANDPARENT2
  ON (GRANDPARENT2.`pk` <> GRANDPARENT1.`pk`)
WHERE
  (GRANDPARENT1.`pk`, GRANDPARENT1.`pk`) IN (
    SELECT DISTINCT
      PARENT1.`col_int_key` AS p1,
      PARENT1.`col_int_key` AS p2
    FROM
      C AS PARENT1
      LEFT JOIN
      C AS PARENT2
      USING (`col_varchar_key`)
    WHERE
      ((PARENT1.`pk` > GRANDPARENT1.`col_int_key`)
        OR ((PARENT1.`col_time_key` <= GRANDPARENT1.`col_time_key`)
             AND (PARENT1.`col_datetime_key` > '2005-02-01')
           )
      )
    ORDER BY PARENT1.`col_int_key`
  )
  AND GRANDPARENT1.`col_varchar_key` <> 'r'
HAVING g1 <> '13:16:53.053569'
ORDER BY GRANDPARENT1.`col_datetime_key`;

-- echo # Test 06
-- sorted_result
(SELECT DISTINCT
    *
FROM
    `view_table10000_innodb_int_autoinc`
WHERE
    (`col_varchar_10_key` LIKE CONCAT('Michigan', '%')
        OR `col_varchar_64_key` LIKE CONCAT('why', '%'))
        AND (`col_varchar_64_key` IS NOT NULL
        OR NOT (`col_varchar_64_key` = 'can\'t'))
        OR (`col_smallint_key` IN (1 , 244, 1, 1)
        OR `col_bigint_key` IS NOT NULL)
        AND (`col_bigint_key` IN (1 , - 89)
        OR (`col_bigint_key` != 1))
        AND (`col_varchar_10_key` IS NOT NULL
        AND `col_varchar_10_key` NOT IN ('Maine' , 'x'))
        AND (NOT (`col_bigint_key` = 1)
        AND `col_smallint_key` BETWEEN 1 AND 1 + 125)) UNION DISTINCT (SELECT
DISTINCT
    *
FROM
    `view_table10000_innodb_int_autoinc`
WHERE
    (`col_varchar_10_key` LIKE CONCAT('Michigan', '%')
        OR `col_varchar_64_key` LIKE CONCAT('why', '%'))
        AND (`col_varchar_64_key` IS NOT NULL
        OR NOT (`col_varchar_64_key` = 'can\'t'))
        OR (`col_smallint_key` IN (1 , 244, 1, 1)
        OR `col_bigint_key` IS NOT NULL)
        AND (`col_bigint_key` IN (1 , - 89)
        OR (`col_bigint_key` != 1))
        AND (`col_varchar_10_key` IS NOT NULL
        AND `col_varchar_10_key` NOT IN ('Maine' , 'x'))
        AND (NOT (`col_bigint_key` = 1)
        AND `col_smallint_key` BETWEEN 1 AND 1 + 125));

-- echo # Test 07
SET optimizer_switch = 'derived_merge=off';
-- sorted_result
SELECT
  alias2.`col_int_key`, alias2.pk, alias2.`col_varchar_10_latin1_key`
FROM
  MM AS alias1
  LEFT OUTER JOIN
  view_PP AS alias2
  ON alias1.`col_varchar_10_latin1` = alias2.`col_varchar_10_latin1_key`
WHERE alias2.`col_int` NOT IN (1);
SET optimizer_switch = default;

-- echo # Test 08
SET optimizer_switch = 'derived_merge=on';
-- sorted_result
SELECT
  alias2.`col_int_key`
FROM
  MM AS alias1
  LEFT OUTER JOIN
  view_PP AS alias2
  ON alias1.`col_varchar_10_latin1` = alias2.`col_varchar_10_latin1_key`
WHERE alias2.`col_int` NOT IN (1);
SET optimizer_switch = default;

-- echo # Test 09
SET optimizer_switch = 'derived_merge=off';
-- sorted_result
SELECT table1.pk
FROM view_D AS table1
LEFT JOIN D AS table2 ON table1.col_int_key = table2.col_int_key
WHERE table1.col_int_key IS NULL;

-- echo # Test 10
SET optimizer_switch = 'derived_merge=on';
-- sorted_result
SELECT table1.pk
FROM view_D AS table1
LEFT JOIN D AS table2 ON table1.col_int_key = table2.col_int_key
WHERE table1.col_int_key IS NULL;

-- echo # Test 11
CREATE TABLE t1 (
  pk int(11) NOT NULL DEFAULT '0',
  col_int_key int(11) DEFAULT NULL,
  col_varchar_key varchar(1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO t1 VALUES
(22,0,NULL),
(17,9,NULL),
(29,8,'c'),
(23,4,'d'),
(11,7,'d'),
(26,NULL,'f'),
(13,7,'f'),
(24,8,'g'),
(28,NULL,'j'),
(16,1,'m'),
(20,2,'m'),
(18,2,'o'),
(27,0,'p'),
(21,4,'q'),
(12,1,'r'),
(15,NULL,'u'),
(19,9,'w'),
(25,NULL,'x'),
(10,8,'x'),
(14,9,'y');
ANALYZE TABLE t1;
-- sorted_result
SELECT *
FROM (
  SELECT DISTINCT SUBQUERY1_t1.*
  FROM (
    t1 AS SUBQUERY1_t1
    LEFT OUTER JOIN
    t1 AS SUBQUERY1_t2
    ON (SUBQUERY1_t2.`pk` = SUBQUERY1_t1.`col_int_key`)
  )
) AS table1
WHERE table1.`col_varchar_key` IS NULL;
DROP TABLE t1;

-- echo # Test 12
CREATE TABLE t1 (
  id INT NOT NULL AUTO_INCREMENT,
  c1 CHAR(60) NOT NULL,
  c2 CHAR(60),
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO t1 (c1, c2) VALUES
('abcdefghij', 'ABCDEFGHIJ'),
('mnopqrstuv', 'MNOPQRSTUV');
ANALYZE TABLE t1;
-- sorted_result
SELECT DISTINCT c1, c2 FROM t1 WHERE id BETWEEN 1 And 2 ORDER BY 1;
DROP TABLE t1;

#

-- disable_query_log
-- disable_result_log
if ($is_debug) {
  SET GLOBAL debug = default;
}
-- enable_result_log
-- enable_query_log

CREATE TABLE t1 (c1 VARCHAR(10) COLLATE utf8mb4_bin) ENGINE = InnoDB;
INSERT INTO t1 VALUES (''), (' ');
SELECT DISTINCT(c1) FROM t1;
DROP TABLE t1;

SET SESSION internal_tmp_mem_storage_engine = default;

USE test;
DROP DATABASE temptable_test;