summaryrefslogtreecommitdiff
path: root/mysql-test/t/processlist.test
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/t/processlist.test')
-rw-r--r--mysql-test/t/processlist.test19
1 files changed, 18 insertions, 1 deletions
diff --git a/mysql-test/t/processlist.test b/mysql-test/t/processlist.test
index 7a2b33699d5..9c555c0f9fb 100644
--- a/mysql-test/t/processlist.test
+++ b/mysql-test/t/processlist.test
@@ -4,19 +4,22 @@
source include/have_debug_sync.inc;
+let $tid= `SELECT CONNECTION_ID()`;
SET DEBUG_SYNC = 'dispatch_command_before_set_time WAIT_FOR do_set_time';
send SELECT 1;
connect (con1,localhost,root,,);
SET DEBUG_SYNC = 'fill_schema_processlist_after_unow SIGNAL do_set_time WAIT_FOR fill_schema_proceed';
-send SELECT INFO,TIME,TIME_MS FROM INFORMATION_SCHEMA.PROCESSLIST WHERE INFO IS NULL;
+--replace_result $tid TID
+send_eval SELECT ID, TIME,TIME_MS FROM INFORMATION_SCHEMA.PROCESSLIST WHERE CONCAT(":", ID, ":") = ":$tid:";
connection default;
reap;
SET DEBUG_SYNC = 'now SIGNAL fill_schema_proceed';
connection con1;
+--replace_result $tid TID
reap;
connection default;
@@ -25,9 +28,23 @@ connection default;
#
connection con1;
+# Trigger a signal once the thread has gone from "Query" to "Sleep" command
+# state. Note we need to execute this twice: Once at the end of SET DEBUG_SYNC,
+# and once for the intended time, at the end of SELECT SLEEP().
+SET DEBUG_SYNC = 'dispatch_command_end SIGNAL query_done EXECUTE 2';
+connection default;
+# Wait for and clear the first signal set during SET DEBUG_SYNC.
+SET DEBUG_SYNC= 'now WAIT_FOR query_done';
+SET DEBUG_SYNC= 'now SIGNAL nosignal';
+connection con1;
select sleep(5); #run a query that will take some time
connection default;
+# Need to ensure that the previous query has really completed. Otherwise,
+# the select could see the previous query still in "Query" stage in the
+# processlist.
+SET DEBUG_SYNC = 'now WAIT_FOR query_done';
+
# verify that the time in COM_SLEEP doesn't include the query run time
select command, time < 5 from information_schema.processlist where id != connection_id();