From 523879ed0e232f549ea809e7e0ccdc6beae3de77 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 20 Jun 2025 12:04:27 +0800 Subject: [PATCH] branch-2.1: [Bug](function) fix wrong result of hll_to_base64 #51831 (#51855) Cherry-picked from #51831 Co-authored-by: Pxl --- be/src/vec/functions/function_hll.cpp | 4 ++-- .../data/load_p0/http_stream/test_http_stream_compress.out | 3 +++ .../load_p0/http_stream/test_http_stream_compress.groovy | 1 + 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/be/src/vec/functions/function_hll.cpp b/be/src/vec/functions/function_hll.cpp index a6b91e27c2..e2f4c15064 100644 --- a/be/src/vec/functions/function_hll.cpp +++ b/be/src/vec/functions/function_hll.cpp @@ -296,8 +296,8 @@ struct HllToBase64 { last_ser_size = cur_ser_size; ser_buff.resize(cur_ser_size); } - hll_val.serialize(reinterpret_cast(ser_buff.data())); - auto outlen = base64_encode((const unsigned char*)ser_buff.data(), cur_ser_size, + size_t real_size = hll_val.serialize(reinterpret_cast(ser_buff.data())); + auto outlen = base64_encode((const unsigned char*)ser_buff.data(), real_size, chars_data + encoded_offset); DCHECK(outlen > 0); diff --git a/regression-test/data/load_p0/http_stream/test_http_stream_compress.out b/regression-test/data/load_p0/http_stream/test_http_stream_compress.out index 80a422c7e7..2d3ba016db 100644 --- a/regression-test/data/load_p0/http_stream/test_http_stream_compress.out +++ b/regression-test/data/load_p0/http_stream/test_http_stream_compress.out @@ -2504,3 +2504,6 @@ -- !sql2 -- 1 2 1025 1028 +-- !test -- +1028 + diff --git a/regression-test/suites/load_p0/http_stream/test_http_stream_compress.groovy b/regression-test/suites/load_p0/http_stream/test_http_stream_compress.groovy index 5ce3527892..41e001c8a2 100644 --- a/regression-test/suites/load_p0/http_stream/test_http_stream_compress.groovy +++ b/regression-test/suites/load_p0/http_stream/test_http_stream_compress.groovy @@ -103,6 +103,7 @@ suite("test_http_stream_compress", "p0") { } sql "sync" qt_sql2 "select k1, k2, bitmap_union_count(v1), HLL_UNION_AGG(v2) from ${tableName2} group by k1, k2 order by k1" + qt_test "select HLL_CARDINALITY(hll_from_base64(hll_to_base64(v2))) from test_http_stream_bz4;" } finally { try_sq2 "DROP TABLE IF EXISTS ${tableName2}" }