public static boolean valueMatchesType()

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);
    }
  }