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 8f076d5b04c52e08a0414cb54246449a48f5ca95
Author: Pxl <pxl...@qq.com>
AuthorDate: Thu Sep 7 20:25:38 2023 +0800

    [Bug](type) fix wildcard char's tostring get wrong result (#24041)
    
    fix wildcard char's tostring get wrong result
---
 fe/fe-common/src/main/java/org/apache/doris/catalog/ScalarType.java | 6 ++++--
 .../src/test/java/org/apache/doris/catalog/CreateFunctionTest.java  | 4 ++--
 regression-test/data/datatype_p0/string/test_string_basic.out       | 3 +++
 regression-test/suites/datatype_p0/string/test_string_basic.groovy  | 3 +++
 4 files changed, 12 insertions(+), 4 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 7500e231ef..e3f1b518d0 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
@@ -532,7 +532,7 @@ public class ScalarType extends Type {
     public String toString() {
         if (type == PrimitiveType.CHAR) {
             if (isWildcardChar()) {
-                return "CHAR(*)";
+                return "CHARACTER";
             }
             return "CHAR(" + len + ")";
         } else  if (type == PrimitiveType.DECIMALV2) {
@@ -567,7 +567,9 @@ public class ScalarType extends Type {
         StringBuilder stringBuilder = new StringBuilder();
         switch (type) {
             case CHAR:
-                if (Strings.isNullOrEmpty(lenStr)) {
+                if (isWildcardVarchar()) {
+                    stringBuilder.append("character");
+                } else if (Strings.isNullOrEmpty(lenStr)) {
                     
stringBuilder.append("char").append("(").append(len).append(")");
                 } else {
                     
stringBuilder.append("char").append("(`").append(lenStr).append("`)");
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/catalog/CreateFunctionTest.java 
b/fe/fe-core/src/test/java/org/apache/doris/catalog/CreateFunctionTest.java
index 1d5a1ef1e7..41d991b41e 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/catalog/CreateFunctionTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/catalog/CreateFunctionTest.java
@@ -199,7 +199,7 @@ public class CreateFunctionTest {
         Assert.assertTrue(constExprLists.get(0).get(0) instanceof 
StringLiteral);
 
         queryStr = "select db1.to_char(k1, 4) from db1.tbl1;";
-        
Assert.assertTrue(dorisAssert.query(queryStr).explainQuery().contains("CAST(`k1`
 AS CHAR(*))"));
+        
Assert.assertTrue(dorisAssert.query(queryStr).explainQuery().contains("CAST(`k1`
 AS CHARACTER"));
     }
 
     @Test
@@ -285,7 +285,7 @@ public class CreateFunctionTest {
         testFunctionQuery(ctx, queryStr, true);
 
         queryStr = "select to_char(k1, 4) from db2.tbl1;";
-        
Assert.assertTrue(dorisAssert.query(queryStr).explainQuery().contains("CAST(`k1`
 AS CHAR(*))"));
+        
Assert.assertTrue(dorisAssert.query(queryStr).explainQuery().contains("CAST(`k1`
 AS CHARACTER)"));
     }
 
     private void testFunctionQuery(ConnectContext ctx, String queryStr, 
Boolean isStringLiteral) throws Exception {
diff --git a/regression-test/data/datatype_p0/string/test_string_basic.out 
b/regression-test/data/datatype_p0/string/test_string_basic.out
index fc1268643c..6270f4f5d8 100644
--- a/regression-test/data/datatype_p0/string/test_string_basic.out
+++ b/regression-test/data/datatype_p0/string/test_string_basic.out
@@ -95,3 +95,6 @@
 8008   8       0
 8008   8008    0
 
+-- !test --
+a
+
diff --git a/regression-test/suites/datatype_p0/string/test_string_basic.groovy 
b/regression-test/suites/datatype_p0/string/test_string_basic.groovy
index 618353ccce..c6527a4851 100644
--- a/regression-test/suites/datatype_p0/string/test_string_basic.groovy
+++ b/regression-test/suites/datatype_p0/string/test_string_basic.groovy
@@ -346,5 +346,8 @@ suite("test_string_basic") {
         test_string_cmp
     order by s1, s2, counts;
     """
+    sql "drop view if exists char_view;"
+    sql "create view char_view as select cast('a' as CHARACTER);"
+    qt_test "select * from char_view";
 }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to