mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
MDEV-8836 - Server crashed in my_copy_8bit on querying I_S.PROCESSLIST
Fixed race condition in code filling INFORMATION_SCHEMA.PROCESSLIST.INFO_BINARY. When loading query string/length of another connection one must have LOCK_thd_data locked.
This commit is contained in:
@ -2888,6 +2888,15 @@ int fill_schema_processlist(THD* thd, TABLE_LIST* tables, COND* cond)
|
|||||||
table->field[7]->set_notnull();
|
table->field[7]->set_notnull();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* INFO_BINARY */
|
||||||
|
if (tmp->query())
|
||||||
|
{
|
||||||
|
table->field[15]->store(tmp->query(),
|
||||||
|
MY_MIN(PROCESS_LIST_INFO_WIDTH,
|
||||||
|
tmp->query_length()), &my_charset_bin);
|
||||||
|
table->field[15]->set_notnull();
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Progress report. We need to do this under a lock to ensure that all
|
Progress report. We need to do this under a lock to ensure that all
|
||||||
is from the same stage.
|
is from the same stage.
|
||||||
@ -2916,15 +2925,6 @@ int fill_schema_processlist(THD* thd, TABLE_LIST* tables, COND* cond)
|
|||||||
/* QUERY_ID */
|
/* QUERY_ID */
|
||||||
table->field[14]->store(tmp->query_id, TRUE);
|
table->field[14]->store(tmp->query_id, TRUE);
|
||||||
|
|
||||||
/* INFO_BINARY */
|
|
||||||
if (tmp->query())
|
|
||||||
{
|
|
||||||
table->field[15]->store(tmp->query(),
|
|
||||||
MY_MIN(PROCESS_LIST_INFO_WIDTH,
|
|
||||||
tmp->query_length()), &my_charset_bin);
|
|
||||||
table->field[15]->set_notnull();
|
|
||||||
}
|
|
||||||
|
|
||||||
table->field[16]->store(tmp->os_thread_id);
|
table->field[16]->store(tmp->os_thread_id);
|
||||||
|
|
||||||
if (schema_table_store_record(thd, table))
|
if (schema_table_store_record(thd, table))
|
||||||
|
Reference in New Issue
Block a user