[fix](function) fix EXPLODE_JSON_ARRAY_STRING function (#25519)

This commit is contained in:
Mryange
2023-10-30 11:05:27 +08:00
committed by GitHub
parent bb814ccff8
commit 4d3dbf1b3b
4 changed files with 145 additions and 39 deletions

View File

@ -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;
}

View File

@ -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:

View File

@ -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

View File

@ -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 """
}