diff options
Diffstat (limited to 'mysql-test/suite/perfschema/t/misc.test')
-rw-r--r-- | mysql-test/suite/perfschema/t/misc.test | 320 |
1 files changed, 320 insertions, 0 deletions
diff --git a/mysql-test/suite/perfschema/t/misc.test b/mysql-test/suite/perfschema/t/misc.test new file mode 100644 index 00000000..79c23c65 --- /dev/null +++ b/mysql-test/suite/perfschema/t/misc.test @@ -0,0 +1,320 @@ +# Tests for PERFORMANCE_SCHEMA +# Miscelaneous + +--source include/not_embedded.inc +--source include/have_perfschema.inc +--source include/have_innodb.inc +--source include/no_protocol.inc + +# +# Bug#12790483 OBJECTS_SUMMARY_GLOBAL_BY_TYPE AND RENAME TABLE +# +# Rename table leaves old tables names behind in +# performance_schema.objects_summary_global_by_type +# +SELECT object_schema, object_name FROM performance_schema.objects_summary_global_by_type + WHERE object_schema='test'; + +CREATE TABLE test.t_before(a INT); +INSERT INTO test.t_before VALUES (1); + +# The new table should appear in OBJECTS_SUMMARY_GLOBAL_BY_TYPE. + +SELECT object_schema, object_name FROM performance_schema.objects_summary_global_by_type + WHERE object_schema='test'; + +RENAME TABLE test.t_before TO test.t_after; + +# The renamed table should appear in OBJECTS_SUMMARY_GLOBAL_BY_TYPE, but only +# after it is accessed. + +SELECT COUNT(*) FROM test.t_after; + +SELECT object_schema, object_name FROM performance_schema.objects_summary_global_by_type + WHERE object_schema='test'; + +DROP TABLE test.t_after; + +# The renamed table should not appear in OBJECTS_SUMMARY_GLOBAL_BY_TYPE. + +SELECT object_schema, object_name FROM performance_schema.objects_summary_global_by_type + WHERE object_schema='test'; + +# +# Verify table views are ignored by the table io instrumentation. +# + +CREATE TABLE test.t1(a INT); +INSERT INTO test.t1 VALUES (1); +CREATE VIEW test.v1 AS SELECT * FROM test.t1; +SELECT COUNT(*) FROM test.v1; + +# Verify that a PFS table share was not created for the view. +SELECT object_schema, object_name FROM performance_schema.objects_summary_global_by_type + WHERE object_schema='test'; + +DROP VIEW test.v1; +DROP TABLE test.t1; + +SELECT object_schema, object_name FROM performance_schema.objects_summary_global_by_type + WHERE object_schema='test'; + + +# +# Bug#45496 Performance schema: assertion fails in +# ha_perfschema::rnd_init:223 +# + +--disable_result_log +SELECT EVENT_ID FROM performance_schema.events_waits_current +WHERE THREAD_ID IN + (SELECT THREAD_ID FROM performance_schema.threads) +AND EVENT_NAME IN + (SELECT NAME FROM performance_schema.setup_instruments + WHERE NAME LIKE "wait/synch/%") +LIMIT 1; +--enable_result_log + +# +# Bug#45088 Should not be able to create tables of engine PERFORMANCE_SCHEMA +# + +--error ER_CANT_CREATE_TABLE +create table test.t1(a int) engine=performance_schema; + +# The table should not appear in OBJECTS_SUMMARY_GLOBAL_BY_TYPE + +SELECT object_schema, object_name FROM performance_schema.objects_summary_global_by_type + WHERE object_schema='test'; + +# +# Bug#44897 Performance Schema: can create a ghost table in another database +# + +--error ER_CANT_CREATE_TABLE +create table test.t1 like performance_schema.events_waits_current; + +# The table should not appear in OBJECTS_SUMMARY_GLOBAL_BY_TYPE + +SELECT object_schema, object_name FROM performance_schema.objects_summary_global_by_type + WHERE object_schema='test'; + +# +# Bug#44898 PerformanceSchema: can create a table in db performance_schema, cannot insert +# + +--error ER_TABLEACCESS_DENIED_ERROR +create table performance_schema.t1(a int); + +# The table should not appear in OBJECTS_SUMMARY_GLOBAL_BY_TYPE + +SELECT object_schema, object_name FROM performance_schema.objects_summary_global_by_type + WHERE object_schema='test'; + +# +# Bug#51447 performance schema evil twin files +# + +--disable_warnings +drop table if exists test.ghost; +--enable_warnings + +create table test.ghost (a int, b int); +alter table test.ghost add index index_a(a); +alter table test.ghost add index index_b(b); +insert into test.ghost values (1, 3); +insert into test.ghost values (2, 4); +select * from test.ghost; + +drop table test.ghost; + +# Shoud return nothing +select * from performance_schema.file_instances + where file_name like "%ghost%"; + +# +# Bug#52586 Misleading error message on attempt to access +# a P_S table using a wrong name + +--error ER_NO_SUCH_TABLE +select * from performance_schema.no_such_table; + +# +# Bug#12370950 - 60905: TABLE_IO_WAITS_SUMMARY_BY_INDEX_USAGE AGGREGATES NON-INSERT DML WRONGLY +# + +--disable_warnings +DROP TABLE IF EXISTS t_60905; +--enable_warnings +CREATE TABLE t_60905 (i INT, j INT, KEY(i)) ENGINE = InnoDB; +INSERT INTO t_60905 VALUES +(1,2), (3,4), (5,6), (7,8), (9,10); + +# should delete with a "single" PRIMARY lookup (2 PRIMARY fetch, 1 PRIMARY delete) +DELETE FROM t_60905 WHERE i = 1; + +# should delete with a full scan (5 NULL fetch, 1 NULL delete) +DELETE FROM t_60905 WHERE j = 8; + +# show the instrument data. +SELECT object_schema, + object_name, + index_name, + count_fetch, + count_insert, + count_update, + count_delete + FROM performance_schema.table_io_waits_summary_by_index_usage + WHERE object_schema = 'test' + AND object_name = 't_60905'; + +DROP TABLE t_60905; + +# +# Bug#71278 NUMBER OF ROWS IN PERFORMANCE SCHEMA TABLES +# + +show global variables like "performance_schema_max_thread_instances"; +explain select * from performance_schema.threads; + +# +# Bug #73082 SHOW EVENTS in performance_schema gives Access Denied +# + +use performance_schema; +show events; +show events from performance_schema; +show events where Db= 'performance_schema'; +use test; + + +# +# Bug#11929832 - EVENTS_STATEMENTS_HISTORY HAS ERRORS=0 WHEN THERE ARE ERRORS +# +# Verify that SQL errors are properly counted. + +use test; +truncate performance_schema.events_statements_history; +truncate performance_schema.events_statements_history_long; + +--error ER_NO_SUCH_TABLE +select * from t1; + +--echo +select mysql_errno, returned_sqlstate, message_text, errors, warnings + from performance_schema.events_statements_history where errors > 0; + +--echo # +select mysql_errno, returned_sqlstate, message_text, errors, warnings from + performance_schema.events_statements_history_long where errors > 0; + +# +# Bug#20519832 - TRUNCATED SQL_TEXT values are not suffixed with '...' +# +# Verify that truncated SQL statements are suffixed with '...' + +use performance_schema; +truncate performance_schema.events_statements_history; + +# Should truncate at 1024 bytes (1024 characters) +select 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' AS A; + +# Should truncate at 1024 bytes (487 characters) + +select _utf8mb4 'ваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑваÑÑ' as B; + +select count(*) from events_statements_history where sql_text like "%..."; + + +# +# MDEV-10486 MariaDB 10.x does not update rows_examined in performance_schema tables +# Verify that the rows_examined counter is set properly. + +use test; +create table t1 (id int); +insert into t1 values (1), (2), (3); +truncate performance_schema.events_statements_history; +select * from t1; +insert into t1 select RAND()*10000 from t1; +select sql_text, rows_examined from performance_schema.events_statements_history; +drop table t1; + +--echo # +--echo # MDEV-17896 Assertion `pfs->get_refcount() > 0' failed +--echo # in release_table_share +--echo # + +# There must be at least one available slot in PFS table_share_array for +# this test to be meaningful. If there are no free slots we must +# restart mysqld, it is the only way to reset PFS table_share_array +let $query= SELECT COUNT(*)<@@performance_schema_max_table_instances FROM + performance_schema.objects_summary_global_by_type WHERE OBJECT_TYPE='TABLE'; + +let $free_slots_available= `$query`; + +if (!$free_slots_available) +{ + source include/restart_mysqld.inc; +} +eval $query; + +CREATE TABLE t0(a INT); + +# TABLE_SHARE must be cached in the table definition cache. +SELECT * FROM t0; + +# Dropping t0 using DROP TEMPORARY frees up a slot in table_share_array, +# but the persistent table is not correctly dropped, i.e. TABLE_SHARE::m_psi +# still points to that slot in table_share_array. +DROP TEMPORARY TABLE IF EXISTS t0; + +# Try re-using each and every slot in PFS table_share_array. If bug is +# there, we re-use t0 slot. +# The newly created table that re-uses the t0 slot ends up +# resetting the PFS_table_share refcount. +let $i= `SELECT @@performance_schema_max_table_instances`; +disable_query_log; +while ($i) +{ + # Memory engine is here to reduce disk IO + eval CREATE TABLE t$i(a INT) ENGINE=MEMORY; + eval DROP TABLE t$i; + dec $i; +} +enable_query_log; + +# FLUSH TABLE crashes the server when PFS_table_share is found with +# an unexpected refcount. +FLUSH TABLE t0; +DROP TABLE t0; + +--echo # +--echo # MDEV-24364 Alter rename table does not remove PFS share +--echo # +create or replace table yt4 (x int) engine innodb; +alter table yt4 rename to t1, algorithm=copy; +drop tables t1; + +select object_type, object_schema, object_name +from performance_schema.objects_summary_global_by_type +where object_schema="test"; + +--echo # +--echo # MDEV-28344: sys.ps_setup_save and dependent procedures fail +--echo # with ER_ILLEGAL_HA_CREATE_OPTION +--echo # + +# It is not allowed to create temporary tables with performance schema +--error ER_ILLEGAL_HA_CREATE_OPTION +CREATE TEMPORARY TABLE t1 (t int) ENGINE = PERFORMANCE_SCHEMA; + +--error ER_ILLEGAL_HA_CREATE_OPTION +CREATE TEMPORARY TABLE t1 LIKE performance_schema.setup_actors; + +SET @default_storage_engine_old = @@default_storage_engine; +SET default_storage_engine = performance_schema; + +--error ER_ILLEGAL_HA_CREATE_OPTION +CREATE TEMPORARY TABLE t1 (t int); + +SET @@default_storage_engine = @default_storage_engine_old;
\ No newline at end of file |