rocksdb/db
Siying Dong 65428b0c0a Fix Bug: iterator.Prev() or iterator.SeekToLast() might return the first element instead of the correct one
Summary:
Recent patch https://reviews.facebook.net/D11865 introduced a regression bug:

DBIter::FindPrevUserEntry(), which is called by DBIter::Prev() (and also implicitly if calling iterator.SeekToLast())  might do issue a seek when having skipped too many entries. If the skipped entry just before the seek() is a delete, the saved key is erased so that it seeks to the front, so Prev() would return the first element.

This patch fixes the bug by not doing seek() in DBIter::FindNextUserEntry() if saved key has been erased.

Test Plan: Add a test DBTest.IterPrevMaxSkip which would fail without the patch and would pass with the change.

Reviewers: dhruba, xjin, haobo

Reviewed By: dhruba

CC: leveldb

Differential Revision: https://reviews.facebook.net/D13557
2013-10-17 18:33:18 -07:00
..
builder.cc Universal Compaction to Have a Size Percentage Threshold To Decide Whether to Compress 2013-10-17 13:33:39 -07:00
builder.h Universal Compaction to Have a Size Percentage Threshold To Decide Whether to Compress 2013-10-17 13:33:39 -07:00
c_test.c Migrate names of properties from 'leveldb' prefix to 'rocksdb' prefix. 2013-10-06 00:14:26 -07:00
c.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
corruption_test.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
db_bench.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
db_filesnapshot.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
db_impl_readonly.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
db_impl_readonly.h Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
db_impl.cc Universal Compaction to Have a Size Percentage Threshold To Decide Whether to Compress 2013-10-17 13:33:39 -07:00
db_impl.h Universal Compaction to Have a Size Percentage Threshold To Decide Whether to Compress 2013-10-17 13:33:39 -07:00
db_iter.cc Fix Bug: iterator.Prev() or iterator.SeekToLast() might return the first element instead of the correct one 2013-10-17 18:33:18 -07:00
db_iter.h Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
db_statistics.h Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
db_stats_logger.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
db_test.cc Fix Bug: iterator.Prev() or iterator.SeekToLast() might return the first element instead of the correct one 2013-10-17 18:33:18 -07:00
dbformat_test.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
dbformat.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
dbformat.h Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
deletefile_test.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
filename_test.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
filename.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
filename.h Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
log_format.h Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
log_reader.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
log_reader.h Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
log_test.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
log_writer.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
log_writer.h Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
memtable.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
memtable.h Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
memtablelist.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
memtablelist.h Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
merge_helper.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
merge_helper.h Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
merge_operator.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
merge_test.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
perf_context_test.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
prefix_filter_iterator.h Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
repair.cc Universal Compaction to Have a Size Percentage Threshold To Decide Whether to Compress 2013-10-17 13:33:39 -07:00
skiplist_test.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
skiplist.h Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
snapshot.h Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
table_cache.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
table_cache.h Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
transaction_log_impl.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
transaction_log_impl.h Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
version_edit_test.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
version_edit.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
version_edit.h Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
version_set_reduce_num_levels.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
version_set_test.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
version_set.cc Universal Compaction to Have a Size Percentage Threshold To Decide Whether to Compress 2013-10-17 13:33:39 -07:00
version_set.h Universal Compaction to Have a Size Percentage Threshold To Decide Whether to Compress 2013-10-17 13:33:39 -07:00
write_batch_internal.h Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
write_batch_test.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
write_batch.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00