Skip to content

Commit 21c6b85

Browse files
authored
[fix](explode-json-object)fix explode json object (#37956)
## Proposed changes Issue Number: close #xxx <!--Describe your changes.-->
1 parent 3d095c7 commit 21c6b85

File tree

3 files changed

+16
-147
lines changed

3 files changed

+16
-147
lines changed

be/src/vec/exprs/table_function/table_function_factory.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
#include "vec/exprs/table_function/vexplode.h"
2929
#include "vec/exprs/table_function/vexplode_bitmap.h"
3030
#include "vec/exprs/table_function/vexplode_json_array.h"
31+
#include "vec/exprs/table_function/vexplode_json_object.h"
3132
#include "vec/exprs/table_function/vexplode_map.h"
3233
#include "vec/exprs/table_function/vexplode_numbers.h"
3334
#include "vec/exprs/table_function/vexplode_split.h"
@@ -57,6 +58,7 @@ const std::unordered_map<std::string, std::function<std::unique_ptr<TableFunctio
5758
{"explode_json_array_json", VExplodeJsonArrayCreator<ParsedDataJSON>()},
5859
{"explode_bitmap", TableFunctionCreator<VExplodeBitmapTableFunction>()},
5960
{"explode_map", TableFunctionCreator<VExplodeMapTableFunction> {}},
61+
{"explode_json_object", TableFunctionCreator<VExplodeJsonObjectTableFunction> {}},
6062
{"explode", TableFunctionCreator<VExplodeTableFunction> {}}};
6163

6264
Status TableFunctionFactory::get_fn(const std::string& fn_name_raw, ObjectPool* pool,

regression-test/data/jsonb_p0/test_jsonb_load_and_function.out

Lines changed: 0 additions & 114 deletions
Original file line numberDiff line numberDiff line change
@@ -8613,117 +8613,3 @@ true
86138613
-- !sql_json_parse --
86148614
{"":1,"ab":"v1","":"v1","":2}
86158615

8616-
-- !sql_json_keys --
8617-
["k1", "k2"]
8618-
8619-
-- !sql_json_keys --
8620-
["a.b.c", "a"]
8621-
8622-
-- !sql_json_keys --
8623-
["k1.a1", "k2"]
8624-
8625-
-- !sql_json_keys --
8626-
\N
8627-
8628-
-- !sql_json_keys --
8629-
\N
8630-
8631-
-- !sql_json_keys --
8632-
\N
8633-
8634-
-- !sql_json_keys --
8635-
\N
8636-
8637-
-- !select_json_keys --
8638-
1 \N \N
8639-
2 null \N
8640-
3 true \N
8641-
4 false \N
8642-
5 100 \N
8643-
6 10000 \N
8644-
7 1000000000 \N
8645-
8 1152921504606846976 \N
8646-
9 6.18 \N
8647-
10 "abcd" \N
8648-
11 {} []
8649-
12 {"k1":"v31","k2":300} ["k1", "k2"]
8650-
13 [] \N
8651-
14 [123,456] \N
8652-
15 ["abc","def"] \N
8653-
16 [null,true,false,100,6.18,"abc"] \N
8654-
17 [{"k1":"v41","k2":400},1,"a",3.14] \N
8655-
18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} ["k1", "k2", "a1"]
8656-
26 \N \N
8657-
27 {"k1":"v1","k2":200} ["k1", "k2"]
8658-
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} ["a.b.c", "a"]
8659-
29 12524337771678448270 \N
8660-
30 -9223372036854775808 \N
8661-
31 18446744073709551615 \N
8662-
32 {"":"v1"} [""]
8663-
33 {"":1,"":"v1"} ["", ""]
8664-
34 {"":1,"ab":"v1","":"v1","":2} ["", "ab", "", ""]
8665-
8666-
-- !select_json_keys --
8667-
1 \N \N
8668-
2 null \N
8669-
3 true \N
8670-
4 false \N
8671-
5 100 \N
8672-
6 10000 \N
8673-
7 1000000000 \N
8674-
8 1152921504606846976 \N
8675-
9 6.18 \N
8676-
10 "abcd" \N
8677-
11 {} \N
8678-
12 {"k1":"v31","k2":300} \N
8679-
13 [] \N
8680-
14 [123,456] \N
8681-
15 ["abc","def"] \N
8682-
16 [null,true,false,100,6.18,"abc"] \N
8683-
17 [{"k1":"v41","k2":400},1,"a",3.14] \N
8684-
18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N
8685-
26 \N \N
8686-
27 {"k1":"v1","k2":200} \N
8687-
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N
8688-
29 12524337771678448270 \N
8689-
30 -9223372036854775808 \N
8690-
31 18446744073709551615 \N
8691-
32 {"":"v1"} \N
8692-
33 {"":1,"":"v1"} \N
8693-
34 {"":1,"ab":"v1","":"v1","":2} \N
8694-
8695-
-- !select_json_keys --
8696-
1 \N \N
8697-
2 null \N
8698-
3 true \N
8699-
4 false \N
8700-
5 100 \N
8701-
6 10000 \N
8702-
7 1000000000 \N
8703-
8 1152921504606846976 \N
8704-
9 6.18 \N
8705-
10 "abcd" \N
8706-
11 {} \N
8707-
12 {"k1":"v31","k2":300} \N
8708-
13 [] \N
8709-
14 [123,456] \N
8710-
15 ["abc","def"] \N
8711-
16 [null,true,false,100,6.18,"abc"] \N
8712-
17 [{"k1":"v41","k2":400},1,"a",3.14] \N
8713-
18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N
8714-
26 \N \N
8715-
27 {"k1":"v1","k2":200} \N
8716-
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N
8717-
29 12524337771678448270 \N
8718-
30 -9223372036854775808 \N
8719-
31 18446744073709551615 \N
8720-
32 {"":"v1"} \N
8721-
33 {"":1,"":"v1"} \N
8722-
34 {"":1,"ab":"v1","":"v1","":2} \N
8723-
8724-
-- !select_json_keys --
8725-
{"a.b.c":{"k1.a1":"v31","k2":300},"a":{}} $.a []
8726-
{"a.b.c":{"k1.a1":"v31","k2":300}} $.a.b.c \N
8727-
{"a.b.c":{"k1.a1":"v31","k2":300},"a":{"k1.a1":1}} $.a ["k1.a1"]
8728-
["a","b"] $.a \N
8729-

