diff options
Diffstat (limited to 'storage/maria/ma_update.c')
-rw-r--r-- | storage/maria/ma_update.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/storage/maria/ma_update.c b/storage/maria/ma_update.c index 4051da022c0..0a726c1b7f9 100644 --- a/storage/maria/ma_update.c +++ b/storage/maria/ma_update.c @@ -74,7 +74,8 @@ int maria_update(register MARIA_HA *info, const uchar *oldrec, uchar *newrec) goto err_end; } } - if (_ma_mark_file_changed(info)) + + if (_ma_mark_file_changed(share)) { save_errno=my_errno; goto err_end; @@ -215,7 +216,10 @@ err: { if ((flag++ && _ma_ft_del(info,i,new_key_buff,newrec,pos)) || _ma_ft_add(info,i,old_key_buff,oldrec,pos)) + { + _ma_set_fatal_error(share, my_errno); break; + } } else { @@ -227,25 +231,23 @@ err: oldrec, pos, info->cur_row.trid); if ((flag++ && _ma_ck_delete(info, &new_key)) || _ma_ck_write(info, &old_key)) + { + _ma_set_fatal_error(share, my_errno); break; + } } } } while (i-- != 0); } else - { - maria_print_error(share, HA_ERR_CRASHED); - maria_mark_crashed(info); - } + _ma_set_fatal_error(share, save_errno); + info->update= (HA_STATE_CHANGED | HA_STATE_AKTIV | HA_STATE_ROW_CHANGED | key_changed); err_end: _ma_writeinfo(info, WRITEINFO_UPDATE_KEYFILE); if (save_errno == HA_ERR_KEY_NOT_FOUND) - { - maria_print_error(share, HA_ERR_CRASHED); - save_errno=HA_ERR_CRASHED; - } + _ma_set_fatal_error(share, HA_ERR_CRASHED); DBUG_RETURN(my_errno=save_errno); } /* maria_update */ |