diff options
author | Alexander Barkov <bar@mariadb.org> | 2016-11-25 15:59:47 +0400 |
---|---|---|
committer | Alexander Barkov <bar@mariadb.org> | 2016-11-25 15:59:47 +0400 |
commit | 099ce1dda1291eb4ef789039db400ee380d75376 (patch) | |
tree | e1100d3eb6cdfcbc5253b3ae1c29a72203475e86 | |
parent | 03ddc19ab21d585f4aac16ad91e5cba39687cd31 (diff) | |
download | mariadb-git-099ce1dda1291eb4ef789039db400ee380d75376.tar.gz |
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.
-rw-r--r-- | sql/sql_load.cc | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sql/sql_load.cc b/sql/sql_load.cc index a21fc692ecc..af4b25185d0 100644 --- a/sql/sql_load.cc +++ b/sql/sql_load.cc @@ -521,7 +521,8 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list, *enclosed, skip_lines, ignore); thd_proc_info(thd, "End bulk insert"); - thd_progress_next_stage(thd); + if (!error) + thd_progress_next_stage(thd); if (thd->locked_tables_mode <= LTM_LOCK_TABLES && table->file->ha_end_bulk_insert() && !error) { |