// For testing: emit an array with one hash value per key
class TestHashFilter : public FilterPolicy {
public:
- virtual const char* Name() const override { return "TestHashFilter"; }
+ const char* Name() const override { return "TestHashFilter"; }
- virtual void CreateFilter(const Slice* keys, int n,
- std::string* dst) const override {
+ void CreateFilter(const Slice* keys, int n, std::string* dst) const override {
for (int i = 0; i < n; i++) {
uint32_t h = Hash(keys[i].data(), keys[i].size(), 1);
PutFixed32(dst, h);
}
}
- virtual bool KeyMayMatch(const Slice& key,
- const Slice& filter) const override {
+ bool KeyMayMatch(const Slice& key, const Slice& filter) const override {
uint32_t h = Hash(key.data(), key.size(), 1);
for (unsigned int i = 0; i + 4 <= filter.size(); i += 4) {
if (h == DecodeFixed32(filter.data() + i)) {
TEST_F(FilterBlockTest, EmptyBuilder) {
BlockBasedFilterBlockBuilder builder(nullptr, table_options_);
- BlockContents block(builder.Finish(), false, kNoCompression);
+ BlockContents block(builder.Finish());
ASSERT_EQ("\\x00\\x00\\x00\\x00\\x0b", EscapeString(block.data));
BlockBasedFilterBlockReader reader(nullptr, table_options_, true,
std::move(block), nullptr);
builder.StartBlock(300);
builder.Add("hello");
ASSERT_EQ(5, builder.NumAdded());
- BlockContents block(builder.Finish(), false, kNoCompression);
+ BlockContents block(builder.Finish());
BlockBasedFilterBlockReader reader(nullptr, table_options_, true,
std::move(block), nullptr);
ASSERT_TRUE(reader.KeyMayMatch("foo", nullptr, 100));
builder.Add("box");
builder.Add("hello");
- BlockContents block(builder.Finish(), false, kNoCompression);
+ BlockContents block(builder.Finish());
BlockBasedFilterBlockReader reader(nullptr, table_options_, true,
std::move(block), nullptr);
table_options_.filter_policy.reset(NewBloomFilterPolicy(10));
}
- ~BlockBasedFilterBlockTest() {}
+ ~BlockBasedFilterBlockTest() override {}
};
TEST_F(BlockBasedFilterBlockTest, BlockBasedEmptyBuilder) {
- FilterBlockBuilder* builder = new BlockBasedFilterBlockBuilder(
- nullptr, table_options_);
- BlockContents block(builder->Finish(), false, kNoCompression);
+ FilterBlockBuilder* builder =
+ new BlockBasedFilterBlockBuilder(nullptr, table_options_);
+ BlockContents block(builder->Finish());
ASSERT_EQ("\\x00\\x00\\x00\\x00\\x0b", EscapeString(block.data));
FilterBlockReader* reader = new BlockBasedFilterBlockReader(
nullptr, table_options_, true, std::move(block), nullptr);
}
TEST_F(BlockBasedFilterBlockTest, BlockBasedSingleChunk) {
- FilterBlockBuilder* builder = new BlockBasedFilterBlockBuilder(
- nullptr, table_options_);
+ FilterBlockBuilder* builder =
+ new BlockBasedFilterBlockBuilder(nullptr, table_options_);
builder->StartBlock(100);
builder->Add("foo");
builder->Add("bar");
builder->Add("box");
builder->StartBlock(300);
builder->Add("hello");
- BlockContents block(builder->Finish(), false, kNoCompression);
+ BlockContents block(builder->Finish());
FilterBlockReader* reader = new BlockBasedFilterBlockReader(
nullptr, table_options_, true, std::move(block), nullptr);
ASSERT_TRUE(reader->KeyMayMatch("foo", nullptr, 100));
}
TEST_F(BlockBasedFilterBlockTest, BlockBasedMultiChunk) {
- FilterBlockBuilder* builder = new BlockBasedFilterBlockBuilder(
- nullptr, table_options_);
+ FilterBlockBuilder* builder =
+ new BlockBasedFilterBlockBuilder(nullptr, table_options_);
// First filter
builder->StartBlock(0);
builder->Add("box");
builder->Add("hello");
- BlockContents block(builder->Finish(), false, kNoCompression);
+ BlockContents block(builder->Finish());
FilterBlockReader* reader = new BlockBasedFilterBlockReader(
nullptr, table_options_, true, std::move(block), nullptr);