[fix](function) fix EXPLODE_JSON_ARRAY_STRING function (#25519)
This commit is contained in:
@ -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;
|
||||
}
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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 """
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user