in core/src/main/java/org/apache/calcite/sql/SqlLiteral.java [197:255]
public static boolean valueMatchesType(
@Nullable Object value,
SqlTypeName typeName) {
switch (typeName) {
case BOOLEAN:
return (value == null) || (value instanceof Boolean);
case NULL:
return value == null;
case DECIMAL:
case DOUBLE:
case FLOAT:
case REAL:
return value instanceof BigDecimal;
case DATE:
return value instanceof DateString;
case TIME:
case TIME_WITH_LOCAL_TIME_ZONE:
return value instanceof TimeString;
case TIME_TZ:
return value instanceof TimeWithTimeZoneString;
case TIMESTAMP:
case TIMESTAMP_WITH_LOCAL_TIME_ZONE:
return value instanceof TimestampString;
case TIMESTAMP_TZ:
return value instanceof TimestampWithTimeZoneString;
case INTERVAL_YEAR:
case INTERVAL_YEAR_MONTH:
case INTERVAL_MONTH:
case INTERVAL_DAY:
case INTERVAL_DAY_HOUR:
case INTERVAL_DAY_MINUTE:
case INTERVAL_DAY_SECOND:
case INTERVAL_HOUR:
case INTERVAL_HOUR_MINUTE:
case INTERVAL_HOUR_SECOND:
case INTERVAL_MINUTE:
case INTERVAL_MINUTE_SECOND:
case INTERVAL_SECOND:
return value instanceof SqlIntervalLiteral.IntervalValue;
case BINARY:
return value instanceof BitString;
case CHAR:
return value instanceof NlsString;
case UUID:
return value instanceof UUID;
case SYMBOL:
return (value instanceof Enum)
|| (value instanceof SqlSampleSpec);
case MULTISET:
return true;
case UNKNOWN:
return value instanceof String;
case INTEGER: // not allowed -- use Decimal
case VARCHAR: // not allowed -- use Char
case VARBINARY: // not allowed -- use Binary
default:
throw Util.unexpected(typeName);
}
}