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

kxiao pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git

commit 7ed47e6ee3ef56836b36cf74534867db6d17b62c
Author: Calvin Kirs <[email protected]>
AuthorDate: Wed Aug 16 11:49:04 2023 +0800

    [Fix](View)varchar type conversion error (#22987)
---
 .../java/org/apache/doris/catalog/ScalarType.java  |  2 +-
 .../doris/planner/TableFunctionPlanTest.java       | 24 +++++++++++-----------
 regression-test/data/view_p0/view_p0.out           |  3 +++
 regression-test/suites/view_p0/view_p0.groovy      | 17 +++++++++++++++
 4 files changed, 33 insertions(+), 13 deletions(-)

diff --git 
a/fe/fe-common/src/main/java/org/apache/doris/catalog/ScalarType.java 
b/fe/fe-common/src/main/java/org/apache/doris/catalog/ScalarType.java
index 81863a6b53..f1f05f3c6b 100644
--- a/fe/fe-common/src/main/java/org/apache/doris/catalog/ScalarType.java
+++ b/fe/fe-common/src/main/java/org/apache/doris/catalog/ScalarType.java
@@ -575,7 +575,7 @@ public class ScalarType extends Type {
                 break;
             case VARCHAR:
                 if (isWildcardVarchar()) {
-                    stringBuilder.append("varchar(*)");
+                    stringBuilder.append("varchar");
                 } else if (Strings.isNullOrEmpty(lenStr)) {
                     
stringBuilder.append("varchar").append("(").append(len).append(")");
                 } else {
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/planner/TableFunctionPlanTest.java 
b/fe/fe-core/src/test/java/org/apache/doris/planner/TableFunctionPlanTest.java
index f1e187ccc0..1918efee3a 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/planner/TableFunctionPlanTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/planner/TableFunctionPlanTest.java
@@ -79,7 +79,7 @@ public class TableFunctionPlanTest {
                 explainString.contains("table function: 
explode_split(`default_cluster:db1`.`tbl1`.`k2`, ',')"));
         Assert.assertTrue(explainString.contains("tuple ids: 0 1"));
         Assert.assertTrue(explainString.contains("TupleDescriptor{id=1, 
tbl=tmp, byteSize=16}"));
-        Assert.assertTrue(explainString.contains("SlotDescriptor{id=1, col=e1, 
colUniqueId=-1, type=varchar(*)"));
+        Assert.assertTrue(explainString.contains("SlotDescriptor{id=1, col=e1, 
colUniqueId=-1, type=varchar"));
     }
 
     /* Case2 without output explode column
@@ -95,7 +95,7 @@ public class TableFunctionPlanTest {
                 explainString.contains("table function: 
explode_split(`default_cluster:db1`.`tbl1`.`k2`, ',')"));
         Assert.assertTrue(explainString.contains("tuple ids: 0 1"));
         Assert.assertTrue(explainString.contains("TupleDescriptor{id=1, 
tbl=tmp, byteSize=16}"));
-        Assert.assertTrue(explainString.contains("SlotDescriptor{id=1, col=e1, 
colUniqueId=-1, type=varchar(*)"));
+        Assert.assertTrue(explainString.contains("SlotDescriptor{id=1, col=e1, 
colUniqueId=-1, type=varchar"));
     }
 
     /* Case3 group by explode column
@@ -116,7 +116,7 @@ public class TableFunctionPlanTest {
                 explainString.contains("table function: 
explode_split(`default_cluster:db1`.`tbl1`.`k2`, ',')"));
         Assert.assertTrue(explainString.contains("tuple ids: 0 1"));
         Assert.assertTrue(explainString.contains("TupleDescriptor{id=1, 
tbl=tmp, byteSize=16}"));
-        Assert.assertTrue(explainString.contains("SlotDescriptor{id=1, col=e1, 
colUniqueId=-1, type=varchar(*)"));
+        Assert.assertTrue(explainString.contains("SlotDescriptor{id=1, col=e1, 
colUniqueId=-1, type=varchar"));
         // group by tuple
         Assert.assertTrue(explainString.contains("TupleDescriptor{id=2, 
tbl=null, byteSize=32}"));
     }
@@ -135,7 +135,7 @@ public class TableFunctionPlanTest {
         Assert.assertTrue(explainString.contains("PREDICATES: `e1` = '1'"));
         Assert.assertTrue(explainString.contains("tuple ids: 0 1"));
         Assert.assertTrue(explainString.contains("TupleDescriptor{id=1, 
tbl=tmp, byteSize=16}"));
-        Assert.assertTrue(explainString.contains("SlotDescriptor{id=1, col=e1, 
colUniqueId=-1, type=varchar(*)"));
+        Assert.assertTrue(explainString.contains("SlotDescriptor{id=1, col=e1, 
colUniqueId=-1, type=varchar"));
     }
 
     /* Case5 where normal column
@@ -151,7 +151,7 @@ public class TableFunctionPlanTest {
                 explainString.contains("table function: 
explode_split(`default_cluster:db1`.`tbl1`.`k2`, ',')"));
         Assert.assertTrue(explainString.contains("tuple ids: 0 1"));
         Assert.assertTrue(explainString.contains("TupleDescriptor{id=1, 
tbl=tmp, byteSize=16}"));
-        Assert.assertTrue(explainString.contains("SlotDescriptor{id=1, col=e1, 
colUniqueId=-1, type=varchar(*)"));
+        Assert.assertTrue(explainString.contains("SlotDescriptor{id=1, col=e1, 
colUniqueId=-1, type=varchar"));
         
Assert.assertTrue(UtFrameUtils.checkPlanResultContainsNode(explainString, 0, 
"OlapScanNode"));
         Assert.assertTrue(explainString.contains("PREDICATES: `k1` = 1"));
     }
@@ -171,10 +171,10 @@ public class TableFunctionPlanTest {
         Assert.assertTrue(explainString.contains("lateral view tuple id: 1 
2"));
         // lateral view 2 tuple
         Assert.assertTrue(explainString.contains("TupleDescriptor{id=1, 
tbl=tmp2, byteSize=16}"));
-        Assert.assertTrue(explainString.contains("SlotDescriptor{id=1, col=e2, 
colUniqueId=-1, type=varchar(*)"));
+        Assert.assertTrue(explainString.contains("SlotDescriptor{id=1, col=e2, 
colUniqueId=-1, type=varchar"));
         // lateral view 1 tuple
         Assert.assertTrue(explainString.contains("TupleDescriptor{id=2, 
tbl=tmp1, byteSize=16}"));
-        Assert.assertTrue(explainString.contains("SlotDescriptor{id=2, col=e1, 
colUniqueId=-1, type=varchar(*)"));
+        Assert.assertTrue(explainString.contains("SlotDescriptor{id=2, col=e1, 
colUniqueId=-1, type=varchar"));
     }
 
     // test explode_split function
@@ -203,7 +203,7 @@ public class TableFunctionPlanTest {
         String sql = "explain select /*+ SET_VAR(enable_nereids_planner=false) 
*/ k1 from db1.tbl1 where explode_split(k2, \",\");";
         String explainString = UtFrameUtils.getSQLPlanOrErrorMsg(ctx, sql);
         Assert.assertTrue(
-                explainString.contains("No matching function with signature: 
explode_split(varchar(1), varchar(*))."));
+                explainString.contains("No matching function with signature: 
explode_split(varchar(1), varchar)."));
     }
 
     // test projection
@@ -368,7 +368,7 @@ public class TableFunctionPlanTest {
         Assert.assertTrue(explainString.contains("lateral view tuple id: 2"));
         Assert.assertTrue(explainString.contains("output slot id: 2"));
         Assert.assertTrue(explainString.contains("tuple ids: 0 2"));
-        Assert.assertTrue(explainString.contains("SlotDescriptor{id=2, col=e1, 
colUniqueId=-1, type=varchar(*)"));
+        Assert.assertTrue(explainString.contains("SlotDescriptor{id=2, col=e1, 
colUniqueId=-1, type=varchar"));
     }
 
     /*
@@ -384,7 +384,7 @@ public class TableFunctionPlanTest {
         Assert.assertTrue(explainString.contains("lateral view tuple id: 3"));
         Assert.assertTrue(explainString.contains("output slot id: 3"));
         Assert.assertTrue(explainString.contains("tuple ids: 1 3"));
-        Assert.assertTrue(explainString.contains("SlotDescriptor{id=3, col=e1, 
colUniqueId=-1, type=varchar(*)"));
+        Assert.assertTrue(explainString.contains("SlotDescriptor{id=3, col=e1, 
colUniqueId=-1, type=varchar"));
     }
 
     /*
@@ -412,10 +412,10 @@ public class TableFunctionPlanTest {
                 "SlotDescriptor{id=2,col=k1,colUniqueId=0,type=int"
         ));
         Assert.assertTrue(formatString.contains(
-                "SlotDescriptor{id=3,col=null,colUniqueId=null,type=varchar(*)"
+                "SlotDescriptor{id=3,col=null,colUniqueId=null,type=varchar"
         ));
         Assert.assertTrue(formatString.contains(
-                "SlotDescriptor{id=6,col=e1,colUniqueId=-1,type=varchar(*)"
+                "SlotDescriptor{id=6,col=e1,colUniqueId=-1,type=varchar"
         ));
     }
 
diff --git a/regression-test/data/view_p0/view_p0.out 
b/regression-test/data/view_p0/view_p0.out
index 98e3c1adce..1593deb5d1 100644
--- a/regression-test/data/view_p0/view_p0.out
+++ b/regression-test/data/view_p0/view_p0.out
@@ -2,3 +2,6 @@
 -- !sql --
 1      4x0fdjDNBZAJxCD7qm/EHg==
 
+-- !sql --
+1
+
diff --git a/regression-test/suites/view_p0/view_p0.groovy 
b/regression-test/suites/view_p0/view_p0.groovy
index 73f5d7a246..df65e24212 100644
--- a/regression-test/suites/view_p0/view_p0.groovy
+++ b/regression-test/suites/view_p0/view_p0.groovy
@@ -21,4 +21,21 @@ suite("view_p0") {
         create view test_view as select 
1,to_base64(AES_ENCRYPT('doris','doris')); 
     """
     qt_sql "select * from test_view;"
+    
+    sql """DROP TABLE IF EXISTS test_view_table"""
+    
+    sql """ 
+        create table test_view_table (id int) distributed by hash(id) 
properties('replication_num'='1');
+    """
+    
+    sql """insert into test_view_table values(1);"""
+    
+    sql """DROP VIEW IF EXISTS test_varchar_view"""
+    
+    sql """ 
+        create view test_varchar_view (id) as  SELECT GROUP_CONCAT(cast( id as 
varchar)) from test_view_table; 
+    """
+    
+    qt_sql "select * from test_varchar_view;"
+    
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to