• P
    Expose and elaborate FilterBuildingContext (#6088) · ca3b6c28
    Peter Dillinger 提交于
    Summary:
    This change enables custom implementations of FilterPolicy to
    wrap a variety of NewBloomFilterPolicy and select among them based on
    contextual information such as table level and compaction style.
    
    * Moves FilterBuildingContext to public API and elaborates it with more
    useful data. (It would be nice to put more general options-like data,
    but at the time this object is constructed, we are using internal APIs
    ImmutableCFOptions and MutableCFOptions and don't have easy access to
    ColumnFamilyOptions that I can tell.)
    
    * Renames BloomFilterPolicy::GetFilterBitsBuilderInternal to
    GetBuilderWithContext, because it's now public.
    
    * Plumbs through the table's "level_at_creation" for filter building
    context.
    
    * Simplified some tests by adding GetBuilder() to
    MockBlockBasedTableTester.
    
    * Adds test as DBBloomFilterTest.ContextCustomFilterPolicy, including
    sample wrapper class LevelAndStyleCustomFilterPolicy.
    
    * Fixes a cross-test bug in DBBloomFilterTest.OptimizeFiltersForHits
    where it does not reset perf context.
    Pull Request resolved: https://github.com/facebook/rocksdb/pull/6088
    
    Test Plan: make check, valgrind on db_bloom_filter_test
    
    Differential Revision: D18697817
    
    Pulled By: pdillinger
    
    fbshipit-source-id: 5f987a2d7b07cc7a33670bc08ca6b4ca698c1cf4
    ca3b6c28
filter_bench.cc 23.7 KB