[fix](jin) add datetimev2 precision (#29528)

This commit is contained in:
Ashin Gau
2024-01-06 13:35:26 +08:00
committed by GitHub
parent 8908a347bc
commit 5789b7e380
5 changed files with 54 additions and 18 deletions

View File

@ -43,7 +43,6 @@ public class PaimonExternalTable extends ExternalTable {
private static final Logger LOG = LogManager.getLogger(PaimonExternalTable.class);
public static final int PAIMON_DATETIME_SCALE_MS = 3;
private Table originTable = null;
public PaimonExternalTable(long id, String name, String dbName, PaimonExternalCatalog catalog) {
@ -112,7 +111,14 @@ public class PaimonExternalTable extends ExternalTable {
return ScalarType.createDateV2Type();
case TIMESTAMP_WITHOUT_TIME_ZONE:
case TIMESTAMP_WITH_LOCAL_TIME_ZONE:
return ScalarType.createDatetimeV2Type(PAIMON_DATETIME_SCALE_MS);
int scale = 3; // default
if (dataType instanceof org.apache.paimon.types.TimestampType) {
scale = ((org.apache.paimon.types.TimestampType) dataType).getPrecision();
if (scale > 6) {
scale = 6;
}
}
return ScalarType.createDatetimeV2Type(scale);
case ARRAY:
ArrayType arrayType = (ArrayType) dataType;
Type innerType = paimonPrimitiveTypeToDorisType(arrayType.getElementType());
@ -124,7 +130,8 @@ public class PaimonExternalTable extends ExternalTable {
case TIME_WITHOUT_TIME_ZONE:
return Type.UNSUPPORTED;
default:
throw new IllegalArgumentException("Cannot transform unknown type: " + dataType.getTypeRoot());
LOG.warn("Cannot transform unknown type: " + dataType.getTypeRoot());
return Type.UNSUPPORTED;
}
}