Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
MDEV-7586: Merged derived tables/VIEWs increment created_tmp_tables
Temporary table count fix. The number of temporary tables was increased when the table is not actually created. (when do_not_open was passed as TRUE to create_tmp_table).
- Loading branch information
Showing
5 changed files
with
150 additions
and
12 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
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%'; | ||
Variable_name Value | ||
Created_tmp_disk_tables 0 | ||
Created_tmp_files 0 | ||
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%'; | ||
Variable_name Value | ||
Created_tmp_disk_tables 0 | ||
Created_tmp_files 0 | ||
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 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%'; | ||
Variable_name Value | ||
Created_tmp_disk_tables 0 | ||
Created_tmp_files 0 | ||
Created_tmp_tables 2 | ||
drop table t3; | ||
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%'; | ||
Variable_name Value | ||
Created_tmp_disk_tables 0 | ||
Created_tmp_files 0 | ||
Created_tmp_tables 1 | ||
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%'; | ||
Variable_name Value | ||
Created_tmp_disk_tables 0 | ||
Created_tmp_files 0 | ||
Created_tmp_tables 0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
# MDEV-7586 regression test. | ||
# Test if created_tmp_tables status variable is correctly incremented. | ||
--source include/have_perfschema.inc | ||
|
||
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; | ||
show status like '%Created_tmp%'; | ||
|
||
explain select * from v2; | ||
|
||
select * from (select * from t2) T1; | ||
show status like '%Created_tmp%'; | ||
|
||
explain select * from (select * from t2) T1; | ||
|
||
|
||
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); | ||
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); | ||
--echo # Performance schema should be the same as "Created_tmp_tables" variable below | ||
select sum(created_tmp_tables) from performance_schema.events_statements_history_long; | ||
show status like '%Created_tmp%'; | ||
drop table t3; | ||
|
||
EXPLAIN SELECT * FROM t1 WHERE a IN (SELECT * FROM t2 GROUP BY a); | ||
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); | ||
--echo # Performance schema should be the same as "Created_tmp_tables" variable below | ||
select sum(created_tmp_tables) from performance_schema.events_statements_history_long; | ||
show status like '%Created_tmp%'; | ||
|
||
drop table t1,t2,t3; | ||
|
||
truncate table performance_schema.events_statements_history_long; | ||
flush status; | ||
--echo # Performance schema should be the same as "Created_tmp_tables" variable below | ||
select sum(created_tmp_tables) from performance_schema.events_statements_history_long; | ||
show status like '%Created_tmp%'; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters