private Expression parseLiteral()

in catalogs/catalog-jdbc-postgresql/src/main/java/org/apache/gravitino/catalog/postgresql/converter/PostgreSqlColumnDefaultValueConverter.java [74:112]


  private Expression parseLiteral(JdbcTypeConverter.JdbcTypeBean type, String columnDefaultValue) {
    Matcher matcher = VALUE_WITH_TYPE.matcher(columnDefaultValue);
    if (matcher.find()) {
      columnDefaultValue = matcher.group(1);
    }

    if (columnDefaultValue.startsWith(NULL_PREFIX)) {
      return Literals.NULL;
    }

    switch (type.getTypeName().toLowerCase()) {
      case PostgreSqlTypeConverter.BOOL:
        return Literals.booleanLiteral(Boolean.valueOf(columnDefaultValue));
      case PostgreSqlTypeConverter.INT_2:
        return Literals.shortLiteral(Short.valueOf(columnDefaultValue));
      case PostgreSqlTypeConverter.INT_4:
        return Literals.integerLiteral(Integer.valueOf(columnDefaultValue));
      case PostgreSqlTypeConverter.INT_8:
        return Literals.longLiteral(Long.valueOf(columnDefaultValue));
      case PostgreSqlTypeConverter.FLOAT_4:
        return Literals.floatLiteral(Float.valueOf(columnDefaultValue));
      case PostgreSqlTypeConverter.FLOAT_8:
        return Literals.doubleLiteral(Double.valueOf(columnDefaultValue));
      case PostgreSqlTypeConverter.NUMERIC:
        return Literals.decimalLiteral(
            Decimal.of(columnDefaultValue, type.getColumnSize(), type.getScale()));
      case JdbcTypeConverter.DATE:
        return Literals.dateLiteral(LocalDate.parse(columnDefaultValue, DATE_TIME_FORMATTER));
      case PostgreSqlTypeConverter.TIMESTAMP_TZ:
        return Literals.timeLiteral(LocalTime.parse(columnDefaultValue, DATE_TIME_FORMATTER));
      case VARCHAR:
        return Literals.varcharLiteral(type.getColumnSize(), columnDefaultValue);
      case PostgreSqlTypeConverter.BPCHAR:
      case JdbcTypeConverter.TEXT:
        return Literals.stringLiteral(columnDefaultValue);
      default:
        throw new IllegalArgumentException("Unknown data type for literal: " + type);
    }
  }