summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Golubchik <serg@mariadb.org>2021-10-28 09:43:49 +0200
committerSergei Golubchik <serg@mariadb.org>2021-12-07 21:31:27 +0100
commit62ea1b4407762164982221dc9796502a91c139cc (patch)
tree81b3047e375b5ca98ad07102aa8573f976cd4413
parente27b1c31378a6d2592b8ffafb0c7fcc5a1c93072 (diff)
downloadmariadb-git-62ea1b4407762164982221dc9796502a91c139cc.tar.gz
BUG#31761802 STATISTICS ANY QUERIES USING VIEWS ARE SUMMARIZED TOGETHER WITH THE VIEW DEFINITION SELECT
test case only
-rw-r--r--mysql-test/suite/perfschema/r/digest_view.result144
-rw-r--r--mysql-test/suite/perfschema/t/digest_view.test76
2 files changed, 220 insertions, 0 deletions
diff --git a/mysql-test/suite/perfschema/r/digest_view.result b/mysql-test/suite/perfschema/r/digest_view.result
new file mode 100644
index 00000000000..43a8bdb1577
--- /dev/null
+++ b/mysql-test/suite/perfschema/r/digest_view.result
@@ -0,0 +1,144 @@
+CREATE TABLE test.v1 (a int, b int);
+INSERT INTO test.v1 VALUES (1, 100), (2, 200), (3, 300);
+CREATE TABLE test.t1 (a int, b int);
+INSERT INTO test.t1 VALUES (1, 100), (2, 200), (3, 300);
+TRUNCATE TABLE performance_schema.events_statements_summary_by_digest;
+EXPLAIN EXTENDED SELECT * from test.v1;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE v1 ALL NULL NULL NULL NULL 3 100.00
+Warnings:
+Note 1003 select `test`.`v1`.`a` AS `a`,`test`.`v1`.`b` AS `b` from `test`.`v1`
+EXPLAIN EXTENDED SELECT * from test.v1 where a = 1;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE v1 ALL NULL NULL NULL NULL 3 100.00 Using where
+Warnings:
+Note 1003 select `test`.`v1`.`a` AS `a`,`test`.`v1`.`b` AS `b` from `test`.`v1` where `test`.`v1`.`a` = 1
+EXPLAIN EXTENDED SELECT * from test.v1 where b > 100;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE v1 ALL NULL NULL NULL NULL 3 100.00 Using where
+Warnings:
+Note 1003 select `test`.`v1`.`a` AS `a`,`test`.`v1`.`b` AS `b` from `test`.`v1` where `test`.`v1`.`b` > 100
+EXPLAIN EXTENDED SELECT a, b from test.v1;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE v1 ALL NULL NULL NULL NULL 3 100.00
+Warnings:
+Note 1003 select `test`.`v1`.`a` AS `a`,`test`.`v1`.`b` AS `b` from `test`.`v1`
+EXPLAIN EXTENDED SELECT b, a from test.v1;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE v1 ALL NULL NULL NULL NULL 3 100.00
+Warnings:
+Note 1003 select `test`.`v1`.`b` AS `b`,`test`.`v1`.`a` AS `a` from `test`.`v1`
+SELECT * from test.v1;
+a b
+1 100
+2 200
+3 300
+SELECT * from test.v1 where a = 1;
+a b
+1 100
+SELECT * from test.v1 where b > 100;
+a b
+2 200
+3 300
+SELECT a, b from test.v1;
+a b
+1 100
+2 200
+3 300
+SELECT b, a from test.v1;
+b a
+100 1
+200 2
+300 3
+#
+# DIGESTS SEEN ON TABLE
+#
+SELECT SCHEMA_NAME, DIGEST_TEXT, COUNT_STAR
+FROM performance_schema.events_statements_summary_by_digest
+ORDER BY DIGEST_TEXT;
+SCHEMA_NAME DIGEST_TEXT COUNT_STAR
+test EXPLAIN EXTENDED SELECT * FROM `test` . `v1` 1
+test EXPLAIN EXTENDED SELECT * FROM `test` . `v1` WHERE `a` = ? 1
+test EXPLAIN EXTENDED SELECT * FROM `test` . `v1` WHERE `b` > ? 1
+test EXPLAIN EXTENDED SELECT `a` , `b` FROM `test` . `v1` 1
+test EXPLAIN EXTENDED SELECT `b` , `a` FROM `test` . `v1` 1
+test SELECT * FROM `test` . `v1` 1
+test SELECT * FROM `test` . `v1` WHERE `a` = ? 1
+test SELECT * FROM `test` . `v1` WHERE `b` > ? 1
+test SELECT `a` , `b` FROM `test` . `v1` 1
+test SELECT `b` , `a` FROM `test` . `v1` 1
+test SHOW WARNINGS 5
+test TRUNCATE TABLE `performance_schema` . `events_statements_summary_by_digest` 1
+DROP TABLE test.v1;
+CREATE VIEW test.v1 AS SELECT * FROM test.t1;
+EXPLAIN EXTENDED SELECT * from test.v1;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00
+Warnings:
+Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1`
+EXPLAIN EXTENDED SELECT * from test.v1 where a = 1;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Using where
+Warnings:
+Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where `test`.`t1`.`a` = 1
+EXPLAIN EXTENDED SELECT * from test.v1 where b > 100;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Using where
+Warnings:
+Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where `test`.`t1`.`b` > 100
+EXPLAIN EXTENDED SELECT a, b from test.v1;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00
+Warnings:
+Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1`
+EXPLAIN EXTENDED SELECT b, a from test.v1;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00
+Warnings:
+Note 1003 select `test`.`t1`.`b` AS `b`,`test`.`t1`.`a` AS `a` from `test`.`t1`
+SELECT * from test.v1;
+a b
+1 100
+2 200
+3 300
+SELECT * from test.v1 where a = 1;
+a b
+1 100
+SELECT * from test.v1 where b > 100;
+a b
+2 200
+3 300
+SELECT a, b from test.v1;
+a b
+1 100
+2 200
+3 300
+SELECT b, a from test.v1;
+b a
+100 1
+200 2
+300 3
+#
+# DIGESTS SEEN ON VIEW
+#
+SELECT SCHEMA_NAME, DIGEST_TEXT, COUNT_STAR
+FROM performance_schema.events_statements_summary_by_digest
+ORDER BY DIGEST_TEXT;
+SCHEMA_NAME DIGEST_TEXT COUNT_STAR
+test CREATE VIEW `test` . `v1` AS SELECT * FROM `test` . `t1` 1
+test DROP TABLE `test` . `v1` 1
+test EXPLAIN EXTENDED SELECT * FROM `test` . `v1` 2
+test EXPLAIN EXTENDED SELECT * FROM `test` . `v1` WHERE `a` = ? 2
+test EXPLAIN EXTENDED SELECT * FROM `test` . `v1` WHERE `b` > ? 2
+test EXPLAIN EXTENDED SELECT `a` , `b` FROM `test` . `v1` 2
+test EXPLAIN EXTENDED SELECT `b` , `a` FROM `test` . `v1` 2
+test SELECT * FROM `test` . `v1` 2
+test SELECT * FROM `test` . `v1` WHERE `a` = ? 2
+test SELECT * FROM `test` . `v1` WHERE `b` > ? 2
+test SELECT SCHEMA_NAME , `DIGEST_TEXT` , `COUNT_STAR` FROM `performance_schema` . `events_statements_summary_by_digest` ORDER BY `DIGEST_TEXT` 1
+test SELECT `a` , `b` FROM `test` . `v1` 2
+test SELECT `b` , `a` FROM `test` . `v1` 2
+test SHOW WARNINGS 10
+test TRUNCATE TABLE `performance_schema` . `events_statements_summary_by_digest` 1
+DROP VIEW test.v1;
+DROP TABLE test.t1;
diff --git a/mysql-test/suite/perfschema/t/digest_view.test b/mysql-test/suite/perfschema/t/digest_view.test
new file mode 100644
index 00000000000..462d60556eb
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/digest_view.test
@@ -0,0 +1,76 @@
+# ----------------------------------------------------
+# Tests for the performance schema statement Digests.
+# ----------------------------------------------------
+
+# Test case to show behavior of statements digest when
+# using a view
+
+# Test requires: sp-protocol/ps-protocol/view-protocol/cursor-protocol disabled
+--source include/no_protocol.inc
+--source include/not_embedded.inc
+
+CREATE TABLE test.v1 (a int, b int);
+INSERT INTO test.v1 VALUES (1, 100), (2, 200), (3, 300);
+
+CREATE TABLE test.t1 (a int, b int);
+INSERT INTO test.t1 VALUES (1, 100), (2, 200), (3, 300);
+
+
+TRUNCATE TABLE performance_schema.events_statements_summary_by_digest;
+
+#
+# test.v1 is a table.
+# Every query here is different, and should have a different digest.
+#
+
+EXPLAIN EXTENDED SELECT * from test.v1;
+EXPLAIN EXTENDED SELECT * from test.v1 where a = 1;
+EXPLAIN EXTENDED SELECT * from test.v1 where b > 100;
+EXPLAIN EXTENDED SELECT a, b from test.v1;
+EXPLAIN EXTENDED SELECT b, a from test.v1;
+
+SELECT * from test.v1;
+SELECT * from test.v1 where a = 1;
+SELECT * from test.v1 where b > 100;
+SELECT a, b from test.v1;
+SELECT b, a from test.v1;
+
+--echo #
+--echo # DIGESTS SEEN ON TABLE
+--echo #
+
+SELECT SCHEMA_NAME, DIGEST_TEXT, COUNT_STAR
+ FROM performance_schema.events_statements_summary_by_digest
+ ORDER BY DIGEST_TEXT;
+
+DROP TABLE test.v1;
+CREATE VIEW test.v1 AS SELECT * FROM test.t1;
+
+#
+# test.v1 is now a view.
+# the query digests should be unchanged.
+#
+
+EXPLAIN EXTENDED SELECT * from test.v1;
+EXPLAIN EXTENDED SELECT * from test.v1 where a = 1;
+EXPLAIN EXTENDED SELECT * from test.v1 where b > 100;
+EXPLAIN EXTENDED SELECT a, b from test.v1;
+EXPLAIN EXTENDED SELECT b, a from test.v1;
+
+SELECT * from test.v1;
+SELECT * from test.v1 where a = 1;
+SELECT * from test.v1 where b > 100;
+SELECT a, b from test.v1;
+SELECT b, a from test.v1;
+
+--echo #
+--echo # DIGESTS SEEN ON VIEW
+--echo #
+
+SELECT SCHEMA_NAME, DIGEST_TEXT, COUNT_STAR
+ FROM performance_schema.events_statements_summary_by_digest
+ ORDER BY DIGEST_TEXT;
+
+DROP VIEW test.v1;
+DROP TABLE test.t1;
+