Skip to content

Commit 7dd137c

Browse files
committed
MDEV-6756: map a linux pid (child pid) to a connection id shown in the output of SHOW PROCESSLIST
Added tid (thread ID) for system where it is present. ps -eL -o tid,pid,command shows the thread on Linux
1 parent d9b25ae commit 7dd137c

14 files changed

+165
-123
lines changed

config.h.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@
8787
#cmakedefine HAVE_SYS_UTSNAME_H 1
8888
#cmakedefine HAVE_SYS_STAT_H 1
8989
#cmakedefine HAVE_SYS_STREAM_H 1
90+
#cmakedefine HAVE_SYS_SYSCALL_H 1
9091
#cmakedefine HAVE_SYS_TERMCAP_H 1
9192
#cmakedefine HAVE_SYS_TIMEB_H 1
9293
#cmakedefine HAVE_SYS_TIMES_H 1

configure.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,7 @@ CHECK_INCLUDE_FILES ("sys/types.h;sys/shm.h" HAVE_SYS_SHM_H)
228228
CHECK_INCLUDE_FILES (sys/socket.h HAVE_SYS_SOCKET_H)
229229
CHECK_INCLUDE_FILES (sys/stat.h HAVE_SYS_STAT_H)
230230
CHECK_INCLUDE_FILES (sys/stream.h HAVE_SYS_STREAM_H)
231+
CHECK_INCLUDE_FILES (sys/syscall.h HAVE_SYS_SYSCALL_H)
231232
CHECK_INCLUDE_FILES (sys/termcap.h HAVE_SYS_TERMCAP_H)
232233
CHECK_INCLUDE_FILES ("curses.h;term.h" HAVE_TERM_H)
233234
CHECK_INCLUDE_FILES (asm/termbits.h HAVE_ASM_TERMBITS_H)

mysql-test/r/create.result

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1926,7 +1926,8 @@ t1 CREATE TABLE `t1` (
19261926
`MEMORY_USED` int(7) NOT NULL DEFAULT '0',
19271927
`EXAMINED_ROWS` int(7) NOT NULL DEFAULT '0',
19281928
`QUERY_ID` bigint(4) NOT NULL DEFAULT '0',
1929-
`INFO_BINARY` blob
1929+
`INFO_BINARY` blob,
1930+
`TID` bigint(4) NOT NULL DEFAULT '0'
19301931
) DEFAULT CHARSET=utf8
19311932
drop table t1;
19321933
create temporary table t1 like information_schema.processlist;
@@ -1948,7 +1949,8 @@ t1 CREATE TEMPORARY TABLE `t1` (
19481949
`MEMORY_USED` int(7) NOT NULL DEFAULT '0',
19491950
`EXAMINED_ROWS` int(7) NOT NULL DEFAULT '0',
19501951
`QUERY_ID` bigint(4) NOT NULL DEFAULT '0',
1951-
`INFO_BINARY` blob
1952+
`INFO_BINARY` blob,
1953+
`TID` bigint(4) NOT NULL DEFAULT '0'
19521954
) DEFAULT CHARSET=utf8
19531955
drop table t1;
19541956
create table t1 like information_schema.character_sets;
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#
2+
# MDEV-6756: map a linux pid (child pid) to a connection id shown in
3+
# the output of SHOW PROCESSLIST
4+
#
5+
SELECT max(tid) != min(tid) FROM information_schema.processlist;
6+
max(tid) != min(tid)
7+
1

mysql-test/suite/funcs_1/datadict/datadict_priv.inc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@ eval INSERT INTO $table SELECT * FROM test.t_$table;
4848
eval DROP TABLE test.t_$table;
4949

5050
--error ER_VIEW_NONUPD_CHECK
51-
eval CREATE VIEW test.v_$table ($columns) AS SELECT * FROM $table WITH CHECK OPTION;
51+
eval CREATE VIEW test.v_$table ($columns) AS SELECT $columns FROM $table WITH CHECK OPTION;
5252

53-
eval CREATE VIEW test.v_$table ($columns) AS SELECT * FROM $table;
53+
eval CREATE VIEW test.v_$table ($columns) AS SELECT $columns FROM $table;
5454

5555
# !!! This query returns a wrong error due to a bug in the code of mwl106
5656
# !!! Uncomment it when the bug is fixed

