Commit 099ce1dd authored by Alexander Barkov's avatar Alexander Barkov

MDEV-11348 LOAD DATA LOCAL INFILE crashes the server on loading a backslash...

MDEV-11348 LOAD DATA LOCAL INFILE crashes the server on loading a backslash followed by a multi-byte character

The crash happened when if my_error() was called for any reasons during loading
(e.g. a bad multi-byte sequence or a bad GEOMETRY value was found).
The server sent both error and progress packets, so the client disconnected.
The server then crashed on a assert about a wrong packet order in Debug build.
The server also tried to read from a closed socket when calling
READ_INFO::skip_data_till_eof().

As the crash happened only with "mysql" running in interactive mode,
no tests are possible. The problem was not reproducible with
"mysqltest" or "mysql" in batch mode.
parent 03ddc19a
...@@ -521,6 +521,7 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list, ...@@ -521,6 +521,7 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
*enclosed, skip_lines, ignore); *enclosed, skip_lines, ignore);
thd_proc_info(thd, "End bulk insert"); thd_proc_info(thd, "End bulk insert");
if (!error)
thd_progress_next_stage(thd); thd_progress_next_stage(thd);
if (thd->locked_tables_mode <= LTM_LOCK_TABLES && if (thd->locked_tables_mode <= LTM_LOCK_TABLES &&
table->file->ha_end_bulk_insert() && !error) table->file->ha_end_bulk_insert() && !error)
......
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