Class Selector
java.lang.Object
org.apache.cassandra.cql3.selection.Selector
- Direct Known Subclasses:
SimpleSelector,TermSelector,VectorSelector
A
Selector 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, Selectors cannot be called anymore by multiple threads
as they have an internal state.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classA factory forSelectorinstances.static final classA row of data that need to be processed by aSelectorstatic enumTheSelectorkinds.protected static classstatic class -
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionabstract voidaddFetchedColumns(ColumnFilter.Builder builder) Add to the provided builder the column (and potential subselections) to fetch for this selection.abstract voidaddInput(Selector.InputRow input) Add the current value from the specifiedResultSetBuilder.abstract ByteBuffergetOutput(ProtocolVersion protocolVersion) Returns the selector output.protected org.apache.cassandra.cql3.selection.ColumnTimestampsgetTTLs(ProtocolVersion protocolVersion) abstract AbstractType<?>getType()Returns theSelectoroutput type.protected org.apache.cassandra.cql3.selection.ColumnTimestampsgetWritetimes(ProtocolVersion protocolVersion) booleanA selector is terminal if it doesn't require any input for it's output to be computed, i.e.final Selector.Kindkind()Returns theSelectorkind.abstract voidreset()Reset the internal state of thisSelector.protected abstract voidserialize(DataOutputPlus out, int version) protected abstract intserializedSize(int version) protected static intsizeOf(AbstractType<?> type) voidChecks that this selector is valid for GROUP BY clause.protected static voidwriteType(DataOutputPlus out, AbstractType<?> type)
-
Field Details
-
serializer
TheSelectorserializer.
-
-
Constructor Details
-
Selector
-
-
Method Details
-
kind
Returns theSelectorkind.- Returns:
- the
Selectorkind
-
addFetchedColumns
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
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 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
Returns theSelectoroutput type.- Returns:
- the
Selectoroutput 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
- Throws:
IOException
-
writeType
- Throws:
IOException
-
sizeOf
-