mysql-test/suite/funcs_1/datadict/processlist_priv.inc

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -158,9 +158,9 @@ WHERE DB = 'information_schema' AND COMMAND = 'Sleep' AND USER = 'ddicttestuser1
158158
eval SHOW CREATE TABLE $table;
159159
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
160160
eval SHOW $table;
161-
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS 13 MEMORY 14 ROWS 15 QUERY_ID
161+
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS 13 MEMORY 14 ROWS 15 QUERY_ID 17 TID
162162
eval SELECT * FROM $table $select_where ORDER BY id;
163-
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS 13 MEMORY 14 ROWS 15 QUERY_ID
163+
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS 13 MEMORY 14 ROWS 15 QUERY_ID 17 TID
164164
eval SELECT $columns FROM $table $select_where ORDER BY id;
165165
--source suite/funcs_1/datadict/datadict_priv.inc
166166
--real_sleep 0.3
@@ -178,9 +178,9 @@ connection con100;
178178
eval SHOW CREATE TABLE $table;
179179
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
180180
eval SHOW $table;
181-
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS 13 MEMORY 14 ROWS 15 QUERY_ID
181+
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS 13 MEMORY 14 ROWS 15 QUERY_ID 17 TID
182182
eval SELECT * FROM $table $select_where ORDER BY id;
183-
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS 13 MEMORY 14 ROWS 15 QUERY_ID
183+
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS 13 MEMORY 14 ROWS 15 QUERY_ID 17 TID
184184
eval SELECT $columns FROM $table $select_where ORDER BY id;
185185
--source suite/funcs_1/datadict/datadict_priv.inc
186186
--real_sleep 0.3
@@ -204,7 +204,7 @@ connection con100;
204204
SHOW GRANTS;
205205
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
206206
SHOW processlist;
207-
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS 13 MEMORY 14 ROWS 15 QUERY_ID
207+
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS 13 MEMORY 14 ROWS 15 QUERY_ID 17 TID
208208
SELECT * FROM information_schema.processlist;
209209
--real_sleep 0.3
210210

@@ -216,7 +216,7 @@ connect (con101,localhost,ddicttestuser1,ddictpass,information_schema);
216216
SHOW GRANTS;
217217
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
218218
SHOW processlist;
219-
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS 13 MEMORY 14 ROWS 15 QUERY_ID
219+
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS 13 MEMORY 14 ROWS 15 QUERY_ID 17 TID
220220
SELECT * FROM information_schema.processlist;
221221
--real_sleep 0.3
222222

@@ -239,7 +239,7 @@ connect (anonymous1,localhost,"''",,information_schema);
239239
SHOW GRANTS;
240240
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
241241
SHOW processlist;
242-
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS 13 MEMORY 14 ROWS 15 QUERY_ID
242+
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS 13 MEMORY 14 ROWS 15 QUERY_ID 17 TID
243243
SELECT * FROM information_schema.processlist;
244244
--real_sleep 0.3
245245

@@ -261,7 +261,7 @@ connect (con102,localhost,ddicttestuser1,ddictpass,information_schema);
261261
SHOW GRANTS;
262262
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
263263
SHOW processlist;
264-
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS 13 MEMORY 14 ROWS 15 QUERY_ID
264+
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS 13 MEMORY 14 ROWS 15 QUERY_ID 17 TID
265265
SELECT * FROM information_schema.processlist;
266266
--real_sleep 0.3
267267

@@ -287,7 +287,7 @@ if ($fixed_bug_30395)
287287
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
288288
SHOW processlist;
289289
}
290-
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS 13 MEMORY 14 ROWS 15 QUERY_ID
290+
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS 13 MEMORY 14 ROWS 15 QUERY_ID 17 TID
291291
SELECT * FROM information_schema.processlist;
292292
--real_sleep 0.3
293293

@@ -308,7 +308,7 @@ connect (con103,localhost,ddicttestuser1,ddictpass,information_schema);
308308
SHOW GRANTS FOR 'ddicttestuser1'@'localhost';
309309
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
310310
SHOW processlist;
311-
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS 13 MEMORY 14 ROWS 15 QUERY_ID
311+
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS 13 MEMORY 14 ROWS 15 QUERY_ID 17 TID
312312
SELECT * FROM information_schema.processlist;
313313
--real_sleep 0.3
314314

@@ -330,7 +330,7 @@ connect (con104,localhost,ddicttestuser1,ddictpass,information_schema);
330330
SHOW GRANTS FOR 'ddicttestuser1'@'localhost';
331331
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
332332
SHOW processlist;
333-
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS 13 MEMORY 14 ROWS 15 QUERY_ID
333+
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS 13 MEMORY 14 ROWS 15 QUERY_ID 17 TID
334334
SELECT * FROM information_schema.processlist;
335335
--real_sleep 0.3
336336

