in catalogs/catalog-jdbc-oceanbase/src/main/java/org/apache/gravitino/catalog/oceanbase/converter/OceanBaseColumnDefaultValueConverter.java [44:111]
public Expression toGravitino(
JdbcTypeConverter.JdbcTypeBean type,
String columnDefaultValue,
boolean isExpression,
boolean nullable) {
if (Objects.isNull(columnDefaultValue)) {
return nullable ? Literals.NULL : DEFAULT_VALUE_NOT_SET;
}
if (columnDefaultValue.equalsIgnoreCase(NULL)) {
return Literals.NULL;
}
if (isExpression) {
if (CURRENT_TIMESTAMP.matcher(columnDefaultValue).matches()) {
return DEFAULT_VALUE_OF_CURRENT_TIMESTAMP;
}
// The parsing of OceanBase expressions is complex, so we are not currently undertaking the
// parsing.
return UnparsedExpression.of(columnDefaultValue);
}
switch (type.getTypeName().toLowerCase()) {
case OceanBaseTypeConverter.TINYINT:
return Literals.byteLiteral(Byte.valueOf(columnDefaultValue));
case OceanBaseTypeConverter.TINYINT_UNSIGNED:
return Literals.unsignedByteLiteral(Short.valueOf(columnDefaultValue));
case OceanBaseTypeConverter.SMALLINT:
return Literals.shortLiteral(Short.valueOf(columnDefaultValue));
case OceanBaseTypeConverter.SMALLINT_UNSIGNED:
return Literals.unsignedShortLiteral(Integer.valueOf(columnDefaultValue));
case OceanBaseTypeConverter.INT:
return Literals.integerLiteral(Integer.valueOf(columnDefaultValue));
case OceanBaseTypeConverter.INT_UNSIGNED:
return Literals.unsignedIntegerLiteral(Long.valueOf(columnDefaultValue));
case OceanBaseTypeConverter.BIGINT:
return Literals.longLiteral(Long.valueOf(columnDefaultValue));
case OceanBaseTypeConverter.BIGINT_UNSIGNED:
return Literals.unsignedLongLiteral(Decimal.of(columnDefaultValue));
case OceanBaseTypeConverter.FLOAT:
return Literals.floatLiteral(Float.valueOf(columnDefaultValue));
case OceanBaseTypeConverter.DOUBLE:
return Literals.doubleLiteral(Double.valueOf(columnDefaultValue));
case OceanBaseTypeConverter.NUMBER:
case OceanBaseTypeConverter.NUMERIC:
case OceanBaseTypeConverter.DECIMAL:
return Literals.decimalLiteral(
Decimal.of(columnDefaultValue, type.getColumnSize(), type.getScale()));
case JdbcTypeConverter.DATE:
return Literals.dateLiteral(LocalDate.parse(columnDefaultValue, DATE_FORMATTER));
case JdbcTypeConverter.TIME:
return Literals.timeLiteral(LocalTime.parse(columnDefaultValue, DATE_TIME_FORMATTER));
case JdbcTypeConverter.TIMESTAMP:
case OceanBaseTypeConverter.DATETIME:
return CURRENT_TIMESTAMP.matcher(columnDefaultValue).matches()
? DEFAULT_VALUE_OF_CURRENT_TIMESTAMP
: Literals.timestampLiteral(
LocalDateTime.parse(columnDefaultValue, DATE_TIME_FORMATTER));
case JdbcTypeConverter.VARCHAR:
return Literals.of(columnDefaultValue, Types.VarCharType.of(type.getColumnSize()));
case OceanBaseTypeConverter.CHAR:
return Literals.of(columnDefaultValue, Types.FixedCharType.of(type.getColumnSize()));
case JdbcTypeConverter.TEXT:
return Literals.stringLiteral(columnDefaultValue);
default:
return UnparsedExpression.of(columnDefaultValue);
}
}