This is an automated email from the ASF dual-hosted git repository.
lzljs3620320 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-paimon.git
The following commit(s) were added to refs/heads/master by this push:
new 795e7723d [hotfix] Refactor HiveTypeUtils to visitor mode (#1681)
795e7723d is described below
commit 795e7723df5b708d0bae449ab3554794f9ece9bf
Author: Kerwin <[email protected]>
AuthorDate: Sat Jul 29 10:18:42 2023 +0800
[hotfix] Refactor HiveTypeUtils to visitor mode (#1681)
---
.../java/org/apache/paimon/hive/HiveCatalog.java | 2 +-
.../java/org/apache/paimon/hive/HiveTypeUtils.java | 332 +++++++++++++--------
.../org/apache/paimon/hive/HiveTypeUtilsTest.java | 45 ++-
.../java/org/apache/paimon/hive/HiveSchema.java | 8 +-
.../org/apache/paimon/hive/PaimonMetaHook.java | 4 +-
.../PaimonInternalRowObjectInspector.java | 2 +-
.../PaimonObjectInspectorFactory.java | 2 +-
7 files changed, 236 insertions(+), 159 deletions(-)
diff --git
a/paimon-hive/paimon-hive-catalog/src/main/java/org/apache/paimon/hive/HiveCatalog.java
b/paimon-hive/paimon-hive-catalog/src/main/java/org/apache/paimon/hive/HiveCatalog.java
index 61651b97c..5b263f262 100644
---
a/paimon-hive/paimon-hive-catalog/src/main/java/org/apache/paimon/hive/HiveCatalog.java
+++
b/paimon-hive/paimon-hive-catalog/src/main/java/org/apache/paimon/hive/HiveCatalog.java
@@ -528,7 +528,7 @@ public class HiveCatalog extends AbstractCatalog {
private FieldSchema convertToFieldSchema(DataField dataField) {
return new FieldSchema(
dataField.name(),
-
HiveTypeUtils.logicalTypeToTypeInfo(dataField.type()).getTypeName(),
+ HiveTypeUtils.toTypeInfo(dataField.type()).getTypeName(),
dataField.description());
}
diff --git
a/paimon-hive/paimon-hive-common/src/main/java/org/apache/paimon/hive/HiveTypeUtils.java
b/paimon-hive/paimon-hive-common/src/main/java/org/apache/paimon/hive/HiveTypeUtils.java
index f147af71d..986d6416a 100644
---
a/paimon-hive/paimon-hive-common/src/main/java/org/apache/paimon/hive/HiveTypeUtils.java
+++
b/paimon-hive/paimon-hive-common/src/main/java/org/apache/paimon/hive/HiveTypeUtils.java
@@ -19,13 +19,27 @@
package org.apache.paimon.hive;
import org.apache.paimon.types.ArrayType;
+import org.apache.paimon.types.BigIntType;
+import org.apache.paimon.types.BinaryType;
+import org.apache.paimon.types.BooleanType;
import org.apache.paimon.types.CharType;
import org.apache.paimon.types.DataField;
import org.apache.paimon.types.DataType;
+import org.apache.paimon.types.DataTypeDefaultVisitor;
import org.apache.paimon.types.DataTypes;
+import org.apache.paimon.types.DateType;
import org.apache.paimon.types.DecimalType;
+import org.apache.paimon.types.DoubleType;
+import org.apache.paimon.types.FloatType;
+import org.apache.paimon.types.IntType;
+import org.apache.paimon.types.LocalZonedTimestampType;
import org.apache.paimon.types.MapType;
+import org.apache.paimon.types.MultisetType;
import org.apache.paimon.types.RowType;
+import org.apache.paimon.types.SmallIntType;
+import org.apache.paimon.types.TimestampType;
+import org.apache.paimon.types.TinyIntType;
+import org.apache.paimon.types.VarBinaryType;
import org.apache.paimon.types.VarCharType;
import org.apache.hadoop.hive.common.type.HiveChar;
@@ -55,75 +69,8 @@ public class HiveTypeUtils {
* @param logicalType paimon data type.
* @return hive type info.
*/
- public static TypeInfo logicalTypeToTypeInfo(DataType logicalType) {
- switch (logicalType.getTypeRoot()) {
- case BOOLEAN:
- return TypeInfoFactory.booleanTypeInfo;
- case TINYINT:
- return TypeInfoFactory.byteTypeInfo;
- case SMALLINT:
- return TypeInfoFactory.shortTypeInfo;
- case INTEGER:
- return TypeInfoFactory.intTypeInfo;
- case BIGINT:
- return TypeInfoFactory.longTypeInfo;
- case FLOAT:
- return TypeInfoFactory.floatTypeInfo;
- case DOUBLE:
- return TypeInfoFactory.doubleTypeInfo;
- case DECIMAL:
- DecimalType decimalType = (DecimalType) logicalType;
- return TypeInfoFactory.getDecimalTypeInfo(
- decimalType.getPrecision(), decimalType.getScale());
- case CHAR:
- CharType charType = (CharType) logicalType;
- if (charType.getLength() > HiveChar.MAX_CHAR_LENGTH) {
- return TypeInfoFactory.stringTypeInfo;
- } else {
- return
TypeInfoFactory.getCharTypeInfo(charType.getLength());
- }
- case VARCHAR:
- VarCharType varCharType = (VarCharType) logicalType;
- if (varCharType.getLength() > HiveVarchar.MAX_VARCHAR_LENGTH) {
- return TypeInfoFactory.stringTypeInfo;
- } else {
- return
TypeInfoFactory.getVarcharTypeInfo(varCharType.getLength());
- }
- case BINARY:
- case VARBINARY:
- return TypeInfoFactory.binaryTypeInfo;
- case DATE:
- return TypeInfoFactory.dateTypeInfo;
- case TIMESTAMP_WITHOUT_TIME_ZONE:
- case TIMESTAMP_WITH_LOCAL_TIME_ZONE:
- return TypeInfoFactory.timestampTypeInfo;
- case ARRAY:
- ArrayType arrayType = (ArrayType) logicalType;
- return TypeInfoFactory.getListTypeInfo(
- logicalTypeToTypeInfo(arrayType.getElementType()));
- case MAP:
- MapType mapType = (MapType) logicalType;
- return TypeInfoFactory.getMapTypeInfo(
- logicalTypeToTypeInfo(mapType.getKeyType()),
- logicalTypeToTypeInfo(mapType.getValueType()));
-
- case ROW:
- RowType rowType = (RowType) logicalType;
- List<String> fieldNames =
- rowType.getFields().stream()
- .map(DataField::name)
- .collect(Collectors.toList());
- List<TypeInfo> typeInfos =
- rowType.getFields().stream()
- .map(DataField::type)
- .map(HiveTypeUtils::logicalTypeToTypeInfo)
- .collect(Collectors.toList());
- return TypeInfoFactory.getStructTypeInfo(fieldNames,
typeInfos);
-
- default:
- throw new UnsupportedOperationException(
- "Unsupported logical type " +
logicalType.asSQLString());
- }
+ public static TypeInfo toTypeInfo(DataType logicalType) {
+ return logicalType.accept(PaimonToHiveTypeVisitor.INSTANCE);
}
/**
@@ -132,9 +79,9 @@ public class HiveTypeUtils {
* @param type hive type string
* @return paimon data type
*/
- public static DataType typeInfoToLogicalType(String type) {
+ public static DataType toPaimonType(String type) {
TypeInfo typeInfo = TypeInfoUtils.getTypeInfoFromTypeString(type);
- return typeInfoToLogicalType(typeInfo);
+ return toPaimonType(typeInfo);
}
/**
@@ -143,63 +90,198 @@ public class HiveTypeUtils {
* @param typeInfo hive type info
* @return paimon data type
*/
- public static DataType typeInfoToLogicalType(TypeInfo typeInfo) {
- if (TypeInfoFactory.booleanTypeInfo.equals(typeInfo)) {
- return DataTypes.BOOLEAN();
- } else if (TypeInfoFactory.byteTypeInfo.equals(typeInfo)) {
- return DataTypes.TINYINT();
- } else if (TypeInfoFactory.shortTypeInfo.equals(typeInfo)) {
- return DataTypes.SMALLINT();
- } else if (TypeInfoFactory.intTypeInfo.equals(typeInfo)) {
- return DataTypes.INT();
- } else if (TypeInfoFactory.longTypeInfo.equals(typeInfo)) {
- return DataTypes.BIGINT();
- } else if (TypeInfoFactory.floatTypeInfo.equals(typeInfo)) {
- return DataTypes.FLOAT();
- } else if (TypeInfoFactory.doubleTypeInfo.equals(typeInfo)) {
- return DataTypes.DOUBLE();
- } else if (typeInfo instanceof DecimalTypeInfo) {
- DecimalTypeInfo decimalTypeInfo = (DecimalTypeInfo) typeInfo;
- return DataTypes.DECIMAL(decimalTypeInfo.getPrecision(),
decimalTypeInfo.getScale());
- } else if (typeInfo instanceof CharTypeInfo) {
- return DataTypes.CHAR(((CharTypeInfo) typeInfo).getLength());
- } else if (typeInfo instanceof VarcharTypeInfo) {
- return DataTypes.VARCHAR(((VarcharTypeInfo) typeInfo).getLength());
- } else if (TypeInfoFactory.stringTypeInfo.equals(typeInfo)) {
- return DataTypes.VARCHAR(VarCharType.MAX_LENGTH);
- } else if (TypeInfoFactory.binaryTypeInfo.equals(typeInfo)) {
- return DataTypes.VARBINARY(MAX_LENGTH);
- } else if (TypeInfoFactory.dateTypeInfo.equals(typeInfo)) {
- return DataTypes.DATE();
- } else if (TypeInfoFactory.timestampTypeInfo.equals(typeInfo)) {
- return DataTypes.TIMESTAMP_MILLIS();
- } else if (typeInfo instanceof ListTypeInfo) {
- ListTypeInfo listTypeInfo = (ListTypeInfo) typeInfo;
- return
DataTypes.ARRAY(typeInfoToLogicalType(listTypeInfo.getListElementTypeInfo()));
- } else if (typeInfo instanceof MapTypeInfo) {
- MapTypeInfo mapTypeInfo = (MapTypeInfo) typeInfo;
- return DataTypes.MAP(
- typeInfoToLogicalType(mapTypeInfo.getMapKeyTypeInfo()),
- typeInfoToLogicalType(mapTypeInfo.getMapValueTypeInfo()));
- } else if (typeInfo instanceof StructTypeInfo) {
- StructTypeInfo structTypeInfo = (StructTypeInfo) typeInfo;
- ArrayList<String> fieldNames =
structTypeInfo.getAllStructFieldNames();
- ArrayList<TypeInfo> typeInfos =
structTypeInfo.getAllStructFieldTypeInfos();
-
- int highestFieldId = -1;
- DataField[] dataFields = new DataField[fieldNames.size()];
- for (int i = 0; i < fieldNames.size(); i++) {
- dataFields[i] =
- new DataField(
- ++highestFieldId,
- fieldNames.get(i),
- typeInfoToLogicalType(typeInfos.get(i)),
- "");
+ public static DataType toPaimonType(TypeInfo typeInfo) {
+ return HiveToPaimonTypeVisitor.visit(typeInfo);
+ }
+
+ private static class PaimonToHiveTypeVisitor extends
DataTypeDefaultVisitor<TypeInfo> {
+
+ private static final PaimonToHiveTypeVisitor INSTANCE = new
PaimonToHiveTypeVisitor();
+
+ @Override
+ public TypeInfo visit(BooleanType booleanType) {
+ return TypeInfoFactory.booleanTypeInfo;
+ }
+
+ @Override
+ public TypeInfo visit(TinyIntType tinyIntType) {
+ return TypeInfoFactory.byteTypeInfo;
+ }
+
+ @Override
+ public TypeInfo visit(SmallIntType smallIntType) {
+ return TypeInfoFactory.shortTypeInfo;
+ }
+
+ @Override
+ public TypeInfo visit(IntType intType) {
+ return TypeInfoFactory.intTypeInfo;
+ }
+
+ @Override
+ public TypeInfo visit(BigIntType bigIntType) {
+ return TypeInfoFactory.longTypeInfo;
+ }
+
+ @Override
+ public TypeInfo visit(FloatType floatType) {
+ return TypeInfoFactory.floatTypeInfo;
+ }
+
+ @Override
+ public TypeInfo visit(DoubleType doubleType) {
+ return TypeInfoFactory.doubleTypeInfo;
+ }
+
+ @Override
+ public TypeInfo visit(DecimalType decimalType) {
+ return TypeInfoFactory.getDecimalTypeInfo(
+ decimalType.getPrecision(), decimalType.getScale());
+ }
+
+ @Override
+ public TypeInfo visit(CharType charType) {
+ if (charType.getLength() > HiveChar.MAX_CHAR_LENGTH) {
+ return TypeInfoFactory.stringTypeInfo;
+ } else {
+ return TypeInfoFactory.getCharTypeInfo(charType.getLength());
}
+ }
+
+ @Override
+ public TypeInfo visit(VarCharType varCharType) {
+ if (varCharType.getLength() > HiveVarchar.MAX_VARCHAR_LENGTH) {
+ return TypeInfoFactory.stringTypeInfo;
+ } else {
+ return
TypeInfoFactory.getVarcharTypeInfo(varCharType.getLength());
+ }
+ }
+
+ @Override
+ public TypeInfo visit(BinaryType binaryType) {
+ return TypeInfoFactory.binaryTypeInfo;
+ }
+
+ @Override
+ public TypeInfo visit(VarBinaryType varBinaryType) {
+ return TypeInfoFactory.binaryTypeInfo;
+ }
+
+ @Override
+ public TypeInfo visit(DateType dateType) {
+ return TypeInfoFactory.dateTypeInfo;
+ }
+
+ @Override
+ public TypeInfo visit(TimestampType timestampType) {
+ return TypeInfoFactory.timestampTypeInfo;
+ }
+
+ @Override
+ public TypeInfo visit(LocalZonedTimestampType localZonedTimestampType)
{
+ return TypeInfoFactory.timestampTypeInfo;
+ }
+
+ @Override
+ public TypeInfo visit(ArrayType arrayType) {
+ DataType elementType = arrayType.getElementType();
+ return TypeInfoFactory.getListTypeInfo(elementType.accept(this));
+ }
+
+ @Override
+ public TypeInfo visit(MultisetType multisetType) {
+ return TypeInfoFactory.getMapTypeInfo(
+ multisetType.getElementType().accept(this),
TypeInfoFactory.intTypeInfo);
+ }
+
+ @Override
+ public TypeInfo visit(MapType mapType) {
+ return TypeInfoFactory.getMapTypeInfo(
+ mapType.getKeyType().accept(this),
mapType.getValueType().accept(this));
+ }
+
+ @Override
+ public TypeInfo visit(RowType rowType) {
+ List<String> fieldNames =
+
rowType.getFields().stream().map(DataField::name).collect(Collectors.toList());
+ List<TypeInfo> typeInfos =
+ rowType.getFields().stream()
+ .map(DataField::type)
+ .map(type -> type.accept(this))
+ .collect(Collectors.toList());
+ return TypeInfoFactory.getStructTypeInfo(fieldNames, typeInfos);
+ }
+
+ @Override
+ protected TypeInfo defaultMethod(org.apache.paimon.types.DataType
dataType) {
+ throw new UnsupportedOperationException("Unsupported type: " +
dataType);
+ }
+ }
+
+ private static class HiveToPaimonTypeVisitor {
- return DataTypes.ROW(dataFields);
+ static DataType visit(TypeInfo type) {
+ return visit(type, new HiveToPaimonTypeVisitor());
}
- throw new UnsupportedOperationException("Unsupported hive type " +
typeInfo.getTypeName());
+ static DataType visit(TypeInfo type, HiveToPaimonTypeVisitor visitor) {
+ if (type instanceof StructTypeInfo) {
+ StructTypeInfo structTypeInfo = (StructTypeInfo) type;
+ ArrayList<String> fieldNames =
structTypeInfo.getAllStructFieldNames();
+ ArrayList<TypeInfo> typeInfos =
structTypeInfo.getAllStructFieldTypeInfos();
+ RowType.Builder builder = RowType.builder();
+ for (int i = 0; i < fieldNames.size(); i++) {
+ builder.field(fieldNames.get(i), visit(typeInfos.get(i),
visitor));
+ }
+ return builder.build();
+ } else if (type instanceof MapTypeInfo) {
+ MapTypeInfo mapTypeInfo = (MapTypeInfo) type;
+ return DataTypes.MAP(
+ visit(mapTypeInfo.getMapKeyTypeInfo(), visitor),
+ visit(mapTypeInfo.getMapValueTypeInfo(), visitor));
+ } else if (type instanceof ListTypeInfo) {
+ ListTypeInfo listTypeInfo = (ListTypeInfo) type;
+ return
DataTypes.ARRAY(visit(listTypeInfo.getListElementTypeInfo(), visitor));
+ } else {
+ return visitor.atomic(type);
+ }
+ }
+
+ public DataType atomic(TypeInfo atomic) {
+ if (TypeInfoFactory.booleanTypeInfo.equals(atomic)) {
+ return DataTypes.BOOLEAN();
+ } else if (TypeInfoFactory.byteTypeInfo.equals(atomic)) {
+ return DataTypes.TINYINT();
+ } else if (TypeInfoFactory.shortTypeInfo.equals(atomic)) {
+ return DataTypes.SMALLINT();
+ } else if (TypeInfoFactory.intTypeInfo.equals(atomic)) {
+ return DataTypes.INT();
+ } else if (TypeInfoFactory.longTypeInfo.equals(atomic)) {
+ return DataTypes.BIGINT();
+ } else if (TypeInfoFactory.floatTypeInfo.equals(atomic)) {
+ return DataTypes.FLOAT();
+ } else if (TypeInfoFactory.doubleTypeInfo.equals(atomic)) {
+ return DataTypes.DOUBLE();
+ } else if (atomic instanceof DecimalTypeInfo) {
+ DecimalTypeInfo decimalTypeInfo = (DecimalTypeInfo) atomic;
+ return DataTypes.DECIMAL(
+ decimalTypeInfo.getPrecision(),
decimalTypeInfo.getScale());
+ } else if (atomic instanceof CharTypeInfo) {
+ return DataTypes.CHAR(((CharTypeInfo) atomic).getLength());
+ } else if (atomic instanceof VarcharTypeInfo) {
+ return DataTypes.VARCHAR(((VarcharTypeInfo)
atomic).getLength());
+ } else if (TypeInfoFactory.stringTypeInfo.equals(atomic)) {
+ return DataTypes.VARCHAR(VarCharType.MAX_LENGTH);
+ } else if (TypeInfoFactory.binaryTypeInfo.equals(atomic)) {
+ return DataTypes.VARBINARY(MAX_LENGTH);
+ } else if (TypeInfoFactory.dateTypeInfo.equals(atomic)) {
+ return DataTypes.DATE();
+ } else if (TypeInfoFactory.timestampTypeInfo.equals(atomic)) {
+ return DataTypes.TIMESTAMP_MILLIS();
+ }
+
+ throw new UnsupportedOperationException(
+ "Not a supported type: " + atomic.getTypeName());
+ }
}
}
diff --git
a/paimon-hive/paimon-hive-common/src/test/java/org/apache/paimon/hive/HiveTypeUtilsTest.java
b/paimon-hive/paimon-hive-common/src/test/java/org/apache/paimon/hive/HiveTypeUtilsTest.java
index 590cc950d..25f5816f5 100644
---
a/paimon-hive/paimon-hive-common/src/test/java/org/apache/paimon/hive/HiveTypeUtilsTest.java
+++
b/paimon-hive/paimon-hive-common/src/test/java/org/apache/paimon/hive/HiveTypeUtilsTest.java
@@ -34,77 +34,74 @@ public class HiveTypeUtilsTest {
@Test
public void testLogicalTypeToTypeInfo() {
- TypeInfo boolTypeInfo =
HiveTypeUtils.logicalTypeToTypeInfo(DataTypes.BOOLEAN());
+ TypeInfo boolTypeInfo = HiveTypeUtils.toTypeInfo(DataTypes.BOOLEAN());
assertThat(boolTypeInfo.getTypeName()).isEqualTo("boolean");
- TypeInfo tinyintTypeInfo =
HiveTypeUtils.logicalTypeToTypeInfo(DataTypes.TINYINT());
+ TypeInfo tinyintTypeInfo =
HiveTypeUtils.toTypeInfo(DataTypes.TINYINT());
assertThat(tinyintTypeInfo.getTypeName()).isEqualTo("tinyint");
- TypeInfo smallintTypeInfo =
HiveTypeUtils.logicalTypeToTypeInfo(DataTypes.SMALLINT());
+ TypeInfo smallintTypeInfo =
HiveTypeUtils.toTypeInfo(DataTypes.SMALLINT());
assertThat(smallintTypeInfo.getTypeName()).isEqualTo("smallint");
- TypeInfo intTypeInfo =
HiveTypeUtils.logicalTypeToTypeInfo(DataTypes.INT());
+ TypeInfo intTypeInfo = HiveTypeUtils.toTypeInfo(DataTypes.INT());
assertThat(intTypeInfo.getTypeName()).isEqualTo("int");
- TypeInfo bigintTypeInfo =
HiveTypeUtils.logicalTypeToTypeInfo(DataTypes.BIGINT());
+ TypeInfo bigintTypeInfo = HiveTypeUtils.toTypeInfo(DataTypes.BIGINT());
assertThat(bigintTypeInfo.getTypeName()).isEqualTo("bigint");
- TypeInfo floatTypeInfo =
HiveTypeUtils.logicalTypeToTypeInfo(DataTypes.FLOAT());
+ TypeInfo floatTypeInfo = HiveTypeUtils.toTypeInfo(DataTypes.FLOAT());
assertThat(floatTypeInfo.getTypeName()).isEqualTo("float");
- TypeInfo doubleTypeInfo =
HiveTypeUtils.logicalTypeToTypeInfo(DataTypes.DOUBLE());
+ TypeInfo doubleTypeInfo = HiveTypeUtils.toTypeInfo(DataTypes.DOUBLE());
assertThat(doubleTypeInfo.getTypeName()).isEqualTo("double");
- TypeInfo decimalTypeInfo =
HiveTypeUtils.logicalTypeToTypeInfo(DataTypes.DECIMAL(38, 0));
+ TypeInfo decimalTypeInfo =
HiveTypeUtils.toTypeInfo(DataTypes.DECIMAL(38, 0));
assertThat(decimalTypeInfo.getTypeName()).isEqualTo("decimal(38,0)");
- TypeInfo decimal1TypeInfo =
HiveTypeUtils.logicalTypeToTypeInfo(DataTypes.DECIMAL(2, 2));
+ TypeInfo decimal1TypeInfo =
HiveTypeUtils.toTypeInfo(DataTypes.DECIMAL(2, 2));
assertThat(decimal1TypeInfo.getTypeName()).isEqualTo("decimal(2,2)");
- TypeInfo charTypeInfo =
HiveTypeUtils.logicalTypeToTypeInfo(DataTypes.CHAR(1));
+ TypeInfo charTypeInfo = HiveTypeUtils.toTypeInfo(DataTypes.CHAR(1));
assertThat(charTypeInfo.getTypeName()).isEqualTo("char(1)");
- TypeInfo maxLengthCharType =
-
HiveTypeUtils.logicalTypeToTypeInfo(DataTypes.CHAR(CharType.MAX_LENGTH));
+ TypeInfo maxLengthCharType =
HiveTypeUtils.toTypeInfo(DataTypes.CHAR(CharType.MAX_LENGTH));
assertThat(maxLengthCharType.getTypeName()).isEqualTo("string");
- TypeInfo varcharTypeInfo =
HiveTypeUtils.logicalTypeToTypeInfo(DataTypes.VARCHAR(10));
+ TypeInfo varcharTypeInfo =
HiveTypeUtils.toTypeInfo(DataTypes.VARCHAR(10));
assertThat(varcharTypeInfo.getTypeName()).isEqualTo("varchar(10)");
TypeInfo maxLengthVarcharType =
-
HiveTypeUtils.logicalTypeToTypeInfo(DataTypes.VARCHAR(VarCharType.MAX_LENGTH));
+
HiveTypeUtils.toTypeInfo(DataTypes.VARCHAR(VarCharType.MAX_LENGTH));
assertThat(maxLengthVarcharType.getTypeName()).isEqualTo("string");
- TypeInfo binaryTypeInfo =
HiveTypeUtils.logicalTypeToTypeInfo(DataTypes.BINARY(10));
+ TypeInfo binaryTypeInfo =
HiveTypeUtils.toTypeInfo(DataTypes.BINARY(10));
assertThat(binaryTypeInfo.getTypeName()).isEqualTo("binary");
- TypeInfo varbinaryTypeInfo =
HiveTypeUtils.logicalTypeToTypeInfo(DataTypes.VARBINARY(10));
+ TypeInfo varbinaryTypeInfo =
HiveTypeUtils.toTypeInfo(DataTypes.VARBINARY(10));
assertThat(varbinaryTypeInfo.getTypeName()).isEqualTo("binary");
- TypeInfo dateTypeInfo =
HiveTypeUtils.logicalTypeToTypeInfo(DataTypes.DATE());
+ TypeInfo dateTypeInfo = HiveTypeUtils.toTypeInfo(DataTypes.DATE());
assertThat(dateTypeInfo.getTypeName()).isEqualTo("date");
- TypeInfo timestampTypeInfo =
HiveTypeUtils.logicalTypeToTypeInfo(DataTypes.TIMESTAMP());
+ TypeInfo timestampTypeInfo =
HiveTypeUtils.toTypeInfo(DataTypes.TIMESTAMP());
assertThat(timestampTypeInfo.getTypeName()).isEqualTo("timestamp");
- TypeInfo arrayTypeInfo =
-
HiveTypeUtils.logicalTypeToTypeInfo(DataTypes.ARRAY(DataTypes.INT()));
+ TypeInfo arrayTypeInfo =
HiveTypeUtils.toTypeInfo(DataTypes.ARRAY(DataTypes.INT()));
assertThat(arrayTypeInfo.getTypeName()).isEqualTo("array<int>");
TypeInfo mapTypeInfo =
- HiveTypeUtils.logicalTypeToTypeInfo(
- DataTypes.MAP(DataTypes.BIGINT(), DataTypes.STRING()));
+ HiveTypeUtils.toTypeInfo(DataTypes.MAP(DataTypes.BIGINT(),
DataTypes.STRING()));
assertThat(mapTypeInfo.getTypeName()).isEqualTo("map<bigint,string>");
TypeInfo rowTypeInfo =
- HiveTypeUtils.logicalTypeToTypeInfo(
+ HiveTypeUtils.toTypeInfo(
DataTypes.ROW(
new DataField(0, "id", new IntType()),
new DataField(1, "name", new
VarCharType(Integer.MAX_VALUE))));
assertThat(rowTypeInfo.getTypeName()).isEqualTo("struct<id:int,name:string>");
TypeInfo timestampWithLocalZoneTypeInfo =
-
HiveTypeUtils.logicalTypeToTypeInfo(DataTypes.TIMESTAMP_WITH_LOCAL_TIME_ZONE());
+
HiveTypeUtils.toTypeInfo(DataTypes.TIMESTAMP_WITH_LOCAL_TIME_ZONE());
assertThat(timestampWithLocalZoneTypeInfo.getTypeName()).isEqualTo("timestamp");
}
}
diff --git
a/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/HiveSchema.java
b/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/HiveSchema.java
index 20afe352e..c33b321ac 100644
---
a/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/HiveSchema.java
+++
b/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/HiveSchema.java
@@ -121,9 +121,7 @@ public class HiveSchema {
properties.getProperty(hive_metastoreConstants.META_TABLE_COLUMN_TYPES);
List<TypeInfo> typeInfos =
TypeInfoUtils.getTypeInfosFromTypeString(columnTypes);
List<DataType> dataTypes =
- typeInfos.stream()
- .map(HiveTypeUtils::typeInfoToLogicalType)
- .collect(Collectors.toList());
+
typeInfos.stream().map(HiveTypeUtils::toPaimonType).collect(Collectors.toList());
// Partitions are only used for checking. They are not contained in
the fields of a Hive
// table.
@@ -218,7 +216,7 @@ public class HiveSchema {
isPartitionedTable &&
schemaPartitionKeySet.contains(field.name());
if (!isPartitionColumn) {
schemaFieldNames.add(field.name());
-
schemaFieldTypeInfos.add(HiveTypeUtils.logicalTypeToTypeInfo(field.type()));
+
schemaFieldTypeInfos.add(HiveTypeUtils.toTypeInfo(field.type()));
}
}
@@ -275,7 +273,7 @@ public class HiveSchema {
List<String> schemaPartitionKeys = tableSchema.partitionKeys();
List<TypeInfo> schemaPartitionTypeInfos =
tableSchema.logicalPartitionType().getFields().stream()
- .map(f ->
HiveTypeUtils.logicalTypeToTypeInfo(f.type()))
+ .map(f -> HiveTypeUtils.toTypeInfo(f.type()))
.collect(Collectors.toList());
if (schemaPartitionKeys.size() != hivePartitionKeys.size()) {
diff --git
a/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/PaimonMetaHook.java
b/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/PaimonMetaHook.java
index fe2ebfad1..a0c20772e 100644
---
a/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/PaimonMetaHook.java
+++
b/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/PaimonMetaHook.java
@@ -47,7 +47,7 @@ import java.util.List;
import java.util.Optional;
import static org.apache.hadoop.hive.metastore.Warehouse.getDnsPath;
-import static org.apache.paimon.hive.HiveTypeUtils.typeInfoToLogicalType;
+import static org.apache.paimon.hive.HiveTypeUtils.toPaimonType;
/**
* {@link HiveMetaHook} for paimon. Currently this class is only used to set
input and output
@@ -115,7 +115,7 @@ public class PaimonMetaHook implements HiveMetaHook {
fieldSchema ->
schemaBuilder.column(
fieldSchema.getName().toLowerCase(),
-
typeInfoToLogicalType(fieldSchema.getType()),
+ toPaimonType(fieldSchema.getType()),
fieldSchema.getComment()));
try {
schemaManager.createTable(schemaBuilder.build());
diff --git
a/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/objectinspector/PaimonInternalRowObjectInspector.java
b/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/objectinspector/PaimonInternalRowObjectInspector.java
index 776dc4f68..c36d5830e 100644
---
a/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/objectinspector/PaimonInternalRowObjectInspector.java
+++
b/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/objectinspector/PaimonInternalRowObjectInspector.java
@@ -65,7 +65,7 @@ public class PaimonInternalRowObjectInspector extends
StructObjectInspector {
typeNameBuilder
.append(name)
.append(":")
-
.append(HiveTypeUtils.logicalTypeToTypeInfo(logicalType).getTypeName());
+
.append(HiveTypeUtils.toTypeInfo(logicalType).getTypeName());
}
typeNameBuilder.append(">");
diff --git
a/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/objectinspector/PaimonObjectInspectorFactory.java
b/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/objectinspector/PaimonObjectInspectorFactory.java
index 774291688..b8f798f41 100644
---
a/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/objectinspector/PaimonObjectInspectorFactory.java
+++
b/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/objectinspector/PaimonObjectInspectorFactory.java
@@ -50,7 +50,7 @@ public class PaimonObjectInspectorFactory {
case BINARY:
case VARBINARY:
return
PrimitiveObjectInspectorFactory.getPrimitiveJavaObjectInspector(
- (PrimitiveTypeInfo)
HiveTypeUtils.logicalTypeToTypeInfo(logicalType));
+ (PrimitiveTypeInfo)
HiveTypeUtils.toTypeInfo(logicalType));
case DECIMAL:
DecimalType decimalType = (DecimalType) logicalType;
return new PaimonDecimalObjectInspector(