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(

Reply via email to