org.teiid.query.processor.relational
Class MergeJoinStrategy
java.lang.Object
org.teiid.query.processor.relational.JoinStrategy
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.
| Methods inherited from class java.lang.Object |
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
sortLeft
protected MergeJoinStrategy.SortOption sortLeft
sortRight
protected MergeJoinStrategy.SortOption sortRight
processingSortLeft
protected MergeJoinStrategy.SortOption processingSortLeft
processingSortRight
protected MergeJoinStrategy.SortOption processingSortRight
MergeJoinStrategy
public MergeJoinStrategy(MergeJoinStrategy.SortOption sortLeft,
MergeJoinStrategy.SortOption sortRight,
boolean grouping)
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.