Class JoinStream
- java.lang.Object
-
- org.apache.solr.client.solrj.io.stream.TupleStream
-
- org.apache.solr.client.solrj.io.stream.JoinStream
-
- All Implemented Interfaces:
Closeable
,Serializable
,AutoCloseable
,Expressible
,org.apache.solr.common.MapSerializable
,org.apache.solr.common.MapWriter
,org.apache.solr.common.NavigableObject
- Direct Known Subclasses:
BiJoinStream
public abstract class JoinStream extends TupleStream implements Expressible
Defines a JoinStream which can hold N streams, all joined with the same equalitor- Since:
- 6.0.0
- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.solr.client.solrj.io.stream.TupleStream
TupleStream.IgnoreException
-
-
Field Summary
Fields Modifier and Type Field Description protected StreamEqualitor
eq
-
Constructor Summary
Constructors Constructor Description JoinStream(StreamEqualitor eq, TupleStream first, TupleStream second, TupleStream... others)
JoinStream(StreamExpression expression, StreamFactory factory)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description List<TupleStream>
children()
void
close()
int
getCost()
PushBackStream
getStream(int idx)
protected boolean
isValidTupleOrder()
protected Tuple
loadEqualTupleGroup(PushBackStream stream, LinkedList<Tuple> group, StreamComparator groupComparator)
Given the stream, start from beginning and load group with all tuples that are equal to the first in stream (including the first one in the stream).void
open()
void
setStreamContext(StreamContext context)
Explanation
toExplanation(StreamFactory factory)
Returns an explanation about the stream objectStreamExpression
toExpression(StreamFactory factory)
protected abstract void
validateTupleOrder()
-
Methods inherited from class org.apache.solr.client.solrj.io.stream.TupleStream
getShards, getShards, getStreamNodeId, getStreamSort, read, writeMap
-
-
-
-
Field Detail
-
eq
protected StreamEqualitor eq
-
-
Constructor Detail
-
JoinStream
public JoinStream(StreamEqualitor eq, TupleStream first, TupleStream second, TupleStream... others)
-
JoinStream
public JoinStream(StreamExpression expression, StreamFactory factory) throws IOException
- Throws:
IOException
-
-
Method Detail
-
validateTupleOrder
protected abstract void validateTupleOrder() throws IOException
- Throws:
IOException
-
toExpression
public StreamExpression toExpression(StreamFactory factory) throws IOException
- Specified by:
toExpression
in interfaceExpressible
- Throws:
IOException
-
toExplanation
public Explanation toExplanation(StreamFactory factory) throws IOException
Description copied from interface:Expressible
Returns an explanation about the stream object- Specified by:
toExplanation
in interfaceExpressible
- Specified by:
toExplanation
in classTupleStream
- Parameters:
factory
- Stream factory for this, contains information about the function name- Returns:
- Explanation about this stream object containing explanations of any child stream objects
- Throws:
IOException
- throw on any error
-
setStreamContext
public void setStreamContext(StreamContext context)
- Specified by:
setStreamContext
in classTupleStream
-
open
public void open() throws IOException
- Specified by:
open
in classTupleStream
- Throws:
IOException
-
close
public void close() throws IOException
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Specified by:
close
in classTupleStream
- Throws:
IOException
-
children
public List<TupleStream> children()
- Specified by:
children
in classTupleStream
-
getStream
public PushBackStream getStream(int idx)
-
isValidTupleOrder
protected boolean isValidTupleOrder()
-
loadEqualTupleGroup
protected Tuple loadEqualTupleGroup(PushBackStream stream, LinkedList<Tuple> group, StreamComparator groupComparator) throws IOException
Given the stream, start from beginning and load group with all tuples that are equal to the first in stream (including the first one in the stream). All matched tuples are removed from the stream. Result is at least one tuple will be read from the stream and 0 or more tuples will exist in the group. If the first tuple is EOF then the group will have 0 items. Else it will have at least one item. The first group member is returned.- Parameters:
group
- - should be empty- Throws:
IOException
-
getCost
public int getCost()
- Overrides:
getCost
in classTupleStream
-
-