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


The following commit(s) were added to refs/heads/branch-2.0 by this push:
     new 83e7ab394cc [fix](function)  fix EXPLODE_JSON_ARRAY_STRING function 
(#25519) (#26290)
83e7ab394cc is described below

commit 83e7ab394cc5516ded4cd8c299fd9cf90d935c3a
Author: Mryange <[email protected]>
AuthorDate: Thu Nov 2 21:39:37 2023 +0800

    [fix](function)  fix EXPLODE_JSON_ARRAY_STRING function (#25519) (#26290)
---
 .../exprs/table_function/vexplode_json_array.cpp   |   8 +-
 .../vec/exprs/table_function/vexplode_json_array.h |  22 ----
 .../table_function/explode_json_array.out          | 138 +++++++++++++++++++--
 .../table_function/explode_json_array.groovy       |  16 ++-
 4 files changed, 145 insertions(+), 39 deletions(-)

diff --git a/be/src/vec/exprs/table_function/vexplode_json_array.cpp 
b/be/src/vec/exprs/table_function/vexplode_json_array.cpp
index 811d34ccdec..64dec1a7e3d 100644
--- a/be/src/vec/exprs/table_function/vexplode_json_array.cpp
+++ b/be/src/vec/exprs/table_function/vexplode_json_array.cpp
@@ -124,19 +124,19 @@ int ParsedData::set_output(ExplodeJsonArrayType type, 
rapidjson::Document& docum
                 // change each time `emplace_back()` is called.
                 break;
             case rapidjson::Type::kFalseType:
-                _data_string.emplace_back(true_value);
+                _backup_string.emplace_back(true_value);
                 _string_nulls.push_back(false);
                 break;
             case rapidjson::Type::kTrueType:
-                _data_string.emplace_back(false_value);
+                _backup_string.emplace_back(false_value);
                 _string_nulls.push_back(false);
                 break;
             case rapidjson::Type::kNullType:
-                _data_string.push_back({});
+                _backup_string.emplace_back();
                 _string_nulls.push_back(true);
                 break;
             default:
-                _data_string.push_back({});
+                _backup_string.emplace_back();
                 _string_nulls.push_back(true);
                 break;
             }
diff --git a/be/src/vec/exprs/table_function/vexplode_json_array.h 
b/be/src/vec/exprs/table_function/vexplode_json_array.h
index 6b5a0f76513..62f818a0530 100644
--- a/be/src/vec/exprs/table_function/vexplode_json_array.h
+++ b/be/src/vec/exprs/table_function/vexplode_json_array.h
@@ -56,28 +56,6 @@ struct ParsedData {
     std::vector<bool> _string_nulls;
     char tmp_buf[128] = {0};
 
-    void reset(ExplodeJsonArrayType type) {
-        switch (type) {
-        case ExplodeJsonArrayType::INT:
-            _data.clear();
-            _backup_int.clear();
-            break;
-        case ExplodeJsonArrayType::DOUBLE:
-            _data.clear();
-            _backup_double.clear();
-            break;
-        case ExplodeJsonArrayType::JSON:
-        case ExplodeJsonArrayType::STRING:
-            _data_string.clear();
-            _backup_string.clear();
-            _string_nulls.clear();
-            break;
-        default:
-            CHECK(false) << type;
-            break;
-        }
-    }
-
     void* get_value(ExplodeJsonArrayType type, int64_t offset, bool real = 
false) {
         switch (type) {
         case ExplodeJsonArrayType::INT:
diff --git 
a/regression-test/data/query_p0/sql_functions/table_function/explode_json_array.out
 
b/regression-test/data/query_p0/sql_functions/table_function/explode_json_array.out
index 2300079d0a8..ccc012e1121 100644
--- 
a/regression-test/data/query_p0/sql_functions/table_function/explode_json_array.out
+++ 
b/regression-test/data/query_p0/sql_functions/table_function/explode_json_array.out
@@ -28,39 +28,39 @@
 -- !explode_json_array9 --
 
 -- !explode_json_array10 --
+100    John    30      1       Street 1        1.23    -3
+100    John    30      1       Street 1        22.214  -3
+100    John    30      1       Street 1        214.1   -3
 100    John    30      1       Street 1        1.23    1
 100    John    30      1       Street 1        22.214  1
 100    John    30      1       Street 1        214.1   1
-100    John    30      1       Street 1        1.23    3
-100    John    30      1       Street 1        22.214  3
-100    John    30      1       Street 1        214.1   3
 100    John    30      1       Street 1        1.23    b
 100    John    30      1       Street 1        22.214  b
 100    John    30      1       Street 1        214.1   b
+200    Mary    \N      1       Street 2        1.23    -3
+200    Mary    \N      1       Street 2        22.214  -3
+200    Mary    \N      1       Street 2        214.1   -3
 200    Mary    \N      1       Street 2        1.23    1
 200    Mary    \N      1       Street 2        22.214  1
 200    Mary    \N      1       Street 2        214.1   1
-200    Mary    \N      1       Street 2        1.23    3
-200    Mary    \N      1       Street 2        22.214  3
-200    Mary    \N      1       Street 2        214.1   3
 200    Mary    \N      1       Street 2        1.23    b
 200    Mary    \N      1       Street 2        22.214  b
 200    Mary    \N      1       Street 2        214.1   b
+300    Mike    80      3       Street 3        1.23    -3
+300    Mike    80      3       Street 3        22.214  -3
+300    Mike    80      3       Street 3        214.1   -3
 300    Mike    80      3       Street 3        1.23    1
 300    Mike    80      3       Street 3        22.214  1
 300    Mike    80      3       Street 3        214.1   1
-300    Mike    80      3       Street 3        1.23    3
-300    Mike    80      3       Street 3        22.214  3
-300    Mike    80      3       Street 3        214.1   3
 300    Mike    80      3       Street 3        1.23    b
 300    Mike    80      3       Street 3        22.214  b
 300    Mike    80      3       Street 3        214.1   b
+400    Dan     50      4       Street 4        1.23    -3
+400    Dan     50      4       Street 4        22.214  -3
+400    Dan     50      4       Street 4        214.1   -3
 400    Dan     50      4       Street 4        1.23    1
 400    Dan     50      4       Street 4        22.214  1
 400    Dan     50      4       Street 4        214.1   1
-400    Dan     50      4       Street 4        1.23    3
-400    Dan     50      4       Street 4        22.214  3
-400    Dan     50      4       Street 4        214.1   3
 400    Dan     50      4       Street 4        1.23    b
 400    Dan     50      4       Street 4        22.214  b
 400    Dan     50      4       Street 4        214.1   b
@@ -99,3 +99,117 @@
 -- !explode_json_array13 --
 -9223372036854775808   8
 
+-- !explode_json_array14 --
+100    John    30      1       Street 1        1.23    -1273982982312333
+100    John    30      1       Street 1        22.214  -1273982982312333
+100    John    30      1       Street 1        214.1   -1273982982312333
+100    John    30      1       Street 1        1.23    1182381637816312
+100    John    30      1       Street 1        22.214  1182381637816312
+100    John    30      1       Street 1        214.1   1182381637816312
+100    John    30      1       Street 1        1.23    b
+100    John    30      1       Street 1        22.214  b
+100    John    30      1       Street 1        214.1   b
+200    Mary    \N      1       Street 2        1.23    -1273982982312333
+200    Mary    \N      1       Street 2        22.214  -1273982982312333
+200    Mary    \N      1       Street 2        214.1   -1273982982312333
+200    Mary    \N      1       Street 2        1.23    1182381637816312
+200    Mary    \N      1       Street 2        22.214  1182381637816312
+200    Mary    \N      1       Street 2        214.1   1182381637816312
+200    Mary    \N      1       Street 2        1.23    b
+200    Mary    \N      1       Street 2        22.214  b
+200    Mary    \N      1       Street 2        214.1   b
+300    Mike    80      3       Street 3        1.23    -1273982982312333
+300    Mike    80      3       Street 3        22.214  -1273982982312333
+300    Mike    80      3       Street 3        214.1   -1273982982312333
+300    Mike    80      3       Street 3        1.23    1182381637816312
+300    Mike    80      3       Street 3        22.214  1182381637816312
+300    Mike    80      3       Street 3        214.1   1182381637816312
+300    Mike    80      3       Street 3        1.23    b
+300    Mike    80      3       Street 3        22.214  b
+300    Mike    80      3       Street 3        214.1   b
+400    Dan     50      4       Street 4        1.23    -1273982982312333
+400    Dan     50      4       Street 4        22.214  -1273982982312333
+400    Dan     50      4       Street 4        214.1   -1273982982312333
+400    Dan     50      4       Street 4        1.23    1182381637816312
+400    Dan     50      4       Street 4        22.214  1182381637816312
+400    Dan     50      4       Street 4        214.1   1182381637816312
+400    Dan     50      4       Street 4        1.23    b
+400    Dan     50      4       Street 4        22.214  b
+400    Dan     50      4       Street 4        214.1   b
+
+-- !explode_json_array15 --
+100    John    30      1       Street 1        1.23    b
+100    John    30      1       Street 1        22.214  b
+100    John    30      1       Street 1        214.1   b
+100    John    30      1       Street 1        1.23    false
+100    John    30      1       Street 1        22.214  false
+100    John    30      1       Street 1        214.1   false
+100    John    30      1       Street 1        1.23    true
+100    John    30      1       Street 1        22.214  true
+100    John    30      1       Street 1        214.1   true
+200    Mary    \N      1       Street 2        1.23    b
+200    Mary    \N      1       Street 2        22.214  b
+200    Mary    \N      1       Street 2        214.1   b
+200    Mary    \N      1       Street 2        1.23    false
+200    Mary    \N      1       Street 2        22.214  false
+200    Mary    \N      1       Street 2        214.1   false
+200    Mary    \N      1       Street 2        1.23    true
+200    Mary    \N      1       Street 2        22.214  true
+200    Mary    \N      1       Street 2        214.1   true
+300    Mike    80      3       Street 3        1.23    b
+300    Mike    80      3       Street 3        22.214  b
+300    Mike    80      3       Street 3        214.1   b
+300    Mike    80      3       Street 3        1.23    false
+300    Mike    80      3       Street 3        22.214  false
+300    Mike    80      3       Street 3        214.1   false
+300    Mike    80      3       Street 3        1.23    true
+300    Mike    80      3       Street 3        22.214  true
+300    Mike    80      3       Street 3        214.1   true
+400    Dan     50      4       Street 4        1.23    b
+400    Dan     50      4       Street 4        22.214  b
+400    Dan     50      4       Street 4        214.1   b
+400    Dan     50      4       Street 4        1.23    false
+400    Dan     50      4       Street 4        22.214  false
+400    Dan     50      4       Street 4        214.1   false
+400    Dan     50      4       Street 4        1.23    true
+400    Dan     50      4       Street 4        22.214  true
+400    Dan     50      4       Street 4        214.1   true
+
+-- !explode_json_array16 --
+100    John    30      1       Street 1        1.23    
+100    John    30      1       Street 1        1.23    
+100    John    30      1       Street 1        22.214  
+100    John    30      1       Street 1        22.214  
+100    John    30      1       Street 1        214.1   
+100    John    30      1       Street 1        214.1   
+100    John    30      1       Street 1        1.23    b
+100    John    30      1       Street 1        22.214  b
+100    John    30      1       Street 1        214.1   b
+200    Mary    \N      1       Street 2        1.23    
+200    Mary    \N      1       Street 2        1.23    
+200    Mary    \N      1       Street 2        22.214  
+200    Mary    \N      1       Street 2        22.214  
+200    Mary    \N      1       Street 2        214.1   
+200    Mary    \N      1       Street 2        214.1   
+200    Mary    \N      1       Street 2        1.23    b
+200    Mary    \N      1       Street 2        22.214  b
+200    Mary    \N      1       Street 2        214.1   b
+300    Mike    80      3       Street 3        1.23    
+300    Mike    80      3       Street 3        1.23    
+300    Mike    80      3       Street 3        22.214  
+300    Mike    80      3       Street 3        22.214  
+300    Mike    80      3       Street 3        214.1   
+300    Mike    80      3       Street 3        214.1   
+300    Mike    80      3       Street 3        1.23    b
+300    Mike    80      3       Street 3        22.214  b
+300    Mike    80      3       Street 3        214.1   b
+400    Dan     50      4       Street 4        1.23    
+400    Dan     50      4       Street 4        1.23    
+400    Dan     50      4       Street 4        22.214  
+400    Dan     50      4       Street 4        22.214  
+400    Dan     50      4       Street 4        214.1   
+400    Dan     50      4       Street 4        214.1   
+400    Dan     50      4       Street 4        1.23    b
+400    Dan     50      4       Street 4        22.214  b
+400    Dan     50      4       Street 4        214.1   b
+
diff --git 
a/regression-test/suites/query_p0/sql_functions/table_function/explode_json_array.groovy
 
b/regression-test/suites/query_p0/sql_functions/table_function/explode_json_array.groovy
index cd4e018243e..e4cbe3feda0 100644
--- 
a/regression-test/suites/query_p0/sql_functions/table_function/explode_json_array.groovy
+++ 
b/regression-test/suites/query_p0/sql_functions/table_function/explode_json_array.groovy
@@ -55,7 +55,7 @@ suite("explode_json_array") {
                             ORDER BY id, c_age """
 
     qt_explode_json_array10 """ SELECT id, name, age, class, address, d, c 
FROM ${tableName}
-                        LATERAL VIEW EXPLODE_JSON_ARRAY_STRING('[1, "b", 3]') 
t1 as c 
+                        LATERAL VIEW EXPLODE_JSON_ARRAY_STRING('[1, "b", -3]') 
t1 as c 
                         LATERAL VIEW EXPLODE_JSON_ARRAY_DOUBLE('[1.23, 22.214, 
214.1]') t2 as d 
                         ORDER BY id, c, d """
 
@@ -74,4 +74,18 @@ suite("explode_json_array") {
                         LATERAL VIEW 
EXPLODE_JSON_ARRAY_INT('[-92233720368547758071,-92233720368547758081]') t1 as 
c_age 
                         GROUP BY c_age ORDER BY c_age """
 
+    qt_explode_json_array14 """ SELECT id, name, age, class, address, d, c 
FROM ${tableName}
+                        LATERAL VIEW 
EXPLODE_JSON_ARRAY_STRING('[1182381637816312, "b", -1273982982312333]') t1 as c 
+                        LATERAL VIEW EXPLODE_JSON_ARRAY_DOUBLE('[1.23, 22.214, 
214.1]') t2 as d 
+                        ORDER BY id, c, d """
+
+    qt_explode_json_array15 """ SELECT id, name, age, class, address, d, c 
FROM ${tableName}
+                        LATERAL VIEW EXPLODE_JSON_ARRAY_STRING('[true, "b", 
false]') t1 as c 
+                        LATERAL VIEW EXPLODE_JSON_ARRAY_DOUBLE('[1.23, 22.214, 
214.1]') t2 as d 
+                        ORDER BY id, c, d """    
+
+    qt_explode_json_array16 """ SELECT id, name, age, class, address, d, c 
FROM ${tableName}
+                        LATERAL VIEW EXPLODE_JSON_ARRAY_STRING('[null, "b", 
null]') t1 as c 
+                        LATERAL VIEW EXPLODE_JSON_ARRAY_DOUBLE('[1.23, 22.214, 
214.1]') t2 as d 
+                        ORDER BY id, c, d """        
 }


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

Reply via email to