When a record is deleted, it's first hashed to a bucket number. Then
all the pages in that bucket is searched for this record. If it's not
found, RECNOTFOUND is returned. If it's found, then the last record on
the last page of this bucket is moved to the deleted record's slot to
keep all pages compact. If the last page is an overflow page and it's
empty as the result of the deletion, a merge is triggered.
When a merge is triggered, all the records in the last bucket is
moved to the end of the image bucket of the last bucket. Overflow
pages are allocated if necessary. Then the last bucket is deallocated
and the corresponding header information is updated.