This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.1 by this push:
new 21c6b854f79 [fix](explode-json-object)fix explode json object (#37956)
21c6b854f79 is described below
commit 21c6b854f796eac3836a9cce074a0abcffbd8d6e
Author: amory <[email protected]>
AuthorDate: Wed Jul 17 01:03:07 2024 +0800
[fix](explode-json-object)fix explode json object (#37956)
## Proposed changes
Issue Number: close #xxx
<!--Describe your changes.-->
---
.../table_function/table_function_factory.cpp | 2 +
.../data/jsonb_p0/test_jsonb_load_and_function.out | 114 ---------------------
.../jsonb_p0/test_jsonb_load_and_function.out | 47 +++------
3 files changed, 16 insertions(+), 147 deletions(-)
diff --git a/be/src/vec/exprs/table_function/table_function_factory.cpp
b/be/src/vec/exprs/table_function/table_function_factory.cpp
index 9e3a532b528..c72a897305a 100644
--- a/be/src/vec/exprs/table_function/table_function_factory.cpp
+++ b/be/src/vec/exprs/table_function/table_function_factory.cpp
@@ -28,6 +28,7 @@
#include "vec/exprs/table_function/vexplode.h"
#include "vec/exprs/table_function/vexplode_bitmap.h"
#include "vec/exprs/table_function/vexplode_json_array.h"
+#include "vec/exprs/table_function/vexplode_json_object.h"
#include "vec/exprs/table_function/vexplode_map.h"
#include "vec/exprs/table_function/vexplode_numbers.h"
#include "vec/exprs/table_function/vexplode_split.h"
@@ -57,6 +58,7 @@ const std::unordered_map<std::string,
std::function<std::unique_ptr<TableFunctio
{"explode_json_array_json",
VExplodeJsonArrayCreator<ParsedDataJSON>()},
{"explode_bitmap",
TableFunctionCreator<VExplodeBitmapTableFunction>()},
{"explode_map", TableFunctionCreator<VExplodeMapTableFunction>
{}},
+ {"explode_json_object",
TableFunctionCreator<VExplodeJsonObjectTableFunction> {}},
{"explode", TableFunctionCreator<VExplodeTableFunction> {}}};
Status TableFunctionFactory::get_fn(const std::string& fn_name_raw,
ObjectPool* pool,
diff --git a/regression-test/data/jsonb_p0/test_jsonb_load_and_function.out
b/regression-test/data/jsonb_p0/test_jsonb_load_and_function.out
index 271083fbeba..aaaea0d4e1b 100644
--- a/regression-test/data/jsonb_p0/test_jsonb_load_and_function.out
+++ b/regression-test/data/jsonb_p0/test_jsonb_load_and_function.out
@@ -8613,117 +8613,3 @@ true
-- !sql_json_parse --
{"":1,"ab":"v1","":"v1","":2}
--- !sql_json_keys --
-["k1", "k2"]
-
--- !sql_json_keys --
-["a.b.c", "a"]
-
--- !sql_json_keys --
-["k1.a1", "k2"]
-
--- !sql_json_keys --
-\N
-
--- !sql_json_keys --
-\N
-
--- !sql_json_keys --
-\N
-
--- !sql_json_keys --
-\N
-
--- !select_json_keys --
-1 \N \N
-2 null \N
-3 true \N
-4 false \N
-5 100 \N
-6 10000 \N
-7 1000000000 \N
-8 1152921504606846976 \N
-9 6.18 \N
-10 "abcd" \N
-11 {} []
-12 {"k1":"v31","k2":300} ["k1", "k2"]
-13 [] \N
-14 [123,456] \N
-15 ["abc","def"] \N
-16 [null,true,false,100,6.18,"abc"] \N
-17 [{"k1":"v41","k2":400},1,"a",3.14] \N
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} ["k1",
"k2", "a1"]
-26 \N \N
-27 {"k1":"v1","k2":200} ["k1", "k2"]
-28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} ["a.b.c", "a"]
-29 12524337771678448270 \N
-30 -9223372036854775808 \N
-31 18446744073709551615 \N
-32 {"":"v1"} [""]
-33 {"":1,"":"v1"} ["", ""]
-34 {"":1,"ab":"v1","":"v1","":2} ["", "ab", "", ""]
-
--- !select_json_keys --
-1 \N \N
-2 null \N
-3 true \N
-4 false \N
-5 100 \N
-6 10000 \N
-7 1000000000 \N
-8 1152921504606846976 \N
-9 6.18 \N
-10 "abcd" \N
-11 {} \N
-12 {"k1":"v31","k2":300} \N
-13 [] \N
-14 [123,456] \N
-15 ["abc","def"] \N
-16 [null,true,false,100,6.18,"abc"] \N
-17 [{"k1":"v41","k2":400},1,"a",3.14] \N
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N
-26 \N \N
-27 {"k1":"v1","k2":200} \N
-28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N
-29 12524337771678448270 \N
-30 -9223372036854775808 \N
-31 18446744073709551615 \N
-32 {"":"v1"} \N
-33 {"":1,"":"v1"} \N
-34 {"":1,"ab":"v1","":"v1","":2} \N
-
--- !select_json_keys --
-1 \N \N
-2 null \N
-3 true \N
-4 false \N
-5 100 \N
-6 10000 \N
-7 1000000000 \N
-8 1152921504606846976 \N
-9 6.18 \N
-10 "abcd" \N
-11 {} \N
-12 {"k1":"v31","k2":300} \N
-13 [] \N
-14 [123,456] \N
-15 ["abc","def"] \N
-16 [null,true,false,100,6.18,"abc"] \N
-17 [{"k1":"v41","k2":400},1,"a",3.14] \N
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N
-26 \N \N
-27 {"k1":"v1","k2":200} \N
-28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N
-29 12524337771678448270 \N
-30 -9223372036854775808 \N
-31 18446744073709551615 \N
-32 {"":"v1"} \N
-33 {"":1,"":"v1"} \N
-34 {"":1,"ab":"v1","":"v1","":2} \N
-
--- !select_json_keys --
-{"a.b.c":{"k1.a1":"v31","k2":300},"a":{}} $.a []
-{"a.b.c":{"k1.a1":"v31","k2":300}} $.a.b.c \N
-{"a.b.c":{"k1.a1":"v31","k2":300},"a":{"k1.a1":1}} $.a ["k1.a1"]
-["a","b"] $.a \N
-
diff --git
a/regression-test/data/nereids_p0/jsonb_p0/test_jsonb_load_and_function.out
b/regression-test/data/nereids_p0/jsonb_p0/test_jsonb_load_and_function.out
index 0d33127ad20..71fe88a8492 100644
--- a/regression-test/data/nereids_p0/jsonb_p0/test_jsonb_load_and_function.out
+++ b/regression-test/data/nereids_p0/jsonb_p0/test_jsonb_load_and_function.out
@@ -8316,53 +8316,25 @@ false
34 {"":1,"ab":"v1","":"v1","":2} [null,null,null]
-- !order_select_explode_json_object --
-1 \N \N \N
-2 null \N \N
-3 true \N \N
-4 false \N \N
-5 100 \N \N
-6 10000 \N \N
-7 1000000000 \N \N
-8 1152921504606846976 \N \N
-9 6.18 \N \N
-10 "abcd" \N \N
-11 {} \N \N
12 {"k1":"v31","k2":300} k1 "v31"
12 {"k1":"v31","k2":300} k2 300
-13 [] \N \N
-14 [123,456] \N \N
-15 ["abc","def"] \N \N
-16 [null,true,false,100,6.18,"abc"] \N \N
-17 [{"k1":"v41","k2":400},1,"a",3.14] \N \N
18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} a1
[{"k1":"v41","k2":400},1,"a",3.14]
18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} k1
"v31"
18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} k2
300
-26 \N \N \N
27 {"k1":"v1","k2":200} k1 "v1"
27 {"k1":"v1","k2":200} k2 200
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} a "niu"
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} a.b.c
{"k1.a1":"v31","k2":300}
-29 12524337771678448270 \N \N
-30 -9223372036854775808 \N \N
-31 18446744073709551615 \N \N
32 {"":"v1"} "v1"
-33 {"":1,"":"v1"} 1
33 {"":1,"":"v1"} "v1"
-34 {"":1,"ab":"v1","":"v1","":2} 1
+33 {"":1,"":"v1"} 1
34 {"":1,"ab":"v1","":"v1","":2} "v1"
+34 {"":1,"ab":"v1","":"v1","":2} 1
34 {"":1,"ab":"v1","":"v1","":2} 2
34 {"":1,"ab":"v1","":"v1","":2} ab "v1"
-- !order_select_explode_json_object_out --
1 \N \N \N
-2 null \N \N
-3 true \N \N
-4 false \N \N
-5 100 \N \N
-6 10000 \N \N
-7 1000000000 \N \N
-8 1152921504606846976 \N \N
-9 6.18 \N \N
10 "abcd" \N \N
11 {} \N \N
12 {"k1":"v31","k2":300} k1 "v31"
@@ -8375,21 +8347,29 @@ false
18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} a1
[{"k1":"v41","k2":400},1,"a",3.14]
18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} k1
"v31"
18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} k2
300
+2 null \N \N
26 \N \N \N
27 {"k1":"v1","k2":200} k1 "v1"
27 {"k1":"v1","k2":200} k2 200
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} a "niu"
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} a.b.c
{"k1.a1":"v31","k2":300}
29 12524337771678448270 \N \N
+3 true \N \N
30 -9223372036854775808 \N \N
31 18446744073709551615 \N \N
32 {"":"v1"} "v1"
-33 {"":1,"":"v1"} 1
33 {"":1,"":"v1"} "v1"
-34 {"":1,"ab":"v1","":"v1","":2} 1
+33 {"":1,"":"v1"} 1
34 {"":1,"ab":"v1","":"v1","":2} "v1"
+34 {"":1,"ab":"v1","":"v1","":2} 1
34 {"":1,"ab":"v1","":"v1","":2} 2
34 {"":1,"ab":"v1","":"v1","":2} ab "v1"
+4 false \N \N
+5 100 \N \N
+6 10000 \N \N
+7 1000000000 \N \N
+8 1152921504606846976 \N \N
+9 6.18 \N \N
-- !sql_json_parse --
{"":"v1"}
@@ -8398,4 +8378,5 @@ false
{"":1,"":"v1"}
-- !sql_json_parse --
-{"":1,"ab":"v1","":"v1","":2}
\ No newline at end of file
+{"":1,"ab":"v1","":"v1","":2}
+
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]