keyspace - the keyspace on which the statement for which this is a
Selectable is on.
Returns:
the type of this Selectable if inferrable, or null
otherwise (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 return null too).
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.
A data type that can represent this, or null if we can't determine that type. The returned type
won't necessarely be the exact type, but one that is compatible with it.