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 40e69c209a8d599559a85dbf32a50496715c73b8
Author: Calvin Kirs <acm_mas...@163.com>
AuthorDate: Mon Aug 21 11:19:10 2023 +0800

    [Fix](View)Use the element_at function to replace %element_extract% to 
prevent parsing errors (#23093)
---
 fe/fe-core/src/main/cup/sql_parser.cup        |  6 +--
 regression-test/data/view_p0/view_p0.out      |  7 +++
 regression-test/suites/view_p0/view_p0.groovy | 75 +++++++++++++++++++++++++++
 3 files changed, 85 insertions(+), 3 deletions(-)

diff --git a/fe/fe-core/src/main/cup/sql_parser.cup 
b/fe/fe-core/src/main/cup/sql_parser.cup
index befa24e907..89fdac5241 100644
--- a/fe/fe-core/src/main/cup/sql_parser.cup
+++ b/fe/fe-core/src/main/cup/sql_parser.cup
@@ -6984,7 +6984,7 @@ column_subscript ::=
   {: ArrayList<Expr> list = new ArrayList<Expr>();
      list.add(e);
      list.add(index);
-     RESULT = new FunctionCallExpr("%element_extract%", list);
+     RESULT = new FunctionCallExpr("element_at", list);
   :}
   ;
 
@@ -6993,14 +6993,14 @@ column_slice ::=
   {: ArrayList<Expr> list = new ArrayList<Expr>();
        list.add(e);
        list.add(offset);
-       RESULT = new FunctionCallExpr("%element_slice%", list);
+       RESULT = new FunctionCallExpr("array_slice", list);
   :}
   | expr:e LBRACKET expr:offset COLON expr:length RBRACKET
   {: ArrayList<Expr> list = new ArrayList<Expr>();
      list.add(e);
      list.add(offset);
      list.add(length);
-     RESULT = new FunctionCallExpr("%element_slice%", list);
+     RESULT = new FunctionCallExpr("array_slice", list);
   :}
   ;
 
diff --git a/regression-test/data/view_p0/view_p0.out 
b/regression-test/data/view_p0/view_p0.out
index 1593deb5d1..a90e1f9623 100644
--- a/regression-test/data/view_p0/view_p0.out
+++ b/regression-test/data/view_p0/view_p0.out
@@ -5,3 +5,10 @@
 -- !sql --
 1
 
+-- !sql --
+1
+
+-- !sql --
+1      2023-08-01      DORID_FIELD1    DORID_FIELD2    ["cat", "dog"]  cat
+1      2023-08-01      DORID_FIELD1    DORID_FIELD2    ["cat", "dog"]  dog
+
diff --git a/regression-test/suites/view_p0/view_p0.groovy 
b/regression-test/suites/view_p0/view_p0.groovy
index df65e24212..a6f20d4102 100644
--- a/regression-test/suites/view_p0/view_p0.groovy
+++ b/regression-test/suites/view_p0/view_p0.groovy
@@ -37,5 +37,80 @@ suite("view_p0") {
     """
     
     qt_sql "select * from test_varchar_view;"
+    qt_sql "select cast( id as varchar(*)) from test_view_table;"
+    
+    // array view
+    sql """DROP TABLE IF EXISTS test_array_tbl_1"""
+    
+    sql """ 
+           CREATE TABLE `test_array_tbl_1` (
+             `id` int(11) NULL COMMENT "",
+             `field1` DATEV2,
+             `field2` varchar(1000),
+             `field3` varchar(1000),
+              `field4` ARRAY<STRING>,
+              `field5` ARRAY<STRING>
+            ) ENGINE=OLAP
+            DUPLICATE KEY(`id`)
+            COMMENT "OLAP"
+            DISTRIBUTED BY HASH(`id`) BUCKETS 1
+            PROPERTIES (
+            "replication_allocation" = "tag.location.default: 1",
+            "in_memory" = "false",
+            "storage_format" = "V2"
+            );
+    """
+    
+    sql """DROP TABLE IF EXISTS test_array_tbl_2"""
+    sql """ 
+           CREATE TABLE `test_array_tbl_2` (
+             `id` int(11) NULL COMMENT "",
+             `field1` DATEV2,
+             `field2` varchar(1000),
+             `field3` varchar(1000),
+              `field4` ARRAY<STRING>,
+              `field5` ARRAY<STRING>
+            ) ENGINE=OLAP
+            DUPLICATE KEY(`id`)
+            COMMENT "OLAP"
+            DISTRIBUTED BY HASH(`id`) BUCKETS 1
+            PROPERTIES (
+            "replication_allocation" = "tag.location.default: 1",
+            "in_memory" = "false",
+            "storage_format" = "V2"
+            );
+    """
+    sql """INSERT into test_array_tbl_1 
values(1,'2023-08-01',"DORID_FIELD1","DORID_FIELD2",["cat","dog"],["cat","dog"])"""
+    
+    sql """INSERT into test_array_tbl_2 
values(1,'2023-08-01',"DORID_FIELD1","DORID_FIELD2",["cat","dog"],["cat","dog"])"""
+    
+    sql """DROP VIEW IF EXISTS test_element_at_view"""
+    
+    sql """ 
+        CREATE VIEW test_element_at_view AS
+        SELECT id, dm, pn, field3, ms, ek[sm] AS ek
+        FROM
+        (
+            SELECT
+                id, dm, pn, field3, ek, ms, tmp,
+                SUM(tmp) OVER (PARTITION BY id, dm, pn, field3 ORDER BY id 
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS sm
+            FROM
+            (
+                SELECT
+                    a.id AS id,
+                    a.field1 AS dm,
+                    a.field2 AS pn,
+                    field3,
+                    field4 AS ek,
+                    field5 AS ms,
+                    1 AS tmp
+                FROM
+                (
+                    SELECT * FROM test_array_tbl_1 LATERAL VIEW 
explode(field4) test_array_tbl_2 AS mension
+                ) a
+            ) b
+        ) c;
+    """
+    qt_sql "select * from test_element_at_view;"
     
 }


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

Reply via email to