rocksdb/table/block_based
Peter Dillinger d3a3b02134 Fix bug with kHashSearch and changing prefix_extractor with SetOptions (#10128)
Summary:
When opening an SST file created using index_type=kHashSearch,
the *current* prefix_extractor would be saved, and used with hash index
if the *new current* prefix_extractor at query time is compatible with
the SST file. This is a problem if the prefix_extractor at SST open time
is not compatible but SetOptions later changes (back) to one that is
compatible.

This change fixes that by using the known compatible (or missing) prefix
extractor we save for use with prefix filtering. Detail: I have moved the
InternalKeySliceTransform wrapper to avoid some indirection and remove
unnecessary fields.

Pull Request resolved: https://github.com/facebook/rocksdb/pull/10128

Test Plan:
expanded unit test (using some logic from https://github.com/facebook/rocksdb/issues/10122) that fails
before fix and probably covers some other previously uncovered cases.

Reviewed By: siying

Differential Revision: D36955738

Pulled By: pdillinger

fbshipit-source-id: 0c78a6b0d24054ef2f3cb237bf010c1c5589fb10
2022-06-10 08:51:45 -07:00
..
binary_search_index_reader.cc Set Read rate limiter priority dynamically and pass it to FS (#9996) 2022-05-18 19:41:44 -07:00
binary_search_index_reader.h Extend Get/MultiGet deadline support to table open (#6982) 2020-06-29 14:53:17 -07:00
block.cc Use std::numeric_limits<> (#9954) 2022-05-05 13:08:21 -07:00
block.h Reduce comparator objects init cost in BlockIter (#9611) 2022-05-03 17:37:19 -07:00
block_based_filter_block.cc Refactor: Add BlockTypes to make them imply C++ type in block cache (#10098) 2022-06-06 11:16:12 -07:00
block_based_filter_block.h FilterPolicy API changes for 7.0 (#9501) 2022-02-08 13:56:46 -08:00
block_based_filter_block_test.cc FilterPolicy API changes for 7.0 (#9501) 2022-02-08 13:56:46 -08:00
block_based_table_builder.cc Refactor: Add BlockTypes to make them imply C++ type in block cache (#10098) 2022-06-06 11:16:12 -07:00
block_based_table_builder.h Refactor: Add BlockTypes to make them imply C++ type in block cache (#10098) 2022-06-06 11:16:12 -07:00
block_based_table_factory.cc Mark old reserve* option deprecated (#10016) 2022-05-18 22:25:54 -07:00
block_based_table_factory.h Account memory of big memory users in BlockBasedTable in global memory limit (#9748) 2022-04-06 10:33:00 -07:00
block_based_table_iterator.cc Seek parallelization (#9994) 2022-05-20 16:09:33 -07:00
block_based_table_iterator.h Seek parallelization (#9994) 2022-05-20 16:09:33 -07:00
block_based_table_reader.cc Fix bug with kHashSearch and changing prefix_extractor with SetOptions (#10128) 2022-06-10 08:51:45 -07:00
block_based_table_reader.h Fix bug with kHashSearch and changing prefix_extractor with SetOptions (#10128) 2022-06-10 08:51:45 -07:00
block_based_table_reader_impl.h Seek parallelization (#9994) 2022-05-20 16:09:33 -07:00
block_based_table_reader_sync_and_async.h Seek parallelization (#9994) 2022-05-20 16:09:33 -07:00
block_based_table_reader_test.cc Increase ChargeTableReaderTest/ChargeTableReaderTest.Basic error tolerance rate from 1% to 5% (#10113) 2022-06-03 19:42:22 -07:00
block_builder.cc Improve data block construction performance (#9040) 2021-10-19 12:36:21 -07:00
block_builder.h Improve data block construction performance (#9040) 2021-10-19 12:36:21 -07:00
block_like_traits.h Refactor: Add BlockTypes to make them imply C++ type in block cache (#10098) 2022-06-06 11:16:12 -07:00
block_prefetcher.cc Seek parallelization (#9994) 2022-05-20 16:09:33 -07:00
block_prefetcher.h Set Read rate limiter priority dynamically and pass it to FS (#9996) 2022-05-18 19:41:44 -07:00
block_prefix_index.cc Fix bug with kHashSearch and changing prefix_extractor with SetOptions (#10128) 2022-06-10 08:51:45 -07:00
block_prefix_index.h Fix bug with kHashSearch and changing prefix_extractor with SetOptions (#10128) 2022-06-10 08:51:45 -07:00
block_test.cc Improve / clean up meta block code & integrity (#9163) 2021-11-18 11:43:44 -08:00
block_type.h Refactor: Add BlockTypes to make them imply C++ type in block cache (#10098) 2022-06-06 11:16:12 -07:00
cachable_entry.h Meta-internal folly integration with F14FastMap (#9546) 2022-04-13 07:34:01 -07:00
data_block_footer.cc Replace namespace name "rocksdb" with ROCKSDB_NAMESPACE (#6433) 2020-02-20 12:09:57 -08:00
data_block_footer.h Replace namespace name "rocksdb" with ROCKSDB_NAMESPACE (#6433) 2020-02-20 12:09:57 -08:00
data_block_hash_index.cc Replace namespace name "rocksdb" with ROCKSDB_NAMESPACE (#6433) 2020-02-20 12:09:57 -08:00
data_block_hash_index.h Replace namespace name "rocksdb" with ROCKSDB_NAMESPACE (#6433) 2020-02-20 12:09:57 -08:00
data_block_hash_index_test.cc Fast path for detecting unchanged prefix_extractor (#9407) 2022-01-21 11:37:46 -08:00
filter_block.h Fix auto_prefix_mode performance with partitioned filters (#10012) 2022-05-19 13:09:03 -07:00
filter_block_reader_common.cc Refactor: Add BlockTypes to make them imply C++ type in block cache (#10098) 2022-06-06 11:16:12 -07:00
filter_block_reader_common.h Refactor: Add BlockTypes to make them imply C++ type in block cache (#10098) 2022-06-06 11:16:12 -07:00
filter_policy.cc Rewrite memory-charging feature's option API (#9926) 2022-05-17 15:01:51 -07:00
filter_policy_internal.h Fix a major performance bug in 7.0 re: filter compatibility (#9736) 2022-03-23 10:00:54 -07:00
flush_block_policy.cc Restore Regex support for ObjectLibrary::Register, rename new APIs to allow old one to be deprecated in the future (#9362) 2022-01-11 06:33:48 -08:00
flush_block_policy.h Make FlushBlockPolicyFactory into a Customizable class (#8432) 2021-07-12 09:04:59 -07:00
full_filter_block.cc Refactor: Add BlockTypes to make them imply C++ type in block cache (#10098) 2022-06-06 11:16:12 -07:00
full_filter_block.h Fix auto_prefix_mode performance with partitioned filters (#10012) 2022-05-19 13:09:03 -07:00
full_filter_block_test.cc Fix a major performance bug in 7.0 re: filter compatibility (#9736) 2022-03-23 10:00:54 -07:00
hash_index_reader.cc Fix bug with kHashSearch and changing prefix_extractor with SetOptions (#10128) 2022-06-10 08:51:45 -07:00
hash_index_reader.h Extend Get/MultiGet deadline support to table open (#6982) 2020-06-29 14:53:17 -07:00
index_builder.cc Add (& fix) some simple source code checks (#8821) 2021-09-07 21:19:27 -07:00
index_builder.h Remove own ToString() (#9955) 2022-05-06 13:03:58 -07:00
index_reader_common.cc Seek parallelization (#9994) 2022-05-20 16:09:33 -07:00
index_reader_common.h Set Read rate limiter priority dynamically and pass it to FS (#9996) 2022-05-18 19:41:44 -07:00
mock_block_based_table.h Refactor FilterPolicies toward Customizable (#9567) 2022-02-16 08:30:03 -08:00
parsed_full_filter_block.cc Hide FilterBits{Builder,Reader} from public API (#9592) 2022-02-17 16:34:46 -08:00
parsed_full_filter_block.h Use new Insert and Lookup APIs in table reader to support secondary cache (#8315) 2021-05-21 18:29:12 -07:00
partitioned_filter_block.cc Refactor: Add BlockTypes to make them imply C++ type in block cache (#10098) 2022-06-06 11:16:12 -07:00
partitioned_filter_block.h Meta-internal folly integration with F14FastMap (#9546) 2022-04-13 07:34:01 -07:00
partitioned_filter_block_test.cc More refactoring ahead of footer & meta changes (#9240) 2021-12-10 08:13:26 -08:00
partitioned_index_iterator.cc Seek parallelization (#9994) 2022-05-20 16:09:33 -07:00
partitioned_index_iterator.h Make initial auto readahead_size configurable (#9836) 2022-04-15 17:28:09 -07:00
partitioned_index_reader.cc Seek parallelization (#9994) 2022-05-20 16:09:33 -07:00
partitioned_index_reader.h Meta-internal folly integration with F14FastMap (#9546) 2022-04-13 07:34:01 -07:00
reader_common.cc Remove own ToString() (#9955) 2022-05-06 13:03:58 -07:00
reader_common.h Bring the Configurable options together (#5753) 2020-09-14 17:01:01 -07:00
uncompression_dict_reader.cc Seek parallelization (#9994) 2022-05-20 16:09:33 -07:00
uncompression_dict_reader.h Fb 9718 verify checksums is ignored (#9767) 2022-03-29 11:54:54 -07:00