Class EnhancedSortMergeJoinStrategy
- java.lang.Object
-
- org.teiid.query.processor.relational.JoinStrategy
-
- org.teiid.query.processor.relational.MergeJoinStrategy
-
- org.teiid.query.processor.relational.EnhancedSortMergeJoinStrategy
-
public class EnhancedSortMergeJoinStrategy extends MergeJoinStrategy
Extends the basic fully sorted merge join to check for conditions necessary to not fully sort one of the sides. Will be used for inner joins and only if both sorts are not required. Degrades to a normal merge join if the tuples are balanced. Refined in 7.4 to use a full index if it is small enough or a repeated merge, rather than a partitioning approach (which was really just a single level index) TODO: add a tree method for insert that reuses a place list
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.teiid.query.processor.relational.MergeJoinStrategy
MergeJoinStrategy.SortOption
-
-
Field Summary
-
Fields inherited from class org.teiid.query.processor.relational.MergeJoinStrategy
processingSortLeft, processingSortRight, singleMatch, sortLeft, sortRight
-
Fields inherited from class org.teiid.query.processor.relational.JoinStrategy
joinNode, leftSource, reserved, rightSource
-
-
Constructor Summary
Constructors Constructor Description EnhancedSortMergeJoinStrategy(MergeJoinStrategy.SortOption sortLeft, MergeJoinStrategy.SortOption sortRight)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description EnhancedSortMergeJoinStrategy
clone()
void
close()
void
createIndex(org.teiid.query.processor.relational.SourceState state, MergeJoinStrategy.SortOption sortOption)
Create an index of the smaller sizeString
getName()
protected void
loadLeft()
protected void
loadRight()
protected void
process()
void
setPreferMemCutoff(int cutoff)
void
setSemiDep(boolean semiDep)
-
Methods inherited from class org.teiid.query.processor.relational.MergeJoinStrategy
compare, compareToPrevious, compareTuples, initialize, resetMatchState, setProcessingSortLeft, setProcessingSortRight, singleMatch, toString
-
Methods inherited from class org.teiid.query.processor.relational.JoinStrategy
openLeft, openRight, outputTuple
-
-
-
-
Constructor Detail
-
EnhancedSortMergeJoinStrategy
public EnhancedSortMergeJoinStrategy(MergeJoinStrategy.SortOption sortLeft, MergeJoinStrategy.SortOption sortRight)
-
-
Method Detail
-
setPreferMemCutoff
public void setPreferMemCutoff(int cutoff)
-
close
public void close()
- Overrides:
close
in classMergeJoinStrategy
- See Also:
JoinStrategy.close()
-
createIndex
public void createIndex(org.teiid.query.processor.relational.SourceState state, MergeJoinStrategy.SortOption sortOption) throws TeiidComponentException, TeiidProcessingException
Create an index of the smaller size
-
loadLeft
protected void loadLeft() throws TeiidComponentException, TeiidProcessingException
- Overrides:
loadLeft
in classMergeJoinStrategy
- Throws:
TeiidComponentException
TeiidProcessingException
-
loadRight
protected void loadRight() throws TeiidComponentException, TeiidProcessingException
- Overrides:
loadRight
in classMergeJoinStrategy
- Throws:
TeiidComponentException
TeiidProcessingException
-
process
protected void process() throws TeiidComponentException, TeiidProcessingException
- Overrides:
process
in classMergeJoinStrategy
- Throws:
TeiidComponentException
TeiidProcessingException
-
clone
public EnhancedSortMergeJoinStrategy clone()
- Overrides:
clone
in classMergeJoinStrategy
- See Also:
JoinStrategy.clone()
-
getName
public String getName()
- Overrides:
getName
in classMergeJoinStrategy
-
setSemiDep
public void setSemiDep(boolean semiDep)
-
-