regression-test/data/nereids_p0/jsonb_p0/test_jsonb_load_and_function.out

Lines changed: 14 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -8316,53 +8316,25 @@ false
83168316
34 {"":1,"ab":"v1","":"v1","":2} [null,null,null]
83178317

83188318
-- !order_select_explode_json_object --
8319-
1 \N \N \N
8320-
2 null \N \N
8321-
3 true \N \N
8322-
4 false \N \N
8323-
5 100 \N \N
8324-
6 10000 \N \N
8325-
7 1000000000 \N \N
8326-
8 1152921504606846976 \N \N
8327-
9 6.18 \N \N
8328-
10 "abcd" \N \N
8329-
11 {} \N \N
83308319
12 {"k1":"v31","k2":300} k1 "v31"
83318320
12 {"k1":"v31","k2":300} k2 300
8332-
13 [] \N \N
8333-
14 [123,456] \N \N
8334-
15 ["abc","def"] \N \N
8335-
16 [null,true,false,100,6.18,"abc"] \N \N
8336-
17 [{"k1":"v41","k2":400},1,"a",3.14] \N \N
83378321
18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} a1 [{"k1":"v41","k2":400},1,"a",3.14]
83388322
18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} k1 "v31"
83398323
18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} k2 300
8340-
26 \N \N \N
83418324
27 {"k1":"v1","k2":200} k1 "v1"
83428325
27 {"k1":"v1","k2":200} k2 200
83438326
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} a "niu"
83448327
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} a.b.c {"k1.a1":"v31","k2":300}
8345-
29 12524337771678448270 \N \N
8346-
30 -9223372036854775808 \N \N
8347-
31 18446744073709551615 \N \N
83488328
32 {"":"v1"} "v1"
8349-
33 {"":1,"":"v1"} 1
83508329
33 {"":1,"":"v1"} "v1"
8351-
34 {"":1,"ab":"v1","":"v1","":2} 1
8330+
33 {"":1,"":"v1"} 1
83528331
34 {"":1,"ab":"v1","":"v1","":2} "v1"
8332+
34 {"":1,"ab":"v1","":"v1","":2} 1
83538333
34 {"":1,"ab":"v1","":"v1","":2} 2
83548334
34 {"":1,"ab":"v1","":"v1","":2} ab "v1"
83558335

83568336
-- !order_select_explode_json_object_out --
83578337
1 \N \N \N
8358-
2 null \N \N
8359-
3 true \N \N
8360-
4 false \N \N
8361-
5 100 \N \N
8362-
6 10000 \N \N
8363-
7 1000000000 \N \N
8364-
8 1152921504606846976 \N \N
8365-
9 6.18 \N \N
83668338
10 "abcd" \N \N
83678339
11 {} \N \N
83688340
12 {"k1":"v31","k2":300} k1 "v31"
@@ -8375,21 +8347,29 @@ false
83758347
18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} a1 [{"k1":"v41","k2":400},1,"a",3.14]
83768348
18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} k1 "v31"
83778349
18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} k2 300
8350+
2 null \N \N
83788351
26 \N \N \N
83798352
27 {"k1":"v1","k2":200} k1 "v1"
83808353
27 {"k1":"v1","k2":200} k2 200
83818354
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} a "niu"
83828355
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} a.b.c {"k1.a1":"v31","k2":300}
83838356
29 12524337771678448270 \N \N
8357+
3 true \N \N
83848358
30 -9223372036854775808 \N \N
83858359
31 18446744073709551615 \N \N
83868360
32 {"":"v1"} "v1"
8387-
33 {"":1,"":"v1"} 1
83888361
33 {"":1,"":"v1"} "v1"
8389-
34 {"":1,"ab":"v1","":"v1","":2} 1
8362+
33 {"":1,"":"v1"} 1
83908363
34 {"":1,"ab":"v1","":"v1","":2} "v1"
8364+
34 {"":1,"ab":"v1","":"v1","":2} 1
83918365
34 {"":1,"ab":"v1","":"v1","":2} 2
83928366
34 {"":1,"ab":"v1","":"v1","":2} ab "v1"
8367+
4 false \N \N
8368+
5 100 \N \N
8369+
6 10000 \N \N
8370+
7 1000000000 \N \N
8371+
8 1152921504606846976 \N \N
8372+
9 6.18 \N \N
83938373

83948374
-- !sql_json_parse --
83958375
{"":"v1"}
@@ -8398,4 +8378,5 @@ false
83988378
{"":1,"":"v1"}
83998379

84008380
-- !sql_json_parse --
8401-
{"":1,"ab":"v1","":"v1","":2}
8381+
{"":1,"ab":"v1","":"v1","":2}
8382+

0 commit comments

Comments
 (0)