Class Selector
- java.lang.Object
-
- org.apache.cassandra.cql3.selection.Selector
-
- Direct Known Subclasses:
SimpleSelector
,TermSelector
,VectorSelector
public abstract class Selector extends java.lang.Object
ASelector
is used to convert the data returned by the storage engine into the data requested by the user. They correspond to the <selector> elements from the select clause.Since the introduction of aggregation,
Selector
s cannot be called anymore by multiple threads as they have an internal state.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
Selector.Factory
A factory forSelector
instances.static class
Selector.InputRow
A row of data that need to be processed by aSelector
static class
Selector.Kind
TheSelector
kinds.protected static class
Selector.SelectorDeserializer
static class
Selector.Serializer
-
Field Summary
Fields Modifier and Type Field Description static Selector.Serializer
serializer
TheSelector
serializer.
-
Constructor Summary
Constructors Modifier Constructor Description protected
Selector(Selector.Kind kind)
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract void
addFetchedColumns(ColumnFilter.Builder builder)
Add to the provided builder the column (and potential subselections) to fetch for this selection.abstract void
addInput(Selector.InputRow input)
Add the current value from the specifiedResultSetBuilder
.abstract java.nio.ByteBuffer
getOutput(ProtocolVersion protocolVersion)
Returns the selector output.protected org.apache.cassandra.cql3.selection.ColumnTimestamps
getTTLs(ProtocolVersion protocolVersion)
abstract AbstractType<?>
getType()
Returns theSelector
output type.protected org.apache.cassandra.cql3.selection.ColumnTimestamps
getWritetimes(ProtocolVersion protocolVersion)
boolean
isTerminal()
A selector is terminal if it doesn't require any input for it's output to be computed, i.e.Selector.Kind
kind()
Returns theSelector
kind.abstract void
reset()
Reset the internal state of thisSelector
.protected abstract void
serialize(DataOutputPlus out, int version)
protected abstract int
serializedSize(int version)
protected static int
sizeOf(AbstractType<?> type)
void
validateForGroupBy()
Checks that this selector is valid for GROUP BY clause.protected static void
writeType(DataOutputPlus out, AbstractType<?> type)
-
-
-
Field Detail
-
serializer
public static final Selector.Serializer serializer
TheSelector
serializer.
-
-
Constructor Detail
-
Selector
protected Selector(Selector.Kind kind)
-
-
Method Detail
-
kind
public final Selector.Kind kind()
Returns theSelector
kind.- Returns:
- the
Selector
kind
-
addFetchedColumns
public abstract void addFetchedColumns(ColumnFilter.Builder builder)
Add to the provided builder the column (and potential subselections) to fetch for this selection.- Parameters:
builder
- the builder to add columns and subselections to.
-
addInput
public abstract void addInput(Selector.InputRow input)
Add the current value from the specifiedResultSetBuilder
.- Parameters:
input
- the input row- Throws:
InvalidRequestException
- if a problem occurs while adding the input row
-
getOutput
public abstract java.nio.ByteBuffer getOutput(ProtocolVersion protocolVersion) throws InvalidRequestException
Returns the selector output.- Parameters:
protocolVersion
- protocol version used for serialization- Returns:
- the selector output
- Throws:
InvalidRequestException
- if a problem occurs while computing the output value
-
getWritetimes
protected org.apache.cassandra.cql3.selection.ColumnTimestamps getWritetimes(ProtocolVersion protocolVersion)
-
getTTLs
protected org.apache.cassandra.cql3.selection.ColumnTimestamps getTTLs(ProtocolVersion protocolVersion)
-
getType
public abstract AbstractType<?> getType()
Returns theSelector
output type.- Returns:
- the
Selector
output type.
-
reset
public abstract void reset()
Reset the internal state of thisSelector
.
-
isTerminal
public boolean isTerminal()
A selector is terminal if it doesn't require any input for it's output to be computed, i.e. ifgetOutput(org.apache.cassandra.transport.ProtocolVersion)
result doesn't depend ofaddInput(org.apache.cassandra.cql3.selection.Selector.InputRow)
. This is typically the case of a constant value or functions on constant values.
-
validateForGroupBy
public void validateForGroupBy()
Checks that this selector is valid for GROUP BY clause.
-
serializedSize
protected abstract int serializedSize(int version)
-
serialize
protected abstract void serialize(DataOutputPlus out, int version) throws java.io.IOException
- Throws:
java.io.IOException
-
writeType
protected static void writeType(DataOutputPlus out, AbstractType<?> type) throws java.io.IOException
- Throws:
java.io.IOException
-
sizeOf
protected static int sizeOf(AbstractType<?> type)
-
-