[fix](parquet-reader) reset value idx in bool rle decoder and support iceberg datetime(3) (#18245)
1. Fix value idx in bool rle decoder 2. Iceberg table support datetimev2(3). In the previous version, we converted hive timestamp to datetimev2(0) default.
This commit is contained in:
@ -698,6 +698,13 @@ public class HiveMetaStoreClientHelper {
|
||||
* Convert hive type to doris type.
|
||||
*/
|
||||
public static Type hiveTypeToDorisType(String hiveType) {
|
||||
return hiveTypeToDorisType(hiveType, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert hive type to doris type with timescale.
|
||||
*/
|
||||
public static Type hiveTypeToDorisType(String hiveType, int timeScale) {
|
||||
String lowerCaseType = hiveType.toLowerCase();
|
||||
switch (lowerCaseType) {
|
||||
case "boolean":
|
||||
@ -713,7 +720,7 @@ public class HiveMetaStoreClientHelper {
|
||||
case "date":
|
||||
return ScalarType.createDateV2Type();
|
||||
case "timestamp":
|
||||
return ScalarType.createDatetimeV2Type(0);
|
||||
return ScalarType.createDatetimeV2Type(timeScale);
|
||||
case "float":
|
||||
return Type.FLOAT;
|
||||
case "double":
|
||||
|
||||
@ -318,7 +318,8 @@ public class HMSExternalTable extends ExternalTable {
|
||||
List<Column> tmpSchema = Lists.newArrayListWithCapacity(hmsSchema.size());
|
||||
for (FieldSchema field : hmsSchema) {
|
||||
tmpSchema.add(new Column(field.getName(),
|
||||
HiveMetaStoreClientHelper.hiveTypeToDorisType(field.getType()), true, null,
|
||||
HiveMetaStoreClientHelper.hiveTypeToDorisType(field.getType(),
|
||||
IcebergExternalTable.ICEBERG_DATETIME_SCALE_MS), true, null,
|
||||
true, null, field.getComment(), true, null,
|
||||
schema.caseInsensitiveFindField(field.getName()).fieldId(), null));
|
||||
}
|
||||
|
||||
@ -36,6 +36,8 @@ import java.util.List;
|
||||
|
||||
public class IcebergExternalTable extends ExternalTable {
|
||||
|
||||
public static final int ICEBERG_DATETIME_SCALE_MS = 3;
|
||||
|
||||
public IcebergExternalTable(long id, String name, String dbName, IcebergExternalCatalog catalog) {
|
||||
super(id, name, catalog, dbName, TableType.ICEBERG_EXTERNAL_TABLE);
|
||||
}
|
||||
@ -88,7 +90,7 @@ public class IcebergExternalTable extends ExternalTable {
|
||||
case DATE:
|
||||
return ScalarType.createDateV2Type();
|
||||
case TIMESTAMP:
|
||||
return ScalarType.createDatetimeV2Type(0);
|
||||
return ScalarType.createDatetimeV2Type(ICEBERG_DATETIME_SCALE_MS);
|
||||
case TIME:
|
||||
return Type.UNSUPPORTED;
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user