com.metamatrix.query.processor.relational
Class MergeJoinStrategy

java.lang.Object
  extended by com.metamatrix.query.processor.relational.JoinStrategy
      extended by com.metamatrix.query.processor.relational.MergeJoinStrategy
Direct Known Subclasses:
NestedLoopJoinStrategy

public class MergeJoinStrategy
extends JoinStrategy

MergeJoinStrategy supports generalized Full, Left Outer, and Inner Joins (containing non-equi join criteria) as long as there is at least one equi-join criteria Additionally supports Semi and Anti-Semi Joins. These too allow for generalized non-equi join criteria. TODO: when there is no non-equi join criteria matching duplicates from the outer side can be output immediately TODO: semi joins should only output left tuples Support for Intersect and Except is controlled by the grouping flag, which changes comparisons to check for null equality.


Nested Class Summary
static class MergeJoinStrategy.SortOption
           
 
Field Summary
 
Fields inherited from class com.metamatrix.query.processor.relational.JoinStrategy
joinNode, leftSource, rightSource
 
Constructor Summary
MergeJoinStrategy(boolean sortLeft, boolean sortRight)
           
MergeJoinStrategy(MergeJoinStrategy.SortOption sortLeft, MergeJoinStrategy.SortOption sortRight, boolean grouping)
           
 
Method Summary
 java.lang.Object clone()
           
 void close()
           
protected  int compare(java.util.List leftProbe, java.util.List rightProbe, int[] leftExpressionIndecies, int[] rightExpressionIndecies)
           
protected  boolean compareToPrevious(com.metamatrix.query.processor.relational.SourceState target)
           
 void initialize(JoinNode joinNode)
           
protected  void loadLeft()
           
protected  void loadRight()
           
protected  java.util.List nextTuple()
           
 void setProcessingSortRight(boolean processingSortRight)
           
 java.lang.String toString()
           
 
Methods inherited from class com.metamatrix.query.processor.relational.JoinStrategy
outputTuple
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

MergeJoinStrategy

public MergeJoinStrategy(boolean sortLeft,
                         boolean sortRight)

MergeJoinStrategy

public MergeJoinStrategy(MergeJoinStrategy.SortOption sortLeft,
                         MergeJoinStrategy.SortOption sortRight,
                         boolean grouping)
Method Detail

clone

public java.lang.Object clone()
Specified by:
clone in class JoinStrategy
See Also:
JoinStrategy.clone()

initialize

public void initialize(JoinNode joinNode)
                throws MetaMatrixComponentException
Overrides:
initialize in class JoinStrategy
Throws:
MetaMatrixComponentException
See Also:
JoinStrategy.initialize(com.metamatrix.query.processor.relational.JoinNode)

close

public void close()
           throws TupleSourceNotFoundException,
                  MetaMatrixComponentException
Overrides:
close in class JoinStrategy
Throws:
TupleSourceNotFoundException
MetaMatrixComponentException
See Also:
JoinStrategy.close()

nextTuple

protected java.util.List nextTuple()
                            throws MetaMatrixComponentException,
                                   CriteriaEvaluationException,
                                   MetaMatrixProcessingException
Specified by:
nextTuple in class JoinStrategy
Throws:
MetaMatrixComponentException
CriteriaEvaluationException
MetaMatrixProcessingException

compareToPrevious

protected boolean compareToPrevious(com.metamatrix.query.processor.relational.SourceState target)
                             throws MetaMatrixComponentException,
                                    MetaMatrixProcessingException
Throws:
MetaMatrixComponentException
MetaMatrixProcessingException

compare

protected int compare(java.util.List leftProbe,
                      java.util.List rightProbe,
                      int[] leftExpressionIndecies,
                      int[] rightExpressionIndecies)

loadLeft

protected void loadLeft()
                 throws MetaMatrixComponentException,
                        MetaMatrixProcessingException
Overrides:
loadLeft in class JoinStrategy
Throws:
MetaMatrixComponentException
MetaMatrixProcessingException
See Also:
JoinStrategy.loadLeft()

loadRight

protected void loadRight()
                  throws MetaMatrixComponentException,
                         MetaMatrixProcessingException
Overrides:
loadRight in class JoinStrategy
Throws:
MetaMatrixComponentException
MetaMatrixProcessingException
See Also:
JoinStrategy.loadRight()

setProcessingSortRight

public void setProcessingSortRight(boolean processingSortRight)

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object
See Also:
Object.toString()


Copyright © 2009. All Rights Reserved.