in catalogs/catalog-jdbc-doris/src/main/java/org/apache/gravitino/catalog/doris/converter/DorisColumnDefaultValueConverter.java [47:104]
public Expression toGravitino(
JdbcTypeConverter.JdbcTypeBean columnType,
String columnDefaultValue,
boolean isExpression,
boolean nullable) {
if (columnDefaultValue == null) {
return nullable ? Literals.NULL : DEFAULT_VALUE_NOT_SET;
}
if (columnDefaultValue.equalsIgnoreCase(NULL)) {
return Literals.NULL;
}
if (isExpression) {
if (columnDefaultValue.equals(CURRENT_TIMESTAMP)) {
return DEFAULT_VALUE_OF_CURRENT_TIMESTAMP;
}
// The parsing of Doris expressions is complex, so we are not currently undertaking the
// parsing.
return UnparsedExpression.of(columnDefaultValue);
}
switch (columnType.getTypeName().toLowerCase()) {
case TINYINT:
return Literals.byteLiteral(Byte.valueOf(columnDefaultValue));
case SMALLINT:
return Literals.shortLiteral(Short.valueOf(columnDefaultValue));
case INT:
return Literals.integerLiteral(Integer.valueOf(columnDefaultValue));
case BIGINT:
return Literals.longLiteral(Long.valueOf(columnDefaultValue));
case FLOAT:
return Literals.floatLiteral(Float.valueOf(columnDefaultValue));
case DOUBLE:
return Literals.doubleLiteral(Double.valueOf(columnDefaultValue));
case DECIMAL:
return Literals.decimalLiteral(
Decimal.of(columnDefaultValue, columnType.getColumnSize(), columnType.getScale()));
case JdbcTypeConverter.DATE:
return Literals.dateLiteral(LocalDate.parse(columnDefaultValue, DATE_TIME_FORMATTER));
case JdbcTypeConverter.TIME:
return Literals.timeLiteral(LocalTime.parse(columnDefaultValue, DATE_TIME_FORMATTER));
case JdbcTypeConverter.TIMESTAMP:
case DATETIME:
return CURRENT_TIMESTAMP.equals(columnDefaultValue)
? DEFAULT_VALUE_OF_CURRENT_TIMESTAMP
: Literals.timestampLiteral(
LocalDateTime.parse(columnDefaultValue, DATE_TIME_FORMATTER));
case JdbcTypeConverter.VARCHAR:
return Literals.of(columnDefaultValue, Types.VarCharType.of(columnType.getColumnSize()));
case CHAR:
return Literals.of(columnDefaultValue, Types.FixedCharType.of(columnType.getColumnSize()));
case JdbcTypeConverter.TEXT:
return Literals.stringLiteral(columnDefaultValue);
default:
throw new IllegalArgumentException("Unknown data columnType for literal: " + columnType);
}
}