Before I started this project, I read the code of the extensible hashing
component in the old MINIREL. Since linear hashing's data structures are
very different from extensible hashing's, I designed and implemented
the system almost from the scratch.
The linear hashing component
currently consists of approximately 2300 lines of fully documented
C++ code. The single user version has been extensively tested and is
working stably. It's also purified and no purify errors were
reported in this component. I also finished writing update logs and
controlling concurrent accesses to the index. Since the Recovery
Manager and Lock Manager have not finished when the report was
written, no mutil-user test has been run on this component. Currently
I just set all the methods of those two components to empty functions.
For me the difficult parts in this project include extremely rare
cases handling, e.g. merging in scan, and locking.