Package org.apache.cassandra.cql3
Class Term.Terminal
- java.lang.Object
-
- org.apache.cassandra.cql3.Term.Terminal
-
- All Implemented Interfaces:
Term
- Direct Known Subclasses:
Constants.Value
,Maps.Value
,Sets.Value
,Term.MultiItemTerminal
,Tuples.InValue
- Enclosing interface:
- Term
public abstract static class Term.Terminal extends java.lang.Object implements Term
A terminal term, one that can be reduced to a byte buffer directly. This includes most terms that don't have a bind marker (an exception being delayed call for non pure function that are NonTerminal even if they don't have bind markers). This can be only one of: - a constant value - a collection value Note that a terminal term will always have been type checked, and thus consumer can (and should) assume so.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.apache.cassandra.cql3.Term
Term.MultiColumnRaw, Term.MultiItemTerminal, Term.NonTerminal, Term.Raw, Term.Terminal
-
-
Constructor Summary
Constructors Constructor Description Terminal()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
addFunctionsTo(java.util.List<Function> functions)
Term.Terminal
bind(QueryOptions options)
Bind the values in this term to the values contained invalues
.java.nio.ByteBuffer
bindAndGet(QueryOptions options)
A shorter for bind(values).get().void
collectMarkerSpecification(VariableSpecifications boundNames)
Collects the column specification for the bind variables in this Term.boolean
containsBindMarker()
Whether or not that term contains at least one bind marker.abstract java.nio.ByteBuffer
get(ProtocolVersion version)
boolean
isTerminal()
Whether that term is terminal (this is a shortcut forthis instanceof Term.Terminal
).
-
-
-
Method Detail
-
collectMarkerSpecification
public void collectMarkerSpecification(VariableSpecifications boundNames)
Description copied from interface:Term
Collects the column specification for the bind variables in this Term. This is obviously a no-op if the term is Terminal.- Specified by:
collectMarkerSpecification
in interfaceTerm
- Parameters:
boundNames
- the variables specification where to collect the bind variables of this term in.
-
bind
public Term.Terminal bind(QueryOptions options)
Description copied from interface:Term
Bind the values in this term to the values contained invalues
. This is obviously a no-op if the term is Terminal.
-
addFunctionsTo
public void addFunctionsTo(java.util.List<Function> functions)
- Specified by:
addFunctionsTo
in interfaceTerm
-
containsBindMarker
public boolean containsBindMarker()
Description copied from interface:Term
Whether or not that term contains at least one bind marker. Note that this is slightly different from being or not a NonTerminal, because calls to non pure functions will be NonTerminal (see #5616) even if they don't have bind markers.- Specified by:
containsBindMarker
in interfaceTerm
-
isTerminal
public boolean isTerminal()
Description copied from interface:Term
Whether that term is terminal (this is a shortcut forthis instanceof Term.Terminal
).- Specified by:
isTerminal
in interfaceTerm
-
get
public abstract java.nio.ByteBuffer get(ProtocolVersion version) throws InvalidRequestException
- Returns:
- the serialized value of this terminal.
- Throws:
InvalidRequestException
-
bindAndGet
public java.nio.ByteBuffer bindAndGet(QueryOptions options) throws InvalidRequestException
Description copied from interface:Term
A shorter for bind(values).get(). We expose it mainly because for constants it can avoids allocating a temporary object between the bind and the get (note that we still want to be able to separate bind and get for collections).- Specified by:
bindAndGet
in interfaceTerm
- Throws:
InvalidRequestException
-
-