Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 4 of 4 total
Thread Verifytable is not reliable
Tue, Sep 23 2008 5:06 PMPermanent Link

Steve Baker
Hello...

I have run in to a couple of problems where a table has some corruption, but VerifyTable returns TRUE, even though the problems are identified and reported in the log
file.  The reported error can be fixed by the repairtable function.  The problem though is that VerifyTable does not return false, even though it has found a problem and
reported it in the log file.  If you depend on the return value of VerifyTable to then run RepairTable, you will never repair the table because the return value of VerifyTable
is not correct.  This can be duplicated in code, and also using the Database System Utility.

Example:  

VerifyTable returned TRUE after verifiying the following table, yet reported corruption in the log file:

    Verification of table TempSkeds started at 09/23/08 3:20:57 PM
    Invalid or corrupt text indexing parameters in index
    Verification of table TempSkeds completed at 09/23/08 3:20:57 PM

If Repairtable is run on this database, the following report is generated in the log file:

 Repair of table TempSkeds started at 9/23/2008 3:39:04 PM...
 Invalid or corrupt text indexing parameters in index, error fixed...
 Indexes do not match record data and are invalid, starting to fix indexes...
 Invalid indexes fixed...
 Repair of table TempSkeds completed at 9/23/2008 3:39:04 PM...

This means we can't rely on VerifyTable.  The only work around I can think of is to run repairtable on every table every time we open it.  All our options currently in the
distributed applications rely on VerifyTable, so I have no way for force RepairTable to run if VerifyTable does not return false.  
Tue, Sep 23 2008 5:12 PMPermanent Link

Steve Baker
Version 4.26 (4.26 Build 3)
Wed, Sep 24 2008 7:03 AMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Steve,

<< I have run in to a couple of problems where a table has some corruption,
but VerifyTable returns TRUE, even though the problems are identified and
reported in the log file.  The reported error can be fixed by the
repairtable function.  The problem though is that VerifyTable does not
return false, even though it has found a problem and
reported it in the log file.  If you depend on the return value of
VerifyTable to then run RepairTable, you will never repair the table because
the return value of VerifyTable is not correct.  This can be duplicated in
code, and also using the Database System Utility. >>

I've corrected this for the 4.27 release of DBISAM, which should be
available in a week or so.

--
Tim Young
Elevate Software
www.elevatesoft.com

Wed, Sep 24 2008 7:31 PMPermanent Link

Steve Baker
Thanks Tim
/steve


>>I've corrected this for the 4.27 release of DBISAM, which should be
>>available in a week or so.
Image