Commit c2854c78 authored by Oleksandr Byelkin's avatar Oleksandr Byelkin

MDEV-20466: SHOW PROCESSLIST truncates query text on \0 bytes

Data should be sent with length.
parent ea61b796
......@@ -17,3 +17,4 @@ select command, time < 5 from information_schema.processlist where id != connect
command time < 5
Sleep 1
set debug_sync='reset';
End of 5.5 tests
......@@ -50,3 +50,5 @@ select command, time < 5 from information_schema.processlist where id != connect
disconnect con1;
set debug_sync='reset';
--echo End of 5.5 tests
--echo # This test has a result that includes \0 byte.
--echo # Such a byte makes diff to treat the whole file as binary,
--echo # and to refuse to diff it.
--echo # That's why this test is put in a separate file,
--echo # so that diff would still work on results of other tests.
source include/have_debug.inc;
source include/have_debug_sync.inc;
--echo #
--echo # MDEV-20466: SHOW PROCESSLIST truncates query text on \0 bytes
--echo #
connect (con1,localhost,root,,);
#select * from information_schema.processlist;
connection con1;
let $q= `select CONCAT("SELECT user FROM mysql.user WHERE user ='some", CHAR(0), "' or sleep (3)")`;
SET DEBUG_SYNC= 'before_join_optimize SIGNAL in_sync';
--send_eval $q;
connection default;
SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
SHOW PROCESSLIST;
disconnect con1;
SET DEBUG_SYNC = 'RESET';
--echo End of 5.5 tests
......@@ -2278,8 +2278,12 @@ void mysqld_list_processes(THD *thd,const char *user, bool verbose)
else
protocol->store_null();
protocol->store(thd_info->state_info, system_charset_info);
protocol->store(thd_info->query_string.str(),
thd_info->query_string.charset());
if (thd_info->query_string.length())
protocol->store(thd_info->query_string.str(),
thd_info->query_string.length(),
thd_info->query_string.charset());
else
protocol->store_null();
if (!thd->variables.old_mode &&
!(thd->variables.old_behavior & OLD_MODE_NO_PROGRESS_INFO))
protocol->store(thd_info->progress, 3, &store_buffer);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment