Seems to me this only handles inner join right? If yes, maybe reflect that in the name. Technically we can do outer joins with hash join too ...