-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
4 changed files
with
322 additions
and
0 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
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,156 @@ | ||
|
||
# | ||
# TEST 1: Normal tables prefixed with "#sql" and "sql". | ||
# | ||
USE test; | ||
CREATE TABLE `#sql_1` (a int, b text); | ||
INSERT INTO `#sql_1` VALUES(1,'one'); | ||
|
||
CREATE TABLE `sql_1` (a int, b text); | ||
INSERT INTO `sql_1` VALUES(1,'one'); | ||
|
||
# Verify that the tables are treated as normal tables . | ||
|
||
SELECT object_type, object_schema, object_name | ||
FROM performance_schema.objects_summary_global_by_type | ||
WHERE object_schema="test"; | ||
object_type object_schema object_name | ||
TABLE test #sql_1 | ||
TABLE test sql_1 | ||
|
||
# Drop the tables, verify that the table objects are removed. | ||
|
||
DROP TABLE `#sql_1`; | ||
DROP TABLE `sql_1`; | ||
|
||
SELECT object_type, object_schema, object_name | ||
FROM performance_schema.objects_summary_global_by_type | ||
WHERE object_schema="test"; | ||
object_type object_schema object_name | ||
|
||
# | ||
# TEST 2: Temporary tables, no special prefix. | ||
# | ||
CREATE TEMPORARY TABLE sql_temp2_myisam (a int, b text) ENGINE=MYISAM; | ||
INSERT INTO sql_temp2_myisam VALUES(1,'one'); | ||
|
||
CREATE TEMPORARY TABLE sql_temp2_innodb (a int, b text) ENGINE=INNODB; | ||
INSERT INTO sql_temp2_innodb VALUES(1,'one'); | ||
|
||
# Confirm that the temporary tables are ignored. | ||
|
||
SELECT object_type, object_schema, object_name | ||
FROM performance_schema.objects_summary_global_by_type | ||
WHERE object_schema="test"; | ||
object_type object_schema object_name | ||
|
||
# Drop the tables, verify that the table objects are not created. | ||
|
||
DROP TABLE sql_temp2_myisam; | ||
DROP TABLE sql_temp2_innodb; | ||
|
||
SELECT object_type, object_schema, object_name | ||
FROM performance_schema.objects_summary_global_by_type | ||
WHERE object_schema="test"; | ||
object_type object_schema object_name | ||
|
||
# | ||
# TEST 3: Temporary tables with the "#sql" prefix. | ||
# | ||
CREATE TEMPORARY TABLE `#sql_temp3_myisam` (a int, b text) ENGINE=MYISAM; | ||
CHECK TABLE `#sql_temp3_myisam`; | ||
Table Op Msg_type Msg_text | ||
test.#sql_temp3_myisam check status OK | ||
INSERT INTO `#sql_temp3_myisam` VALUES(1,'one'); | ||
|
||
CREATE TEMPORARY TABLE `#sql_temp3_innodb` (a int, b text) ENGINE=INNODB; | ||
CHECK TABLE `#sql_temp3_innodb`; | ||
Table Op Msg_type Msg_text | ||
test.#sql_temp3_innodb check status OK | ||
INSERT INTO `#sql_temp3_innodb` VALUES(1,'one'); | ||
|
||
# Confirm that the temporary tables are ignored. | ||
|
||
SELECT object_type, object_schema, object_name | ||
FROM performance_schema.objects_summary_global_by_type | ||
WHERE object_schema="test"; | ||
object_type object_schema object_name | ||
|
||
# Drop the temporary tables. | ||
|
||
DROP TABLE `#sql_temp3_myisam`; | ||
DROP TABLE `#sql_temp3_innodb`; | ||
|
||
# Confirm that the temporary tables are still ignored. | ||
|
||
SELECT object_type, object_schema, object_name | ||
FROM performance_schema.objects_summary_global_by_type | ||
WHERE object_schema="test"; | ||
object_type object_schema object_name | ||
|
||
# | ||
# TEST 4: Special case: MyISAM temporary tables are recreated as non-temporary | ||
# when they are truncated. | ||
# | ||
CREATE TEMPORARY TABLE `sql_temp4_myisam` (a int, b text) ENGINE=MYISAM; | ||
INSERT INTO `sql_temp4_myisam` VALUES(1,'one'); | ||
|
||
CREATE TEMPORARY TABLE `#sql_temp4_myisam` (a int, b text) ENGINE=MYISAM; | ||
INSERT INTO `#sql_temp4_myisam` VALUES(1,'one'); | ||
|
||
# Confirm that the MyISAM temporary tables are ignored. | ||
|
||
SELECT object_type, object_schema, object_name | ||
FROM performance_schema.objects_summary_global_by_type | ||
WHERE object_schema="test"; | ||
object_type object_schema object_name | ||
|
||
# Truncate the MyISAM temporary tables, forcing them to be recreated as non-temporary. | ||
|
||
TRUNCATE TABLE `sql_temp4_myisam`; | ||
TRUNCATE TABLE `#sql_temp4_myisam`; | ||
|
||
# Confirm that the recreated MyISAM tables are still regarded as temporary and ignored. | ||
|
||
SELECT object_type, object_schema, object_name | ||
FROM performance_schema.objects_summary_global_by_type | ||
WHERE object_schema="test"; | ||
object_type object_schema object_name | ||
|
||
# Drop the recreated MyISAM tables; | ||
|
||
DROP TABLE `sql_temp4_myisam`; | ||
DROP TABLE `#sql_temp4_myisam`; | ||
|
||
# Confirm that the recreated temporary tables are still ignored. | ||
|
||
SELECT object_type, object_schema, object_name | ||
FROM performance_schema.objects_summary_global_by_type | ||
WHERE object_schema="test"; | ||
object_type object_schema object_name | ||
|
||
# | ||
# TEST 5: Generate temporary tables with ALTER MyISAM table. | ||
# | ||
USE test; | ||
CREATE TABLE t1 (a int) ENGINE=MYISAM; | ||
INSERT INTO t1 VALUES (1), (2), (3); | ||
ALTER TABLE t1 ADD COLUMN (b int); | ||
|
||
# Confirm that the recreated temporary tables are still ignored. | ||
|
||
SELECT object_type, object_schema, object_name | ||
FROM performance_schema.objects_summary_global_by_type | ||
WHERE object_schema="test"; | ||
object_type object_schema object_name | ||
|
||
# Drop the MyISAM table | ||
|
||
DROP TABLE t1; | ||
|
||
# Confirm that no tables remain; | ||
|
||
SELECT object_type, object_schema, object_name | ||
FROM performance_schema.objects_summary_global_by_type | ||
WHERE object_schema="test"; | ||
object_type object_schema object_name |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,164 @@ | ||
# | ||
# Performance Schema | ||
# | ||
# Verify that the Performance Schema correctly identifies normal and temporary | ||
# tables with non-standard names. | ||
|
||
# The server uses the table name prefix "#sql" for temporary and intermediate | ||
# tables, however user-defined tables having the "#sql" prefix are also permitted. | ||
# Independent of the table name, temporary or intermediate tables always have the | ||
# "#sql" prefix in the filename. (For non-temporary tables starting with "#", | ||
# the "#" is encoded to @0023 in the filename.) | ||
# | ||
# Given the ambiguity with temporary table names, the Performance Schema identifies | ||
# temporary tables tables either by the table category or by the filename. | ||
# | ||
--source include/have_perfschema.inc | ||
--source include/not_embedded.inc | ||
|
||
--echo | ||
--echo # | ||
--echo # TEST 1: Normal tables prefixed with "#sql" and "sql". | ||
--echo # | ||
USE test; | ||
CREATE TABLE `#sql_1` (a int, b text); | ||
# INSERT forces path through get_table_share() | ||
INSERT INTO `#sql_1` VALUES(1,'one'); | ||
--echo | ||
CREATE TABLE `sql_1` (a int, b text); | ||
INSERT INTO `sql_1` VALUES(1,'one'); | ||
--echo | ||
--echo # Verify that the tables are treated as normal tables . | ||
--echo | ||
SELECT object_type, object_schema, object_name | ||
FROM performance_schema.objects_summary_global_by_type | ||
WHERE object_schema="test"; | ||
--echo | ||
--echo # Drop the tables, verify that the table objects are removed. | ||
--echo | ||
DROP TABLE `#sql_1`; | ||
DROP TABLE `sql_1`; | ||
--echo | ||
SELECT object_type, object_schema, object_name | ||
FROM performance_schema.objects_summary_global_by_type | ||
WHERE object_schema="test"; | ||
|
||
--echo | ||
--echo # | ||
--echo # TEST 2: Temporary tables, no special prefix. | ||
--echo # | ||
CREATE TEMPORARY TABLE sql_temp2_myisam (a int, b text) ENGINE=MYISAM; | ||
INSERT INTO sql_temp2_myisam VALUES(1,'one'); | ||
--echo | ||
CREATE TEMPORARY TABLE sql_temp2_innodb (a int, b text) ENGINE=INNODB; | ||
INSERT INTO sql_temp2_innodb VALUES(1,'one'); | ||
--echo | ||
--echo # Confirm that the temporary tables are ignored. | ||
--echo | ||
SELECT object_type, object_schema, object_name | ||
FROM performance_schema.objects_summary_global_by_type | ||
WHERE object_schema="test"; | ||
--echo | ||
--echo # Drop the tables, verify that the table objects are not created. | ||
--echo | ||
DROP TABLE sql_temp2_myisam; | ||
DROP TABLE sql_temp2_innodb; | ||
--echo | ||
SELECT object_type, object_schema, object_name | ||
FROM performance_schema.objects_summary_global_by_type | ||
WHERE object_schema="test"; | ||
|
||
--echo | ||
--echo # | ||
--echo # TEST 3: Temporary tables with the "#sql" prefix. | ||
--echo # | ||
CREATE TEMPORARY TABLE `#sql_temp3_myisam` (a int, b text) ENGINE=MYISAM; | ||
CHECK TABLE `#sql_temp3_myisam`; | ||
INSERT INTO `#sql_temp3_myisam` VALUES(1,'one'); | ||
--echo | ||
CREATE TEMPORARY TABLE `#sql_temp3_innodb` (a int, b text) ENGINE=INNODB; | ||
CHECK TABLE `#sql_temp3_innodb`; | ||
INSERT INTO `#sql_temp3_innodb` VALUES(1,'one'); | ||
--echo | ||
--echo # Confirm that the temporary tables are ignored. | ||
--echo | ||
SELECT object_type, object_schema, object_name | ||
FROM performance_schema.objects_summary_global_by_type | ||
WHERE object_schema="test"; | ||
--echo | ||
--echo # Drop the temporary tables. | ||
--echo | ||
DROP TABLE `#sql_temp3_myisam`; | ||
DROP TABLE `#sql_temp3_innodb`; | ||
--echo | ||
--echo # Confirm that the temporary tables are still ignored. | ||
--echo | ||
SELECT object_type, object_schema, object_name | ||
FROM performance_schema.objects_summary_global_by_type | ||
WHERE object_schema="test"; | ||
|
||
--echo | ||
--echo # | ||
--echo # TEST 4: Special case: MyISAM temporary tables are recreated as non-temporary | ||
--echo # when they are truncated. | ||
--echo # | ||
CREATE TEMPORARY TABLE `sql_temp4_myisam` (a int, b text) ENGINE=MYISAM; | ||
INSERT INTO `sql_temp4_myisam` VALUES(1,'one'); | ||
--echo | ||
CREATE TEMPORARY TABLE `#sql_temp4_myisam` (a int, b text) ENGINE=MYISAM; | ||
INSERT INTO `#sql_temp4_myisam` VALUES(1,'one'); | ||
--echo | ||
--echo # Confirm that the MyISAM temporary tables are ignored. | ||
--echo | ||
SELECT object_type, object_schema, object_name | ||
FROM performance_schema.objects_summary_global_by_type | ||
WHERE object_schema="test"; | ||
--echo | ||
--echo # Truncate the MyISAM temporary tables, forcing them to be recreated as non-temporary. | ||
--echo | ||
TRUNCATE TABLE `sql_temp4_myisam`; | ||
TRUNCATE TABLE `#sql_temp4_myisam`; | ||
--echo | ||
--echo # Confirm that the recreated MyISAM tables are still regarded as temporary and ignored. | ||
--echo | ||
SELECT object_type, object_schema, object_name | ||
FROM performance_schema.objects_summary_global_by_type | ||
WHERE object_schema="test"; | ||
--echo | ||
--echo # Drop the recreated MyISAM tables; | ||
--echo | ||
DROP TABLE `sql_temp4_myisam`; | ||
DROP TABLE `#sql_temp4_myisam`; | ||
--echo | ||
--echo # Confirm that the recreated temporary tables are still ignored. | ||
--echo | ||
SELECT object_type, object_schema, object_name | ||
FROM performance_schema.objects_summary_global_by_type | ||
WHERE object_schema="test"; | ||
|
||
--echo | ||
--echo # | ||
--echo # TEST 5: Generate temporary tables with ALTER MyISAM table. | ||
--echo # | ||
USE test; | ||
CREATE TABLE t1 (a int) ENGINE=MYISAM; | ||
INSERT INTO t1 VALUES (1), (2), (3); | ||
# Force a path throug mysql_alter_table() and ha_create_table(). | ||
ALTER TABLE t1 ADD COLUMN (b int); | ||
--echo | ||
--echo # Confirm that the recreated temporary tables are still ignored. | ||
--echo | ||
SELECT object_type, object_schema, object_name | ||
FROM performance_schema.objects_summary_global_by_type | ||
WHERE object_schema="test"; | ||
--echo | ||
--echo # Drop the MyISAM table | ||
--echo | ||
DROP TABLE t1; | ||
|
||
--echo | ||
--echo # Confirm that no tables remain; | ||
--echo | ||
SELECT object_type, object_schema, object_name | ||
FROM performance_schema.objects_summary_global_by_type | ||
WHERE object_schema="test"; |