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

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


The following commit(s) were added to refs/heads/master by this push:
     new cb9acf4918 [fix](planner)fix 'char' function's toSql implementation is 
wrong (#23860)
cb9acf4918 is described below

commit cb9acf4918717ef819b34423bde00dec84e964bf
Author: starocean999 <[email protected]>
AuthorDate: Wed Sep 6 16:16:16 2023 +0800

    [fix](planner)fix 'char' function's toSql implementation is wrong (#23860)
---
 .../org/apache/doris/analysis/FunctionCallExpr.java  | 20 ++++++++++++++++++++
 regression-test/data/view_p0/view_p0.out             |  3 +++
 regression-test/suites/view_p0/view_p0.groovy        |  9 ++++++++-
 3 files changed, 31 insertions(+), 1 deletion(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java
index 480877e666..53e3458c3e 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java
@@ -551,6 +551,26 @@ public class FunctionCallExpr extends Expr {
             sb.append("DISTINCT ");
         }
         int len = children.size();
+
+        if (fnName.getFunction().equalsIgnoreCase("char")) {
+            for (int i = 1; i < len; ++i) {
+                sb.append(children.get(i).toSql());
+                if (i < len - 1) {
+                    sb.append(", ");
+                }
+            }
+            sb.append(" using ");
+            String encodeType = children.get(0).toSql();
+            if (encodeType.charAt(0) == '\'') {
+                encodeType = encodeType.substring(1, encodeType.length());
+            }
+            if (encodeType.charAt(encodeType.length() - 1) == '\'') {
+                encodeType = encodeType.substring(0, encodeType.length() - 1);
+            }
+            sb.append(encodeType).append(")");
+            return sb.toString();
+        }
+
         // XXX_diff are used by nereids only
         if (fnName.getFunction().equalsIgnoreCase("years_diff") || 
fnName.getFunction().equalsIgnoreCase("months_diff")
                 || fnName.getFunction().equalsIgnoreCase("days_diff")
diff --git a/regression-test/data/view_p0/view_p0.out 
b/regression-test/data/view_p0/view_p0.out
index ff952fdaa7..976d4a3cb2 100644
--- a/regression-test/data/view_p0/view_p0.out
+++ b/regression-test/data/view_p0/view_p0.out
@@ -15,3 +15,6 @@
 -- !sql --
 960
 
+-- !sql2 --
+
+
diff --git a/regression-test/suites/view_p0/view_p0.groovy 
b/regression-test/suites/view_p0/view_p0.groovy
index bb6a5ab5a6..cf55380a71 100644
--- a/regression-test/suites/view_p0/view_p0.groovy
+++ b/regression-test/suites/view_p0/view_p0.groovy
@@ -122,5 +122,12 @@ suite("view_p0") {
     qt_sql "select * from test_time_diff"
 
     sql "drop view if exists test_time_diff"
-    
+
+    sql "drop view if exists test_vv1;"
+
+    sql "create view test_vv1 as select char(field2) from test_array_tbl_2;"
+
+    qt_sql2 "select * from test_vv1;"
+
+    sql "drop view if exists test_vv1;"
 }


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

Reply via email to