Next: , Previous: , Up: Top   [Contents][Index]


10 Database reorganization

The following function should be used very seldom.

gdbm interface: int gdbm_reorganize (GDBM_FILE dbf)

Reorganizes the database.

The parameter is:

dbf

The pointer returned by gdbm_open.

If you have had a lot of deletions and would like to shrink the space used by the gdbm file, this function will reorganize the database. This results, in particular, in shortening the length of a gdbm file by removing the space occupied by deleted records.

This reorganization requires creating a new file and inserting all the elements in the old file dbf into the new file. The new file is then renamed to the same name as the old file and dbf is updated to contain all the correct information about the new file. If an error is detected, the return value is negative. The value zero is returned after a successful reorganization.

Notice, that calling this function disables crash tolerance, reverting the effect of the recent gdbm_failure_atomic call. You will have to call gdbm_failure_atomic again after gdbm_reorganize returns successfully. This will be fixed in future releases.