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]