Icon View Incident Report

Serious Serious
Reported By: Jason Wilson
Reported On: 8/18/2009
For: Version 4.28 Build 4
# 3037 DBISAM Not Re-Using BLOB Blocks for Deleted Records Properly

I’m having an issue with DBISAM 4.28 related to the BLB file growing ever larger, even when records within the corresponding table are deleted.

The back story: my app uses an in-memory table to store the state of real-time activity that it is tracking. Periodically (roughly once a minute) the records in a disk-based version of the table are deleted and the memory records are copied out to the disk table. The premise being that if there is either a deliberate or unplanned shutdown, I can restore the state of the system from the disk table when the app is restarted.

Here’s the problem, since I’ve updated the system from DBISAM 3.30 to DBISAM 4.28 a few weeks ago, the above disk table’s BLB file has continued to grow to the point that now the 4GB file size limit has been reached.


Comments Comments
DBISAM was improperly clearing the BLOB block pointers in deleted records when they were re-used, thus preventing the BLOB blocks for the record from being re-used.

To correct any issues with wasted space in a table, just call the TDBISAMTable.OptimizeTable method or the OPTIMIZE TABLE SQL statement in order to remove the deleted space from the table.


Resolution Resolution
Fixed Problem on 8/19/2009 in version 4.28 build 5


Products Affected Products Affected
DBISAM Additional Software and Utilities
DBISAM ODBC Client-Server
DBISAM ODBC Client-Server with Source
DBISAM ODBC Standard
DBISAM ODBC Standard with Source
DBISAM ODBC Trial
DBISAM VCL Client-Server
DBISAM VCL Client-Server with Source
DBISAM VCL Standard
DBISAM VCL Standard with Source
DBISAM VCL Trial

Image