This is an automated email from the ASF dual-hosted git repository.

tyrantlucifer pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-seatunnel.git


The following commit(s) were added to refs/heads/dev by this push:
     new 7441cd96e [Hotfix][API] Fix parse nested row data type key changed 
upper (#4459)
7441cd96e is described below

commit 7441cd96ee260f52ae115bfc97e68eb1c7bc4ea2
Author: 沫 <[email protected]>
AuthorDate: Mon Apr 3 17:33:33 2023 +0800

    [Hotfix][API] Fix parse nested row data type key changed upper (#4459)
    
    * [hotfix][api]fix parse nested row data type key changed upper
    
    * [hotfix][api]add ut to verify parse field name correct
    
    ---------
    
    Co-authored-by: zhoutao.tobeone <[email protected]>
---
 .../seatunnel/api/table/catalog/CatalogTableUtil.java    | 16 ++++++++--------
 .../api/table/catalog/CatalogTableUtilTest.java          |  5 +++++
 2 files changed, 13 insertions(+), 8 deletions(-)

diff --git 
a/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/CatalogTableUtil.java
 
b/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/CatalogTableUtil.java
index a6fa269ab..637a2c9ff 100644
--- 
a/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/CatalogTableUtil.java
+++ 
b/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/CatalogTableUtil.java
@@ -184,10 +184,9 @@ public class CatalogTableUtil implements Serializable {
     }
 
     public static SeaTunnelDataType<?> parseDataType(String columnStr) {
-        columnStr = columnStr.toUpperCase().replace(" ", "");
         SqlType sqlType = null;
         try {
-            sqlType = SqlType.valueOf(columnStr);
+            sqlType = SqlType.valueOf(columnStr.toUpperCase().replace(" ", 
""));
         } catch (IllegalArgumentException e) {
             // nothing
         }
@@ -228,14 +227,15 @@ public class CatalogTableUtil implements Serializable {
     }
 
     private static SeaTunnelDataType<?> parseComplexDataType(String columnStr) 
{
-        if (columnStr.startsWith(SqlType.MAP.name())) {
-            return parseMapType(columnStr);
+        String column = columnStr.toUpperCase().replace(" ", "");
+        if (column.startsWith(SqlType.MAP.name())) {
+            return parseMapType(column);
         }
-        if (columnStr.startsWith(SqlType.ARRAY.name())) {
-            return parseArrayType(columnStr);
+        if (column.startsWith(SqlType.ARRAY.name())) {
+            return parseArrayType(column);
         }
-        if (columnStr.startsWith(SqlType.DECIMAL.name())) {
-            return parseDecimalType(columnStr);
+        if (column.startsWith(SqlType.DECIMAL.name())) {
+            return parseDecimalType(column);
         }
         return parseRowType(columnStr);
     }
diff --git 
a/seatunnel-api/src/test/java/org/apache/seatunnel/api/table/catalog/CatalogTableUtilTest.java
 
b/seatunnel-api/src/test/java/org/apache/seatunnel/api/table/catalog/CatalogTableUtilTest.java
index 6ed5e5efa..3d8c8344c 100644
--- 
a/seatunnel-api/src/test/java/org/apache/seatunnel/api/table/catalog/CatalogTableUtilTest.java
+++ 
b/seatunnel-api/src/test/java/org/apache/seatunnel/api/table/catalog/CatalogTableUtilTest.java
@@ -81,6 +81,11 @@ public class CatalogTableUtilTest {
                         BasicType.STRING_TYPE,
                         new MapType<>(BasicType.STRING_TYPE, 
ArrayType.INT_ARRAY_TYPE)));
         
Assertions.assertEquals(seaTunnelRowType.getFieldType(17).getSqlType(), 
SqlType.ROW);
+        SeaTunnelRowType nestedRowFieldType = (SeaTunnelRowType) 
seaTunnelRowType.getFieldType(17);
+        Assertions.assertEquals(
+                "map", 
nestedRowFieldType.getFieldName(nestedRowFieldType.indexOf("map")));
+        Assertions.assertEquals(
+                "row", 
nestedRowFieldType.getFieldName(nestedRowFieldType.indexOf("row")));
     }
 
     public static String getTestConfigFile(String configFile)

Reply via email to