diff options
Diffstat (limited to 'myisam/mi_update.c')
-rw-r--r-- | myisam/mi_update.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/myisam/mi_update.c b/myisam/mi_update.c index 672c8407353..00eee18bfab 100644 --- a/myisam/mi_update.c +++ b/myisam/mi_update.c @@ -168,7 +168,17 @@ int mi_update(register MI_INFO *info, const byte *oldrec, byte *newrec) info->update= (HA_STATE_CHANGED | HA_STATE_ROW_CHANGED | HA_STATE_AKTIV | key_changed); myisam_log_record(MI_LOG_UPDATE,info,newrec,info->lastpos,0); - VOID(_mi_writeinfo(info,key_changed ? WRITEINFO_UPDATE_KEYFILE : 0)); + /* + Every myisam function that updates myisam table must end with + call to _mi_writeinfo(). If operation (second param of + _mi_writeinfo()) is not 0 it sets share->changed to 1, that is + flags that data has changed. If operation is 0, this function + equals to no-op in this case. + + mi_update() must always pass !0 value as operation, since even if + there is no index change there could be data change. + */ + VOID(_mi_writeinfo(info, WRITEINFO_UPDATE_KEYFILE)); allow_break(); /* Allow SIGHUP & SIGINT */ if (info->invalidator != 0) { |