![[assets/str_idx_hash.png|256]] - **Description**: Implements a disk-based hash table using **Linear Hashing**. It maps values to 32-bit hash codes and stores them in buckets. - **Data Structure**: - **Meta Page**: Stores the hash seed, current split point, and number of buckets. - **Bucket Pages**: Contain the actual TIDs and original hash codes. - **Overflow Pages**: If a bucket exceeds one page, an overflow chain is created. - **Linear Hashing**: The number of buckets grows dynamically. When the "fill factor" is exceeded, a single bucket (the split point) is divided into two, even if it's not the bucket that specifically overflowed. - **Supported Operators**: `=`. - **Special Features**: - **PG 10+ Crash Safety**: Since Postgres 10, Hash indexes are fully WAL-logged, making them safe for production use. - **Metaphor**: A massive wall of identical mailboxes. The **Meta Page** is the master key that tells you which section of the wall to look at. If one mailbox gets too full, the postman (Linear Hashing) simply adds a new row to the bottom of the wall.