rocksdb/utilities
rogertyang 543191f2ea Add bounds checking to WBWIIteratorImpl and respect bounds of ReadOptions in Transaction (#11680)
Summary:
Fix https://github.com/facebook/rocksdb/issues/11607
Fix https://github.com/facebook/rocksdb/issues/11679
Fix https://github.com/facebook/rocksdb/issues/11606
Fix https://github.com/facebook/rocksdb/issues/2343

Add bounds checking to `WBWIIteratorImpl`, which will be reflected in `BaseDeltaIterator::delta_iterator_::Valid()`, just like `BaseDeltaIterator::base_iterator_::Valid()`. In this way, the two sub itertors become more aligned from `BaseDeltaIterator`'s perspective. Like `DBIter`, the added bounds checking caps in either bound when seeking and disvalidates the `WBWIIteratorImpl` iterator when the lower bound is past or the upper bound is reached.

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

Test Plan:
- A simple test added to write_batch_with_index_test.cc to exercise the bounds checking in `WBWIIteratorImpl`.
- A sophisticated test added to transaction_test.cc to assert that `Transaction` with different write policies honor bounds in `ReadOptions`. It should be so as long as the  `BaseDeltaIterator` is correctly coordinating the two sub iterators to perform iterating and bounds checking.

Reviewed By: ajkr

Differential Revision: D48125229

Pulled By: cbi42

fbshipit-source-id: c9acea52595aed1471a63d7ca6ef15d2a2af1367
2023-10-20 13:28:28 -07:00
..
agg_merge
backup
blob_db
cassandra
checkpoint
compaction_filters
convenience
leveldb_options
memory
merge_operators
option_change_migration
options
persistent_cache
simulator_cache
table_properties_collectors
trace
transactions
ttl
write_batch_with_index
cache_dump_load.cc
cache_dump_load_impl.cc
cache_dump_load_impl.h
compaction_filters.cc
counted_fs.cc
counted_fs.h
debug.cc
env_mirror.cc
env_mirror_test.cc
env_timed.cc
env_timed.h
env_timed_test.cc
fault_injection_env.cc
fault_injection_env.h
fault_injection_fs.cc
fault_injection_fs.h
fault_injection_secondary_cache.cc
fault_injection_secondary_cache.h
memory_allocators.h
merge_operators.cc
merge_operators.h
object_registry.cc
object_registry_test.cc
util_merge_operators_test.cc
wal_filter.cc