Class Selectable.WithMapOrUdt
java.lang.Object
org.apache.cassandra.cql3.selection.Selectable.WithMapOrUdt
- All Implemented Interfaces:
AssignmentTestable,Selectable
- Enclosing interface:
- Selectable
Selectable for literal Maps or UDTs.
The parser cannot differentiate between a Map or a UDT in the selection cause because a
ColumnIdentifier is equivalent to a FieldIdentifier from a syntax point of view.
By consequence, we are forced to wait until the type is known to be able to differentiate them.
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from interface org.apache.cassandra.cql3.AssignmentTestable
AssignmentTestable.TestResultNested classes/interfaces inherited from interface org.apache.cassandra.cql3.selection.Selectable
Selectable.BetweenParenthesesOrWithTuple, Selectable.RawIdentifier, Selectable.WithArrayLiteral, Selectable.WithCast, Selectable.WithElementSelection, Selectable.WithFieldSelection, Selectable.WithFunction, Selectable.WithList, Selectable.WithMapOrUdt, Selectable.WithSet, Selectable.WithSliceSelection, Selectable.WithTerm, Selectable.WithTypeHint, Selectable.WithVector, Selectable.WritetimeOrTTL -
Constructor Summary
ConstructorsConstructorDescriptionWithMapOrUdt(TableMetadata cfm, List<Pair<Selectable.Raw, Selectable.Raw>> raws) -
Method Summary
Modifier and TypeMethodDescriptionAbstractType<?>getCompatibleTypeIfKnown(String keyspace) AbstractType<?>getExactTypeIfKnown(String keyspace) The type of theSelectableif it can be infered.newSelectorFactory(TableMetadata cfm, AbstractType<?> expectedType, List<ColumnMetadata> defs, VariableSpecifications boundNames) booleanselectColumns(Predicate<ColumnMetadata> predicate) Checks if thisSelectableselect columns matching the specified predicate.testAssignment(String keyspace, ColumnSpecification receiver) toString()Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.apache.cassandra.cql3.selection.Selectable
addAndGetIndex, processesSelection, specForElementOrSlice
-
Constructor Details
-
WithMapOrUdt
-
-
Method Details
-
testAssignment
- Specified by:
testAssignmentin interfaceAssignmentTestable- Specified by:
testAssignmentin interfaceSelectable- Returns:
- whether this object can be assigned to the provided receiver. We distinguish between 3 values: - EXACT_MATCH if this object is exactly of the type expected by the receiver - WEAKLY_ASSIGNABLE if this object is not exactly the expected type but is assignable nonetheless - NOT_ASSIGNABLE if it's not assignable Most caller should just call the isAssignable() method on the result, though functions have a use for testing "strong" equality to decide the most precise overload to pick when multiple could match.
-
newSelectorFactory
public Selector.Factory newSelectorFactory(TableMetadata cfm, AbstractType<?> expectedType, List<ColumnMetadata> defs, VariableSpecifications boundNames) - Specified by:
newSelectorFactoryin interfaceSelectable
-
getExactTypeIfKnown
Description copied from interface:SelectableThe type of theSelectableif it can be infered.- Specified by:
getExactTypeIfKnownin interfaceSelectable- Parameters:
keyspace- the keyspace on which the statement for which this is aSelectableis on.- Returns:
- the type of this
Selectableif inferrable, ornullotherwise (for instance, the type isn't inferable for a bind marker. Even for literals, the exact type is not inferrable since they are valid for many different types and so this will returnnulltoo).
-
getCompatibleTypeIfKnown
- Specified by:
getCompatibleTypeIfKnownin interfaceAssignmentTestable- Specified by:
getCompatibleTypeIfKnownin interfaceSelectable- Returns:
- A data type that can represent this, or
nullif we can't determine that type. The returned type won't necessarely be the exact type, but one that is compatible with it.
-
selectColumns
Description copied from interface:SelectableChecks if thisSelectableselect columns matching the specified predicate.- Specified by:
selectColumnsin interfaceSelectable- Returns:
trueif thisSelectableselect columns matching the specified predicate,falseotherwise.
-
toString
-