Skip to content

Commit

Permalink
branch-3.0: [fix](agg) Fixed a core dump when using the IPv6 type in …
Browse files Browse the repository at this point in the history
…array_agg. apache#44877 (apache#44917)

Cherry-picked from apache#44877

Co-authored-by: Mryange <[email protected]>
  • Loading branch information
github-actions[bot] and Mryange authored Dec 4, 2024
1 parent bb4c3f7 commit fff936b
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 2 deletions.
10 changes: 8 additions & 2 deletions be/src/vec/aggregate_functions/aggregate_function_collect.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -72,12 +72,18 @@ AggregateFunctionPtr create_aggregate_function_collect_impl(const std::string& n
if (which.is_date_or_datetime()) {
return do_create_agg_function_collect<Int64, HasLimit, ShowNull>(distinct, argument_types,
result_is_nullable);
} else if (which.is_date_v2() || which.is_ipv4()) {
} else if (which.is_date_v2()) {
return do_create_agg_function_collect<UInt32, HasLimit, ShowNull>(distinct, argument_types,
result_is_nullable);
} else if (which.is_date_time_v2() || which.is_ipv6()) {
} else if (which.is_date_time_v2()) {
return do_create_agg_function_collect<UInt64, HasLimit, ShowNull>(distinct, argument_types,
result_is_nullable);
} else if (which.is_ipv6()) {
return do_create_agg_function_collect<IPv6, HasLimit, ShowNull>(distinct, argument_types,
result_is_nullable);
} else if (which.is_ipv4()) {
return do_create_agg_function_collect<IPv4, HasLimit, ShowNull>(distinct, argument_types,
result_is_nullable);
} else if (which.is_string()) {
return do_create_agg_function_collect<StringRef, HasLimit, ShowNull>(
distinct, argument_types, result_is_nullable);
Expand Down
3 changes: 3 additions & 0 deletions regression-test/data/query_p0/aggregate/array_agg.out
Original file line number Diff line number Diff line change
Expand Up @@ -251,3 +251,6 @@
8 [{"id":8}, {"id":8}, {"id":8}, {"id":8}]
9 [{"id":9}, {"id":9}, {"id":9}, {"id":9}]

-- !select --
[null, "0.0.0.123", "0.0.12.42", "0.119.130.67"] [null, "::855d", "::0.4.221.183", "::a:7429:d0d6:6e08:9f5f"]

16 changes: 16 additions & 0 deletions regression-test/suites/query_p0/aggregate/array_agg.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -277,8 +277,24 @@ suite("array_agg") {
order_qt_sql_array_agg_map """ SELECT id, array_agg(km) FROM test_array_agg_complex GROUP BY id ORDER BY id """
order_qt_sql_array_agg_struct """ SELECT id, array_agg(ks) FROM test_array_agg_complex GROUP BY id ORDER BY id """


sql """ DROP TABLE IF EXISTS test_array_agg_ip;"""
sql """
CREATE TABLE test_array_agg_ip(
k1 BIGINT ,
k4 ipv4 ,
k6 ipv6 ,
s string
) DISTRIBUTED BY HASH(k1) BUCKETS 1 PROPERTIES("replication_num" = "1");
"""
sql """ insert into test_array_agg_ip values(1,123,34141,"0.0.0.123") , (2,3114,318903,"0.0.0.123") , (3,7832131,192837891738927931231,"2001:0DB8:AC10:FE01:FEED:BABE:CAFE:F00D"),(4,null,null,"2001:0DB8:AC10:FE01:FEED:BABE:CAFE:F00D"); """


qt_select """select array_sort(array_agg(k4)),array_sort(array_agg(k6)) from test_array_agg_ip """

sql "DROP TABLE `test_array_agg`"
sql "DROP TABLE `test_array_agg1`"
sql "DROP TABLE `test_array_agg_int`"
sql "DROP TABLE `test_array_agg_decimal`"
sql "DROP TABLE `test_array_agg_ip`"
}

0 comments on commit fff936b

Please sign in to comment.