summaryrefslogtreecommitdiff
path: root/mysql-test/suite/perfschema/t/myisam_file_io.test
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/suite/perfschema/t/myisam_file_io.test')
-rw-r--r--mysql-test/suite/perfschema/t/myisam_file_io.test59
1 files changed, 59 insertions, 0 deletions
diff --git a/mysql-test/suite/perfschema/t/myisam_file_io.test b/mysql-test/suite/perfschema/t/myisam_file_io.test
new file mode 100644
index 00000000000..5888c29fe22
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/myisam_file_io.test
@@ -0,0 +1,59 @@
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+# Setup
+
+update performance_schema.setup_instruments set enabled='NO';
+update performance_schema.setup_instruments set enabled='YES'
+ where name like "wait/io/file/myisam/%";
+
+update performance_schema.setup_consumers
+ set enabled='YES';
+
+truncate table performance_schema.events_waits_history_long;
+
+# Reset lost counters to a known state
+flush status;
+
+# Code to test
+
+--disable_warnings
+drop table if exists test.no_index_tab;
+--enable_warnings
+
+create table test.no_index_tab ( a varchar(255), b int ) engine=myisam;
+insert into no_index_tab set a = 'foo', b = 1;
+insert into no_index_tab set a = 'foo', b = 1;
+insert into no_index_tab set a = 'foo', b = 1;
+
+# Verification
+# Note that mi_create.c contains mysql_file_tell() calls in debug only,
+# so the result are filtered to remove 'tell'.
+# Note that even after setting other instruments to enabled='NO'
+# and truncating the events_waits_history_long table,
+# some events -- that were already started but not completed --
+# for other instruments could still be added in the history.
+# To protect against that, an extra where clause
+# "and event_name like "wait/io/file/myisam/%"
+# is added to the select to filter out the result.
+
+select event_name,
+ left(source, locate(":", source)) as short_source,
+ operation, number_of_bytes,
+ substring(object_name, locate("no_index_tab", object_name)) as short_name
+ from performance_schema.events_waits_history_long
+ where operation not like "tell"
+ and event_name like "wait/io/file/myisam/%"
+ order by thread_id, event_id;
+
+# In case of failures, this will tell if file io are lost.
+show status like 'performance_schema_%';
+
+# Cleanup
+
+update performance_schema.setup_instruments set enabled='YES';
+
+drop table test.no_index_tab;
+