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.