@@ -377,7 +377,7 @@ connect (con200,localhost,ddicttestuser2,ddictpass,information_schema);
377377
SHOW GRANTS FOR 'ddicttestuser2'@'localhost';
378378
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
379379
SHOW processlist;
380-
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS 13 MEMORY 14 ROWS 15 QUERY_ID
380+
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS 13 MEMORY 14 ROWS 15 QUERY_ID 17 TID
381381
SELECT * FROM information_schema.processlist;
382382
--real_sleep 0.3
383383

@@ -398,7 +398,7 @@ connect (con201,localhost,ddicttestuser2,ddictpass,information_schema);
398398
SHOW GRANTS;
399399
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
400400
SHOW processlist;
401-
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS 13 MEMORY 14 ROWS 15 QUERY_ID
401+
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS 13 MEMORY 14 ROWS 15 QUERY_ID 17 TID
402402
SELECT * FROM information_schema.processlist;
403403
--real_sleep 0.3
404404

@@ -421,7 +421,7 @@ SHOW GRANTS FOR 'ddicttestuser1'@'localhost';
421421
GRANT PROCESS ON *.* TO 'ddicttestuser2'@'localhost';
422422
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
423423
SHOW processlist;
424-
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS 13 MEMORY 14 ROWS 15 QUERY_ID
424+
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS 13 MEMORY 14 ROWS 15 QUERY_ID 17 TID
425425
SELECT * FROM information_schema.processlist;
426426
--real_sleep 0.3
427427

@@ -445,7 +445,7 @@ connect (con108,localhost,ddicttestuser1,ddictpass,information_schema);
445445
SHOW GRANTS FOR 'ddicttestuser1'@'localhost';
446446
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
447447
SHOW processlist;
448-
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS 13 MEMORY 14 ROWS 15 QUERY_ID
448+
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS 13 MEMORY 14 ROWS 15 QUERY_ID 17 TID
449449
SELECT * FROM information_schema.processlist;
450450
--real_sleep 0.3
451451

mysql-test/suite/funcs_1/datadict/processlist_val.inc

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ echo
9292
# - INFO must contain the corresponding SHOW/SELECT PROCESSLIST
9393
#
9494
# 1. Just dump what we get
95-
--replace_column 1 <ID> 3 <HOST_NAME> 6 <TIME> 9 <TIME_MS> 13 <MEMORY> 14 <ROWS> 15 <QUERY_ID>
95+
--replace_column 1 <ID> 3 <HOST_NAME> 6 <TIME> 9 <TIME_MS> 13 <MEMORY> 14 <ROWS> 15 <QUERY_ID> 17 <TID>
9696
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;
9797
--replace_column 1 <ID> 3 <HOST_NAME> 6 <TIME> 9 <TIME_MS> 13 <MEMORY> 14 <ROWS>
9898
SHOW FULL PROCESSLIST;
@@ -165,7 +165,7 @@ let $wait_condition= SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST
165165
WHERE COMMAND = 'Sleep' AND USER = 'test_user';
166166
--source include/wait_condition.inc
167167
# 1. Just dump what we get
168-
--replace_column 1 <ID> 3 <HOST_NAME> 6 <TIME> 7 <STATE> 9 <TIME_MS> 13 <MEMORY> 14 <ROWS> 15 <QUERY_ID>
168+
--replace_column 1 <ID> 3 <HOST_NAME> 6 <TIME> 7 <STATE> 9 <TIME_MS> 13 <MEMORY> 14 <ROWS> 15 <QUERY_ID> 17 <TID>
169169
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;
170170
--replace_column 1 <ID> 3 <HOST_NAME> 6 <TIME>
171171
SHOW FULL PROCESSLIST;
@@ -210,7 +210,7 @@ echo
210210
# ----- switch to connection con1 (user = test_user) -----
211211
;
212212
connection con1;
213-
--replace_column 1 <ID> 3 <HOST_NAME> 6 <TIME> 9 <TIME_MS> 13 <MEMORY> 14 <ROWS> 15 <QUERY_ID>
213+
--replace_column 1 <ID> 3 <HOST_NAME> 6 <TIME> 9 <TIME_MS> 13 <MEMORY> 14 <ROWS> 15 <QUERY_ID> 17 <TID>
214214
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;
215215
--replace_column 1 <ID> 3 <HOST_NAME> 6 <TIME>
216216
SHOW FULL PROCESSLIST;
@@ -244,7 +244,7 @@ echo
244244
;
245245
connection con2;
246246
# Just dump what we get
247-
--replace_column 1 <ID> 3 <HOST_NAME> 6 <TIME> 9 <TIME_MS> 13 <MEMORY> 14 <ROWS> 15 <QUERY_ID>
247+
--replace_column 1 <ID> 3 <HOST_NAME> 6 <TIME> 9 <TIME_MS> 13 <MEMORY> 14 <ROWS> 15 <QUERY_ID> 17 <TID>
248248
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;
249249
--replace_column 1 <ID> 3 <HOST_NAME> 6 <TIME>
250250
SHOW FULL PROCESSLIST;
@@ -304,7 +304,7 @@ WHERE ID = @test_user_con2_id AND Command IN('Query','Execute')
304304
AND State = 'User sleep' AND INFO IS NOT NULL ;
305305
--source include/wait_condition.inc
306306
# 1. Just dump what we get
307-
--replace_column 1 <ID> 3 <HOST_NAME> 6 <TIME> 9 <TIME_MS> 13 <MEMORY> 14 <ROWS> 15 <QUERY_ID>
307+
--replace_column 1 <ID> 3 <HOST_NAME> 6 <TIME> 9 <TIME_MS> 13 <MEMORY> 14 <ROWS> 15 <QUERY_ID> 17 <TID>
308308
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;
309309
--replace_column 1 <ID> 3 <HOST_NAME> 6 <TIME>
310310
SHOW FULL PROCESSLIST;
@@ -375,7 +375,7 @@ let $wait_condition= SELECT COUNT(*) FROM INFORMATION_SCHEMA.PROCESSLIST
375375
#
376376
# Expect to see the state 'Waiting for table metadata lock' for the third
377377
# connection because the SELECT collides with the WRITE TABLE LOCK.
378-
--replace_column 1 <ID> 3 <HOST_NAME> 6 <TIME> 9 <TIME_MS> 13 <MEMORY> 14 <ROWS> 15 <QUERY_ID>
378+
--replace_column 1 <ID> 3 <HOST_NAME> 6 <TIME> 9 <TIME_MS> 13 <MEMORY> 14 <ROWS> 15 <QUERY_ID> 17 <TID>
379379
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;
380380
UNLOCK TABLES;
381381
#
@@ -434,7 +434,7 @@ echo
434434
# SHOW FULL PROCESSLIST Complete statement
435435
# SHOW PROCESSLIST statement truncated after 100 char
436436
;
437-
--replace_column 1 <ID> 3 <HOST_NAME> 5 <COMMAND> 6 <TIME> 7 <STATE> 9 <TIME_MS> 13 <MEMORY> 14 <ROWS> 15 <QUERY_ID>
437+
--replace_column 1 <ID> 3 <HOST_NAME> 5 <COMMAND> 6 <TIME> 7 <STATE> 9 <TIME_MS> 13 <MEMORY> 14 <ROWS> 15 <QUERY_ID> 17 <TID>
438438
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;
439439
--replace_column 1 <ID> 3 <HOST_NAME> 5 <COMMAND> 6 <TIME> 7 <STATE>
440440
SHOW FULL PROCESSLIST;

