org.teiid.query.processor.relational
Class MergeJoinStrategy

java.lang.Object
  extended by org.teiid.query.processor.relational.JoinStrategy
      extended by org.teiid.query.processor.relational.MergeJoinStrategy
Direct Known Subclasses:
NestedLoopJoinStrategy, PartitionedSortJoin

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
protected  MergeJoinStrategy.SortOption processingSortLeft
           
protected  MergeJoinStrategy.SortOption processingSortRight
           
protected  MergeJoinStrategy.SortOption sortLeft
           
protected  MergeJoinStrategy.SortOption sortRight
           
 
Fields inherited from class org.teiid.query.processor.relational.JoinStrategy
joinNode, leftSource, rightSource
 
Constructor Summary
MergeJoinStrategy(MergeJoinStrategy.SortOption sortLeft, MergeJoinStrategy.SortOption sortRight, boolean grouping)
           
 
Method Summary
 MergeJoinStrategy clone()
           
 void close()
           
protected  int compare(java.util.List leftProbe, java.util.List rightProbe, int[] leftExpressionIndecies, int[] rightExpressionIndecies)
           
protected  boolean compareToPrevious(org.teiid.query.processor.relational.SourceState target)
           
 java.lang.String getName()
           
 void initialize(JoinNode joinNode)
           
protected  void loadLeft()
           
protected  void loadRight()
           
protected  void process()
           
 void setProcessingSortRight(boolean processingSortRight)
           
 java.lang.String toString()
           
 
Methods inherited from class org.teiid.query.processor.relational.JoinStrategy
openLeft, openRight, outputTuple
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

sortLeft

protected MergeJoinStrategy.SortOption sortLeft

sortRight

protected MergeJoinStrategy.SortOption sortRight

processingSortLeft

protected MergeJoinStrategy.SortOption processingSortLeft

processingSortRight

protected MergeJoinStrategy.SortOption processingSortRight
Constructor Detail

MergeJoinStrategy

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

clone

public MergeJoinStrategy clone()
Specified by:
clone in class JoinStrategy
See Also:
JoinStrategy.clone()

initialize

public void initialize(JoinNode joinNode)
Overrides:
initialize in class JoinStrategy
See Also:
JoinStrategy.initialize(org.teiid.query.processor.relational.JoinNode)

close

public void close()
Overrides:
close in class JoinStrategy
See Also:
JoinStrategy.close()

process

protected void process()
                throws TeiidComponentException,
                       TeiidProcessingException
Specified by:
process in class JoinStrategy
Throws:
TeiidComponentException
TeiidProcessingException

compareToPrevious

protected boolean compareToPrevious(org.teiid.query.processor.relational.SourceState target)
                             throws TeiidComponentException,
                                    TeiidProcessingException
Throws:
TeiidComponentException
TeiidProcessingException

compare

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

loadLeft

protected void loadLeft()
                 throws TeiidComponentException,
                        TeiidProcessingException
Overrides:
loadLeft in class JoinStrategy
Throws:
TeiidComponentException
TeiidProcessingException

loadRight

protected void loadRight()
                  throws TeiidComponentException,
                         TeiidProcessingException
Overrides:
loadRight in class JoinStrategy
Throws:
TeiidComponentException
TeiidProcessingException

setProcessingSortRight

public void setProcessingSortRight(boolean processingSortRight)

getName

public java.lang.String getName()

toString

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


Copyright © 2011. All Rights Reserved.