In the partitioning phase, we allocate one buffer block for reading relation R, and
(nBuffer − 1) buffer blocks for output. For each tuple in R, we remove the unwanted
attributes and then apply a hash function h to the combination of the remaining attributes