rocksdb/table
Andres Notzli 1d20fa9d0f Fixed and simplified merge_helper
Summary:
MergeUntil was not reporting a success when merging an operand with
a Value/Deletion despite the comments in MergeHelper and CompactionJob
indicating otherwise. This lead to operands being written to the compaction
output unnecessarily:

M1 M2 M3 P M4 M5 --> (P+M1+M2+M3) M2 M3 M4 M5 (before the diff)
M1 M2 M3 P M4 M5 --> (P+M1+M2+M3) M4 M5 (after the diff)

In addition, the code handling Values/Deletion was basically identical.
This patch unifies the code. Finally, this patch also adds testing for
merge_helper.

Test Plan: make && make check

Reviewers: sdong, rven, yhchiang, tnovak, igor

Reviewed By: igor

Subscribers: tnovak, dhruba, leveldb

Differential Revision: https://reviews.facebook.net/D42351
2015-07-17 09:27:24 -07:00
..
adaptive_table_factory.cc Ensure Windows build w/o port/port.h in public headers 2015-07-16 12:10:16 -07:00
adaptive_table_factory.h A new call back to TablePropertiesCollector to allow users know the entry is add, delete or merge 2015-04-06 10:27:21 -07:00
block_based_filter_block_test.cc rocksdb: switch to gtest 2015-03-17 14:08:00 -07:00
block_based_filter_block.cc Build for CYGWIN 2015-04-23 21:33:44 -07:00
block_based_filter_block.h Remember whole key/prefix filtering on/off in SST file 2015-02-11 11:20:04 -08:00
block_based_table_builder.cc "make format" against last 10 commits 2015-07-13 13:50:18 -07:00
block_based_table_builder.h Windows Port from Microsoft 2015-07-01 16:13:56 -07:00
block_based_table_factory.cc "make format" against last 10 commits 2015-07-13 13:50:18 -07:00
block_based_table_factory.h A new call back to TablePropertiesCollector to allow users know the entry is add, delete or merge 2015-04-06 10:27:21 -07:00
block_based_table_reader.cc perf_context: report time spent on reading index and bloom blocks 2015-07-10 14:45:42 -07:00
block_based_table_reader.h Add functionality to pre-fetch blocks specified by a key range to BlockBasedTable implementation. 2015-03-02 17:07:03 -08:00
block_builder.cc Turn on -Wshorten-64-to-32 and fix all the errors 2014-11-11 16:47:22 -05:00
block_builder.h delete unused Comparator 2014-09-04 09:10:13 +08:00
block_hash_index_test.cc rocksdb: switch to gtest 2015-03-17 14:08:00 -07:00
block_hash_index.cc Windows Port from Microsoft 2015-07-01 16:13:56 -07:00
block_hash_index.h Turn on -Wshadow 2014-10-31 11:59:54 -07:00
block_prefix_index.cc Turn on -Wshorten-64-to-32 and fix all the errors 2014-11-11 16:47:22 -05:00
block_prefix_index.h Windows Port from Microsoft 2015-07-01 16:13:56 -07:00
block_test.cc rocksdb: switch to gtest 2015-03-17 14:08:00 -07:00
block.cc perf_context: report time spent on reading index and bloom blocks 2015-07-10 14:45:42 -07:00
block.h Use malloc_usable_size() for accounting block cache size 2015-06-26 11:48:09 -07:00
bloom_block.cc table/bloom_block.*: pass func parameter by reference 2014-09-30 23:30:31 +02:00
bloom_block.h Enforce write buffer memory limit across column families 2014-12-02 12:09:20 -08:00
cuckoo_table_builder_test.cc "make format" against last 10 commits 2015-07-13 13:50:18 -07:00
cuckoo_table_builder.cc Support footer versions bigger than 1 2015-01-13 14:33:04 -08:00
cuckoo_table_builder.h Fix public API dependency on internal codes and dependency on MAX_INT32 2015-07-11 10:32:11 -07:00
cuckoo_table_factory.cc A new call back to TablePropertiesCollector to allow users know the entry is add, delete or merge 2015-04-06 10:27:21 -07:00
cuckoo_table_factory.h "make format" against last 10 commits 2015-07-13 13:50:18 -07:00
cuckoo_table_reader_test.cc Fixing build issue 2015-03-24 16:27:24 -07:00
cuckoo_table_reader.cc Turn on -Wshorten-64-to-32 and fix all the errors 2014-11-11 16:47:22 -05:00
cuckoo_table_reader.h use GetContext to replace callback function pointer 2014-09-29 11:09:09 -07:00
filter_block.h Dump routine to BlockBasedTableReader 2014-12-23 13:24:07 -08:00
flush_block_policy.cc move block based table related options BlockBasedTableOptions 2014-08-25 14:22:05 -07:00
format.cc Build for CYGWIN 2015-04-23 21:33:44 -07:00
format.h "make format" against last 10 commits 2015-07-13 13:50:18 -07:00
full_filter_block_test.cc rocksdb: switch to gtest 2015-03-17 14:08:00 -07:00
full_filter_block.cc Remember whole key/prefix filtering on/off in SST file 2015-02-11 11:20:04 -08:00
full_filter_block.h Remember whole key/prefix filtering on/off in SST file 2015-02-11 11:20:04 -08:00
get_context.cc Implement a table-level row cache 2015-06-23 10:25:45 -07:00
get_context.h Implement a table-level row cache 2015-06-23 10:25:45 -07:00
iter_heap.h Replace std::priority_queue in MergingIterator with custom heap, take 2 2015-07-15 03:34:40 -07:00
iterator_wrapper.h Turn -Wshadow back on 2014-11-06 11:14:28 -08:00
iterator.cc rocksdb: Add missing override 2015-02-26 11:28:41 -08:00
merger_test.cc Fixed and simplified merge_helper 2015-07-17 09:27:24 -07:00
merger.cc Replace std::priority_queue in MergingIterator with custom heap, take 2 2015-07-15 03:34:40 -07:00
merger.h In DB::NewIterator(), try to allocate the whole iterator tree in an arena 2014-06-02 17:44:57 -07:00
meta_blocks.cc A new call back to TablePropertiesCollector to allow users know the entry is add, delete or merge 2015-04-06 10:27:21 -07:00
meta_blocks.h A new call back to TablePropertiesCollector to allow users know the entry is add, delete or merge 2015-04-06 10:27:21 -07:00
mock_table.cc SyncPoint to allow a callback with an argument and use it to get DBTest.DynamicLevelCompressionPerLevel2 more straight-forward 2015-04-14 16:18:50 -07:00
mock_table.h Add more table properties to EventLogger 2015-05-12 15:53:55 -07:00
plain_table_builder.cc Revert the changes related to Options, as requested to seperate them into 2015-07-09 11:31:42 -07:00
plain_table_builder.h Revert the changes related to Options, as requested to seperate them into 2015-07-09 11:31:42 -07:00
plain_table_factory.cc Revert the changes related to Options, as requested to seperate them into 2015-07-09 11:31:42 -07:00
plain_table_factory.h Revert the changes related to Options, as requested to seperate them into 2015-07-09 11:31:42 -07:00
plain_table_index.cc "make format" against last 10 commits 2015-07-13 13:50:18 -07:00
plain_table_index.h Block plain_table_index.cc in ROCKSDB_LITE 2014-11-24 20:47:27 -08:00
plain_table_key_coding.cc Avoid naming conflict of EntryType 2015-04-06 11:49:13 -07:00
plain_table_key_coding.h typo improvement 2014-09-06 23:21:26 +08:00
plain_table_reader.cc Revert the changes related to Options, as requested to seperate them into 2015-07-09 11:31:42 -07:00
plain_table_reader.h Revert the changes related to Options, as requested to seperate them into 2015-07-09 11:31:42 -07:00
table_builder.h Windows Port from Microsoft 2015-07-01 16:13:56 -07:00
table_properties_internal.h Fix iOS compile with -Wshorten-64-to-32 2014-11-13 14:39:30 -05:00
table_properties.cc Add rocksdb::ToString() to address cases where std::to_string is not available. 2014-11-24 20:44:49 -08:00
table_reader_bench.cc A new call back to TablePropertiesCollector to allow users know the entry is add, delete or merge 2015-04-06 10:27:21 -07:00
table_reader.h Add functionality to pre-fetch blocks specified by a key range to BlockBasedTable implementation. 2015-03-02 17:07:03 -08:00
table_test.cc Optimistic Transactions 2015-05-29 14:36:35 -07:00
two_level_iterator.cc Allocate LevelFileIteratorState and LevelFileNumIterator from DB iterator's arena 2015-06-30 17:30:38 -07:00
two_level_iterator.h Allocate LevelFileIteratorState and LevelFileNumIterator from DB iterator's arena 2015-06-30 17:30:38 -07:00