Class HashJoinIteration
- java.lang.Object
-
- org.eclipse.rdf4j.common.iteration.AbstractCloseableIteration<E>
-
- org.eclipse.rdf4j.common.iteration.LookAheadIteration<BindingSet>
-
- org.eclipse.rdf4j.query.algebra.evaluation.iterator.HashJoinIteration
-
- All Implemented Interfaces:
AutoCloseable,Iterator<BindingSet>,CloseableIteration<BindingSet>
public class HashJoinIteration extends LookAheadIteration<BindingSet>
Generic hash join implementation suitable for use by Sail implementations.- Author:
- MJAHale
-
-
Field Summary
Fields Modifier and Type Field Description protected String[]joinAttributes
-
Constructor Summary
Constructors Constructor Description HashJoinIteration(CloseableIteration<BindingSet> leftIter, Set<String> leftBindingNames, CloseableIteration<BindingSet> rightIter, Set<String> rightBindingNames, boolean leftJoin)Deprecated, for removal: This API element is subject to removal in a future version.HashJoinIteration(QueryEvaluationStep left, QueryEvaluationStep right, BindingSet bindings, boolean leftJoin, String[] joinAttributes, QueryEvaluationContext context)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected <E> voidadd(Collection<E> col, E value)protected <E> voidaddAll(Collection<E> col, List<E> values)protected <E> voidcloseHashValue(Iterator<E> iter)Utility methods to clear-up in case not using in-memory hash table.protected voiddisposeCache(Iterator<BindingSet> iter)Utility methods to clear-up in case not using in-memory cache.protected voiddisposeHashTable(Map<BindingSetHashKey,List<BindingSet>> map)Utility methods to clear-up in case not using in-memory hash table.protected BindingSetgetNextElement()Gets the next element.protected voidhandleClose()Called byAbstractCloseableIteration.close()when it is called for the first time.static String[]hashJoinAttributeNames(Join join)static String[]hashJoinAttributeNames(LeftJoin join)protected Map<BindingSetHashKey,List<BindingSet>>makeHashTable(int initialSize)Utility methods to make it easier to inserted custom store dependent mapsprotected List<BindingSet>makeHashValue(int currentMaxListSize)Utility methods to make it easier to inserted custom store dependent listprotected Collection<BindingSet>makeIterationCache(CloseableIteration<BindingSet> iter)Utility methods to make it easier to inserted custom store dependent listprotected <E> EnextFromCache(Iterator<E> iter)protected voidputHashTableEntry(Map<BindingSetHashKey,List<BindingSet>> nextHashTable, BindingSetHashKey hashKey, List<BindingSet> hashValue, boolean newEntry)-
Methods inherited from class org.eclipse.rdf4j.common.iteration.LookAheadIteration
hasNext, next, remove
-
Methods inherited from class org.eclipse.rdf4j.common.iteration.AbstractCloseableIteration
close, isClosed
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.eclipse.rdf4j.common.iteration.CloseableIteration
stream
-
Methods inherited from interface java.util.Iterator
forEachRemaining
-
-
-
-
Field Detail
-
joinAttributes
protected final String[] joinAttributes
-
-
Constructor Detail
-
HashJoinIteration
public HashJoinIteration(QueryEvaluationStep left, QueryEvaluationStep right, BindingSet bindings, boolean leftJoin, String[] joinAttributes, QueryEvaluationContext context) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
HashJoinIteration
@Deprecated(since="5.0.0", forRemoval=true) public HashJoinIteration(CloseableIteration<BindingSet> leftIter, Set<String> leftBindingNames, CloseableIteration<BindingSet> rightIter, Set<String> rightBindingNames, boolean leftJoin) throws QueryEvaluationException
Deprecated, for removal: This API element is subject to removal in a future version.- Throws:
QueryEvaluationException
-
-
Method Detail
-
getNextElement
protected BindingSet getNextElement() throws QueryEvaluationException
Description copied from class:LookAheadIterationGets the next element. Subclasses should implement this method so that it returns the next element.- Specified by:
getNextElementin classLookAheadIteration<BindingSet>- Returns:
- The next element, or null if no more elements are available.
- Throws:
QueryEvaluationException
-
handleClose
protected void handleClose() throws QueryEvaluationExceptionDescription copied from class:AbstractCloseableIterationCalled byAbstractCloseableIteration.close()when it is called for the first time. This method is only called once on each iteration. By default, this method does nothing.- Specified by:
handleClosein classAbstractCloseableIteration<BindingSet>- Throws:
QueryEvaluationException
-
putHashTableEntry
protected void putHashTableEntry(Map<BindingSetHashKey,List<BindingSet>> nextHashTable, BindingSetHashKey hashKey, List<BindingSet> hashValue, boolean newEntry) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
makeIterationCache
protected Collection<BindingSet> makeIterationCache(CloseableIteration<BindingSet> iter)
Utility methods to make it easier to inserted custom store dependent list- Returns:
- list
-
makeHashTable
protected Map<BindingSetHashKey,List<BindingSet>> makeHashTable(int initialSize)
Utility methods to make it easier to inserted custom store dependent maps- Returns:
- map
-
makeHashValue
protected List<BindingSet> makeHashValue(int currentMaxListSize)
Utility methods to make it easier to inserted custom store dependent list- Returns:
- list
-
disposeCache
protected void disposeCache(Iterator<BindingSet> iter)
Utility methods to clear-up in case not using in-memory cache.
-
disposeHashTable
protected void disposeHashTable(Map<BindingSetHashKey,List<BindingSet>> map)
Utility methods to clear-up in case not using in-memory hash table.
-
closeHashValue
protected <E> void closeHashValue(Iterator<E> iter)
Utility methods to clear-up in case not using in-memory hash table.
-
nextFromCache
protected <E> E nextFromCache(Iterator<E> iter)
-
add
protected <E> void add(Collection<E> col, E value) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
addAll
protected <E> void addAll(Collection<E> col, List<E> values) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
-