diff --git a/be/src/olap/rowset/segment_v2/bloom_filter_index_writer.cpp b/be/src/olap/rowset/segment_v2/bloom_filter_index_writer.cpp index c3ca532177..8003857bb5 100644 --- a/be/src/olap/rowset/segment_v2/bloom_filter_index_writer.cpp +++ b/be/src/olap/rowset/segment_v2/bloom_filter_index_writer.cpp @@ -171,6 +171,9 @@ Status BloomFilterIndexWriter::create(const BloomFilterOptions& bf_options, case OLAP_FIELD_TYPE_BIGINT: res->reset(new BloomFilterIndexWriterImpl(bf_options, typeinfo)); break; + case OLAP_FIELD_TYPE_LARGEINT: + res->reset(new BloomFilterIndexWriterImpl(bf_options, typeinfo)); + break; case OLAP_FIELD_TYPE_CHAR: res->reset(new BloomFilterIndexWriterImpl(bf_options, typeinfo)); break; diff --git a/be/test/olap/rowset/segment_v2/bloom_filter_index_reader_writer_test.cpp b/be/test/olap/rowset/segment_v2/bloom_filter_index_reader_writer_test.cpp index 70f051d834..0174cfc5c5 100644 --- a/be/test/olap/rowset/segment_v2/bloom_filter_index_reader_writer_test.cpp +++ b/be/test/olap/rowset/segment_v2/bloom_filter_index_reader_writer_test.cpp @@ -117,7 +117,7 @@ void test_bloom_filter_index_reader_writer_template(const std::string file_name, Slice* value = (Slice*)(val + i); ASSERT_TRUE(bf->test_bytes(value->data, value->size)); } else { - ASSERT_TRUE(bf->test_bytes((char*)&val[i], sizeof(CppType))) << "index:" << i << ", value:" << val[i]; + ASSERT_TRUE(bf->test_bytes((char*)&val[i], sizeof(CppType))); } } @@ -179,6 +179,20 @@ TEST_F(BloomFilterIndexReaderWriterTest, test_bigint) { delete[] val; } +TEST_F(BloomFilterIndexReaderWriterTest, test_largeint) { + size_t num = 1024 * 3 - 1; + int128_t* val = new int128_t[num]; + for (int i = 0; i < num; ++i) { + // there will be 3 bloom filter pages + val[i] = 100000000 + i + 1; + } + + std::string file_name = "bloom_filter_largeint"; + int128_t not_exist_value = 18888; + test_bloom_filter_index_reader_writer_template(file_name, val, num, 1, ¬_exist_value); + delete[] val; +} + TEST_F(BloomFilterIndexReaderWriterTest, test_varchar_type) { size_t num = 1024 * 3 - 1; std::string* val = new std::string[num];