From c1b1437fc3d42e33f792e7b45c2e475f342ecb36 Mon Sep 17 00:00:00 2001 From: Pxl Date: Tue, 16 Jul 2024 16:01:32 +0800 Subject: [PATCH] [Bug](bitmap) clear set when bitmap fastunion (#37816) (#37875) pick from #37816 --- be/src/util/bitmap_value.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/be/src/util/bitmap_value.h b/be/src/util/bitmap_value.h index c5bb207499..0b8fccd277 100644 --- a/be/src/util/bitmap_value.h +++ b/be/src/util/bitmap_value.h @@ -1251,8 +1251,7 @@ public: std::vector bitmaps; std::vector single_values; std::vector*> sets; - for (int i = 0; i < values.size(); ++i) { - auto* value = values[i]; + for (const auto* value : values) { switch (value->_type) { case EMPTY: break; @@ -1279,7 +1278,9 @@ public: _bitmap->add(_sv); break; case BITMAP: - *_bitmap |= detail::Roaring64Map::fastunion(bitmaps.size(), bitmaps.data()); + for (const auto* bitmap : bitmaps) { + *_bitmap |= *bitmap; + } break; case SET: { *_bitmap = detail::Roaring64Map::fastunion(bitmaps.size(), bitmaps.data()); @@ -1314,6 +1315,7 @@ public: _bitmap->add(v); } _type = BITMAP; + _set.clear(); break; case SET: { break;