P = bits(d,hash(val));
if (P < sp) P = bits(d+1,hash(val));
for each page Q in bucket P {
if (space in Q) {
insert tuple into Q
break
}
}
if (no insertion) {
add new ovflow page to bucket P
insert tuple into new page
}
if (need to split) {
partition tuples from bucket sp
into buckets sp and sp+2^d
sp++;
if (sp == 2^d) { d++; sp = 0; }
}
|