relop
Class HashJoin

java.lang.Object
  extended by relop.Iterator
      extended by relop.HashJoin

public class HashJoin
extends Iterator

Implements the hash-based join algorithm described in section 14.4.3 of the textbook (3rd edition; see pages 463 to 464). HashIndex is used to partition the tuples into buckets, and HashTableDup is used to store a partition in memory during the matching phase.


Field Summary
 
Fields inherited from class relop.Iterator
schema
 
Constructor Summary
HashJoin(Iterator left, Iterator right, java.lang.Integer lcol, java.lang.Integer rcol)
          Constructs a hash join, given the left and right iterators and which columns to match (relative to their individual schemas).
 
Method Summary
 void close()
          Closes the iterator, releasing any resources (i.e.
 void explain(int depth)
          Gives a one-line explaination of the iterator, repeats the call on any child iterators, and increases the indent depth along the way.
 Tuple getNext()
          Gets the next tuple in the iteration.
 boolean hasNext()
          Returns true if there are more tuples, false otherwise.
 boolean isOpen()
          Returns true if the iterator is open; false otherwise.
 void restart()
          Restarts the iterator, i.e.
 
Methods inherited from class relop.Iterator
execute, finalize, indent
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

HashJoin

public HashJoin(Iterator left,
                Iterator right,
                java.lang.Integer lcol,
                java.lang.Integer rcol)
Constructs a hash join, given the left and right iterators and which columns to match (relative to their individual schemas).

Method Detail

explain

public void explain(int depth)
Gives a one-line explaination of the iterator, repeats the call on any child iterators, and increases the indent depth along the way.

Specified by:
explain in class Iterator

restart

public void restart()
Restarts the iterator, i.e. as if it were just constructed.

Specified by:
restart in class Iterator

isOpen

public boolean isOpen()
Returns true if the iterator is open; false otherwise.

Specified by:
isOpen in class Iterator

close

public void close()
Closes the iterator, releasing any resources (i.e. pinned pages).

Specified by:
close in class Iterator

hasNext

public boolean hasNext()
Returns true if there are more tuples, false otherwise.

Specified by:
hasNext in class Iterator

getNext

public Tuple getNext()
Gets the next tuple in the iteration.

Specified by:
getNext in class Iterator
Throws:
java.lang.IllegalStateException - if no more tuples