• unknown's avatar
    BUG#20060 - mysqld option "--flush " doesn't work for update statement · a2a5f2b5
    unknown authored
    Problem described in this bug report affects MyISAM tables only.
    
    Running mysqld --flush instructs mysqld to sync all changes to disk
    after each SQL statement. It worked well for INSERT and DELETE
    statements, but it did sync for UPDATE only in case if there was
    index change (change of colum that has an index). If no updated column
    has an index, data wasn't synced to disk.
    
    This fix makes UPDATE statement to sync data to disk even if there is
    no index change (that is only data change) and mysqld is run with
    --flush option.
    
    
    myisam/mi_update.c:
      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.
    a2a5f2b5
mi_update.c 6.88 KB