summaryrefslogtreecommitdiffstats
path: root/mysql-test/main/processlist.test
blob: 7e60f196f657fa6a0a9c1188f36aa4af696805a9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
-- source include/no_view_protocol.inc

#
# MDEV-4578 information_schema.processlist reports incorrect value for Time (2147483647)
#

source include/have_debug.inc;
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';
--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;
set debug_sync='reset';
connection default;

#
# MDEV-4683 query start_time not reset when going to sleep
#

connection con1;
# This DBUG insertion triggers a DEBUG_SYNC signal "query_done" once
# the below SELECT SLEEP(5) has gone from "Query" to "Sleep" command
# state. (We cannot just set the DEBUG_SYNC directly here, because
# then it can trigger at the end of the SET DEBUG_SYNC statement (or
# at the end of the Prepare step of the SELECT, if --ps-protocol),
# thus occuring too early).
SET debug_dbug="+d,sleep_inject_query_done_debug_sync";
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();

disconnect con1;
connection default;
set debug_sync='reset';

--echo End of 5.5 tests

--echo #
--echo # 10.1 tests
--echo #

--echo #
--echo # MDEV-7807 information_schema.processlist truncates queries with binary strings
--echo #

SET NAMES utf8;
--vertical_results
SELECT INFO, INFO_BINARY, 'xxx😎yyy' AS utf8mb4_string FROM INFORMATION_SCHEMA.PROCESSLIST WHERE INFO LIKE '%xxx%yyy%';
--horizontal_results

--echo #
--echo # End of 10.1 tests
--echo #

--echo #
--echo # Start of 10.3 tests
--echo #

--echo #
--echo # MDEV-28131 Unexpected warning while selecting from information_schema.processlist
--echo #

connect (conn1, localhost, root,,);
connection conn1;
let $ID= `select connection_id()`;
send SELECT SLEEP(1000);
connection default;
let $wait_timeout= 10;
let $wait_condition=select count(*)=1 from information_schema.processlist
where state='User sleep' and info='SELECT SLEEP(1000)';
--source include/wait_condition.inc
SELECT progress FROM information_schema.processlist WHERE info='SELECT SLEEP(1000)';
disable_query_log;
eval kill $ID;
enable_query_log;
let $wait_timeout= 10;
let $wait_condition=select count(*)=0 from information_schema.processlist
where state='User sleep' and info='SELECT SLEEP(1000)';
--source include/wait_condition.inc
connection conn1;
--error 2013,ER_CONNECTION_KILLED
reap;
connection default;
disconnect conn1;

--echo #
--echo # End of 10.3 tests
--echo #