mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
06a7352d33
This test ran `show status like '%Created_tmp%'`. This captures `Created_tmp_files` as well as the intended `Created_tmp_tables`. In 11.5, the former got moved to `FLUSH GLOBAL`, so when testing, the result can now be random. This fix makes the test just use `Created_tmp_tables`.
75 lines
2.7 KiB
Text
75 lines
2.7 KiB
Text
create table t2 (a int);
|
|
insert into t2 values (1),(2),(3);
|
|
create view v2 as select a from t2;
|
|
flush status;
|
|
select * from v2;
|
|
a
|
|
1
|
|
2
|
|
3
|
|
show status like '%Created_tmp_tables%';
|
|
Variable_name Value
|
|
Created_tmp_tables 0
|
|
explain select * from v2;
|
|
id select_type table type possible_keys key key_len ref rows Extra
|
|
1 SIMPLE t2 ALL NULL NULL NULL NULL 3
|
|
select * from (select * from t2) T1;
|
|
a
|
|
1
|
|
2
|
|
3
|
|
show status like '%Created_tmp_tables%';
|
|
Variable_name Value
|
|
Created_tmp_tables 0
|
|
explain select * from (select * from t2) T1;
|
|
id select_type table type possible_keys key key_len ref rows Extra
|
|
1 SIMPLE t2 ALL NULL NULL NULL NULL 3
|
|
drop view v2;
|
|
drop table t2;
|
|
CREATE TABLE t1(a int);
|
|
INSERT INTO t1 values(1),(2);
|
|
CREATE TABLE t2(a int);
|
|
INSERT INTO t2 values(1),(2);
|
|
EXPLAIN SELECT * FROM t1 WHERE a IN (SELECT * FROM t2 GROUP BY a HAVING a > 1);
|
|
id select_type table type possible_keys key key_len ref rows Extra
|
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 Using where
|
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 test.t1.a 1
|
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 2 Using where; Using temporary
|
|
truncate table performance_schema.events_statements_history_long;
|
|
flush status;
|
|
CREATE TABLE t3 SELECT * FROM t1 WHERE a IN (SELECT * FROM t2 GROUP BY a HAVING a > 1);
|
|
# Performance schema should be the same as "Created_tmp_tables" variable below
|
|
select sum(created_tmp_tables) from performance_schema.events_statements_history_long;
|
|
sum(created_tmp_tables)
|
|
2
|
|
show status like '%Created_tmp_tables%';
|
|
Variable_name Value
|
|
Created_tmp_tables 2
|
|
drop table t3;
|
|
set @@optimizer_switch="firstmatch=off";
|
|
EXPLAIN SELECT * FROM t1 WHERE a IN (SELECT * FROM t2 GROUP BY a);
|
|
id select_type table type possible_keys key key_len ref rows Extra
|
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
|
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
|
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 2
|
|
truncate table performance_schema.events_statements_history_long;
|
|
flush status;
|
|
CREATE TABLE t3 SELECT * FROM t1 WHERE a IN (SELECT * FROM t2 GROUP BY a);
|
|
# Performance schema should be the same as "Created_tmp_tables" variable below
|
|
select sum(created_tmp_tables) from performance_schema.events_statements_history_long;
|
|
sum(created_tmp_tables)
|
|
1
|
|
show status like '%Created_tmp_tables%';
|
|
Variable_name Value
|
|
Created_tmp_tables 1
|
|
set @@optimizer_switch=default;
|
|
drop table t1,t2,t3;
|
|
truncate table performance_schema.events_statements_history_long;
|
|
flush status;
|
|
# Performance schema should be the same as "Created_tmp_tables" variable below
|
|
select sum(created_tmp_tables) from performance_schema.events_statements_history_long;
|
|
sum(created_tmp_tables)
|
|
0
|
|
show status like '%Created_tmp_tables%';
|
|
Variable_name Value
|
|
Created_tmp_tables 0
|