rocksdb/db
Naman Gupta 1447bb5919 Allow callback to change size of existing value. Change return type of the callback function to an enum status to handle 3 cases.
Summary:
This diff fixes 2 hacks:
* The callback function can modify the existing value inplace, if the merged value fits within the existing buffer size. But currently the existing buffer size is not being modified. Now the callback recieves a int* allowing the size to be modified. Since size is encoded as a varint in the internal key for memtable. It might happen that the entire value might have be copied to the new location if the new size varint is smaller than the existing size varint.
* The callback function has 3 functionalities
    1. Modify existing buffer inplace, and update size correspondingly. Now to indicate that, Returns 1.
    2. Generate a new buffer indicating merged value. Returns 2.
    3. Fails to do either of above, based on whatever application logic. Returns 0.

Test Plan: Just make all for now. I'm adding another unit test to test each scenario.

Reviewers: dhruba, haobo

Reviewed By: haobo

CC: leveldb, sdong, kailiu, xinyaohu, sumeet, danguo

Differential Revision: https://reviews.facebook.net/D15195
2014-01-16 15:12:39 -08:00
..
builder.cc Merge branch 'master' into performance 2014-01-15 23:12:31 -08:00
builder.h Don't always compress L0 files written by memtable flush 2014-01-07 21:50:26 -08:00
c_test.c Rename leveldb to rocksdb in C api 2013-12-10 10:48:35 +02:00
c.cc C API: add rocksdb_env_set_high_priority_background_threads 2013-12-31 15:14:18 -08:00
compaction_picker.cc CompactionPicker 2014-01-16 13:03:52 -08:00
compaction_picker.h CompactionPicker 2014-01-16 13:03:52 -08:00
compaction.cc Moving Compaction class to separate header file 2014-01-15 16:22:34 -08:00
compaction.h CompactionPicker 2014-01-16 13:03:52 -08:00
corruption_test.cc Make "Table" pluggable 2013-10-28 17:54:09 -07:00
db_bench.cc Merge branch 'master' into performance 2014-01-15 23:12:31 -08:00
db_filesnapshot.cc Move functions from VersionSet to Version 2014-01-15 16:18:04 -08:00
db_impl_readonly.cc VersionEdit not to take NumLevels() 2014-01-14 15:27:09 -08:00
db_impl_readonly.h Support multi-threaded DisableFileDeletions() and EnableFileDeletions() 2014-01-02 03:33:42 -08:00
db_impl.cc Merge branch 'master' into performance 2014-01-15 23:12:31 -08:00
db_impl.h Merge branch 'master' into performance 2014-01-15 23:12:31 -08:00
db_iter.cc Merge branch 'master' into performance 2013-12-06 14:15:42 -08:00
db_iter.h Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
db_statistics.cc Fix #26 by putting the implementation of CreateDBStatistics() to a cc file 2013-12-05 22:29:03 -08:00
db_statistics.h Fix #26 by putting the implementation of CreateDBStatistics() to a cc file 2013-12-05 22:29:03 -08:00
db_stats_logger.cc Move functions from VersionSet to Version 2014-01-15 16:18:04 -08:00
db_test.cc Allow callback to change size of existing value. Change return type of the callback function to an enum status to handle 3 cases. 2014-01-16 15:12:39 -08: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 Make "Table" pluggable 2013-10-28 17:54:09 -07:00
deletefile_test.cc Start DeleteFileTest with clean plate 2013-11-15 16:30:23 -08:00
filename_test.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
filename.cc Unify DeleteFile and DeleteWalFiles 2013-10-25 08:32:14 -07:00
filename.h Unify DeleteFile and DeleteWalFiles 2013-10-25 08:32:14 -07:00
log_format.h Some minor refactoring on the code 2014-01-02 16:32:31 -08: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_list.cc Replace vector with autovector 2014-01-02 16:43:35 -08:00
memtable_list.h Replace vector with autovector 2014-01-02 16:43:35 -08:00
memtable.cc Allow callback to change size of existing value. Change return type of the callback function to an enum status to handle 3 cases. 2014-01-16 15:12:39 -08:00
memtable.h Merge branch 'master' into performance 2014-01-15 23:12:31 -08:00
merge_context.h Introduce MergeContext to Lazily Initialize merge operand list 2013-12-11 11:37:28 -08:00
merge_helper.cc [RocksDB] Use raw pointer instead of shared pointer when passing Statistics object internally 2013-11-25 10:38:15 -08:00
merge_helper.h [RocksDB] Use raw pointer instead of shared pointer when passing Statistics object internally 2013-11-25 10:38:15 -08:00
merge_operator.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
merge_test.cc Use ASSERT_EQ() instead of assert() in merge_test 2014-01-11 09:25:47 -08:00
perf_context_test.cc Merge branch 'master' into performance 2013-12-06 14:15:42 -08:00
plain_table_db_test.cc Fix the valgrind issues 2014-01-03 11:48:31 -08:00
prefix_filter_iterator.h Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
prefix_test.cc [Performance Branch] Fix memory leak in HashLinkListRep.GetIterator() 2014-01-10 12:12:28 -08:00
repair.cc Merge branch 'master' into performance 2014-01-15 23:12:31 -08:00
simple_table_db_test.cc Improve the "table stats" 2013-11-19 16:29:42 -08:00
skiplist_test.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
skiplist.h [RocksDB][Performance Branch] Make height and branching factor configurable for skiplist implementation 2013-11-26 21:59:36 -08:00
snapshot.h Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
table_cache.cc [Performance Branch] If options.max_open_files set to be -1, cache table readers in FileMetadata for Get() and NewIterator() 2014-01-10 15:57:49 -08:00
table_cache.h [Performance Branch] If options.max_open_files set to be -1, cache table readers in FileMetadata for Get() and NewIterator() 2014-01-10 15:57:49 -08:00
table_properties_collector_test.cc Add the property block for the plain table 2013-12-13 17:18:14 -08:00
table_properties_collector.cc Extract metaindex block from block-based table 2013-12-05 16:34:16 -08:00
table_properties_collector.h Extract metaindex block from block-based table 2013-12-05 16:34:16 -08:00
transaction_log_impl.cc Fix the string format issue 2013-11-12 21:05:39 -08:00
transaction_log_impl.h Making the transaction log iterator more robust 2013-11-04 20:49:03 -08:00
version_edit_test.cc Remove compaction pointers 2014-01-16 14:06:53 -08:00
version_edit.cc Merge branch 'master' into performance 2014-01-16 14:31:18 -08:00
version_edit.h Merge branch 'master' into performance 2014-01-16 14:31:18 -08:00
version_set_reduce_num_levels.cc Remove compaction pointers 2014-01-16 14:06:53 -08:00
version_set_test.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
version_set.cc Merge branch 'master' into performance 2014-01-16 14:31:18 -08:00
version_set.h Merge branch 'master' into performance 2014-01-16 14:31:18 -08:00
write_batch_internal.h In-place updates for equal keys and similar sized values 2013-10-31 11:27:12 -07:00
write_batch_test.cc Fix memtable construction in tests 2014-01-14 15:36:12 -08:00
write_batch.cc Allow callback to change size of existing value. Change return type of the callback function to an enum status to handle 3 cases. 2014-01-16 15:12:39 -08:00