mysql-test/suite/funcs_1/r/is_columns_is.result

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,7 @@ def information_schema PROCESSLIST PROGRESS 12 0.000 NO decimal NULL NULL 7 3 NU
265265
def information_schema PROCESSLIST QUERY_ID 15 0 NO bigint NULL NULL 19 0 NULL NULL NULL bigint(4) select
266266
def information_schema PROCESSLIST STAGE 10 0 NO tinyint NULL NULL 3 0 NULL NULL NULL tinyint(2) select
267267
def information_schema PROCESSLIST STATE 7 NULL YES varchar 64 192 NULL NULL NULL utf8 utf8_general_ci varchar(64) select
268+
def information_schema PROCESSLIST TID 17 0 NO bigint NULL NULL 19 0 NULL NULL NULL bigint(4) select
268269
def information_schema PROCESSLIST TIME 6 0 NO int NULL NULL 10 0 NULL NULL NULL int(7) select
269270
def information_schema PROCESSLIST TIME_MS 9 0.000 NO decimal NULL NULL 22 3 NULL NULL NULL decimal(22,3) select
270271
def information_schema PROCESSLIST USER 2 NO varchar 128 384 NULL NULL NULL utf8 utf8_general_ci varchar(128) select
@@ -795,6 +796,7 @@ NULL information_schema PROCESSLIST MEMORY_USED int NULL NULL NULL NULL int(7)
795796
NULL information_schema PROCESSLIST EXAMINED_ROWS int NULL NULL NULL NULL int(7)
796797
NULL information_schema PROCESSLIST QUERY_ID bigint NULL NULL NULL NULL bigint(4)
797798
1.0000 information_schema PROCESSLIST INFO_BINARY blob 65535 65535 NULL NULL blob
799+
NULL information_schema PROCESSLIST TID bigint NULL NULL NULL NULL bigint(4)
798800
3.0000 information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
799801
3.0000 information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
800802
3.0000 information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)

0 commit comments

Comments
 (0)