Icon View Incident Report

Serious Serious
Reported By: Andrew Hill
Reported On: 12/6/2008
For: Version 2.02 Build 4
# 2865 Index Navigation Can Skip Rows Due to Read-Ahead Optimization

My table repair routines that when executed (on good data) blew away half my data (non recoverable).

// Students
    try
      if Query1.Active then Query1.Close;
      Query1.SQL.Clear;
      Query1.SQL.Add('OPTIMIZE TABLE Students USING LastNameFamilyPositionFirstName ;');
      Query1.ExecSQL;
    except
      try
        if Query1.Active then Query1.Close;
        Query1.SQL.Clear;
        Query1.SQL.Add('REPAIR TABLE Students ;');
        Query1.ExecSQL;
      except
        MyMessageDlg('Unable To Optimize Students Table, '+
                     'Please Contact Axfite !', mtInformation,
                     [mbOK], 0, frmMain, mrOK, []);
      end;
    end;



Comments Comments
The issue was the OPTIMIZE TABLE execution, but the general problem is that the read-ahead calculations that can occur during Next or Prior type of index navigations can cause rows to be skipped. This was causing the OPTIMIZE TABLE to skip source rows when moving rows into the new, re-organized copy of the table. This is a very serious error and can affect many operations in your application, so you should immediately update your application to use 2.02 Build 5 if it is currently using 2.02 Build 4.


Resolution Resolution
Fixed Problem on 12/6/2008 in version 2.02 build 5


Products Affected Products Affected
ElevateDB Additional Software and Utilities
ElevateDB DAC Client-Server
ElevateDB DAC Client-Server with Source
ElevateDB DAC Standard
ElevateDB DAC Standard with Source
ElevateDB DAC Trial
ElevateDB LCL Standard with Source
ElevateDB VCL Client-Server
ElevateDB VCL Client-Server with Source
ElevateDB VCL Standard
ElevateDB VCL Standard with Source
ElevateDB VCL Trial

Image