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