Commit d09c60cf authored by Sergey Vojtovich's avatar Sergey Vojtovich

MDEV-8571 - After mysqloptimize sometimes one of the tables is marked as crashed

OPTIMIZE TABLE against MyISAM/Aria table may fail and leave stale temporary file
if mysql_file_create() returns 0 file descriptor. This was due to wrong
condition, which considered 0 as failure.

5.5 doesn't have fix for MDEV-5679, thus 0 file descriptor is always occupied
by stdin and this bug is not reproducible.

10.1 has fix for MDEV-8475, which hides this bug.

No test case since it mostly depends on how OS returns file descriptors.
parent 537c750e
......@@ -3105,7 +3105,7 @@ int maria_sort_index(HA_CHECK *param, register MARIA_HA *info, char *name)
fn_format(param->temp_filename,name,"", MARIA_NAME_IEXT,2+4+32);
if ((new_file=mysql_file_create(key_file_kfile, fn_format(param->temp_filename,param->temp_filename,
"", INDEX_TMP_EXT,2+4),
0,param->tmpfile_createflag,MYF(0))) <= 0)
0, param->tmpfile_createflag, MYF(0))) < 0)
{
_ma_check_print_error(param,"Can't create new tempfile: '%s'",
param->temp_filename);
......
......@@ -1930,7 +1930,7 @@ int mi_sort_index(HA_CHECK *param, register MI_INFO *info, char * name)
fn_format(param->temp_filename,
param->temp_filename,
"", INDEX_TMP_EXT, 2+4),
0, param->tmpfile_createflag, MYF(0))) <= 0)
0, param->tmpfile_createflag, MYF(0))) < 0)
{
mi_check_print_error(param,"Can't create new tempfile: '%s'",
param->temp_filename);
......
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