rocksdb/db
Yanqin Jin 7d26e4c5a3 Basic Support for Merge with user-defined timestamp (#10819)
Summary:
This PR implements the originally disabled `Merge()` APIs when user-defined timestamp is enabled.

Simplest usage:
```cpp
// assume string append merge op is used with '.' as delimiter.
// ts1 < ts2
db->Put(WriteOptions(), "key", ts1, "v0");
db->Merge(WriteOptions(), "key", ts2, "1");
ReadOptions ro;
ro.timestamp = &ts2;
db->Get(ro, "key", &value);
ASSERT_EQ("v0.1", value);
```

Some code comments are added for clarity.

Note: support for timestamp in `DB::GetMergeOperands()` will be done in a follow-up PR.

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

Test Plan: make check

Reviewed By: ltamasi

Differential Revision: D40603195

Pulled By: riversand963

fbshipit-source-id: f96d6f183258f3392d80377025529f7660503013
2022-10-31 22:28:58 -07:00
..
blob Run clang-format on db/blob/ (#10856) 2022-10-24 16:00:32 -07:00
compaction Basic Support for Merge with user-defined timestamp (#10819) 2022-10-31 22:28:58 -07:00
db_impl Basic Support for Merge with user-defined timestamp (#10819) 2022-10-31 22:28:58 -07:00
wide Handle Merges correctly in GetEntity (#10894) 2022-10-28 10:48:51 -07:00
arena_wrapped_db_iter.cc Cleanup SuperVersion in Iterator::Refresh() (#10770) 2022-10-04 22:23:24 -07:00
arena_wrapped_db_iter.h Fix memtable-only iterator regression (#10705) 2022-09-21 09:49:31 -07:00
builder.cc User-defined timestamp support for `DeleteRange()` (#10661) 2022-09-30 16:13:03 -07:00
builder.h
c.cc Add C API to set avoid_unnecessary_blocking_io option (#10693) 2022-09-22 18:41:06 -07:00
c_test.c
column_family.cc Fix FIFO causing overlapping seqnos in L0 files due to overlapped seqnos between ingested files and memtable's (#10777) 2022-10-25 10:39:58 -07:00
column_family.h
column_family_test.cc Validate option `memtable_protection_bytes_per_key` (#10621) 2022-08-31 17:47:07 -07:00
compact_files_test.cc Print stack traces on frozen tests in CI (#10828) 2022-10-18 00:35:35 -07:00
comparator_db_test.cc Print stack traces on frozen tests in CI (#10828) 2022-10-18 00:35:35 -07:00
convenience.cc
corruption_test.cc Migrate to docker for CI run (#10496) 2022-08-10 17:34:38 -07:00
cuckoo_table_db_test.cc Print stack traces on frozen tests in CI (#10828) 2022-10-18 00:35:35 -07:00
db_basic_test.cc Bypass a MultiGet test when async_io is used (#10669) 2022-09-14 09:59:54 -07:00
db_block_cache_test.cc Add DB property for fast block cache stats collection (#10832) 2022-10-20 15:04:29 -07:00
db_bloom_filter_test.cc Enable a multi-level db to smoothly migrate to FIFO via DB::Open (#10348) 2022-10-18 14:38:13 -07:00
db_compaction_filter_test.cc Skip swaths of range tombstone covered keys in merging iterator (2022 edition) (#10449) 2022-09-02 09:51:19 -07:00
db_compaction_test.cc Fix FIFO causing overlapping seqnos in L0 files due to overlapped seqnos between ingested files and memtable's (#10777) 2022-10-25 10:39:58 -07:00
db_dynamic_level_test.cc
db_encryption_test.cc
db_filesnapshot.cc
db_flush_test.cc Manual flush with `wait=false` should not stall when writes stopped (#10001) 2022-10-04 16:43:01 -07:00
db_info_dumper.cc
db_info_dumper.h
db_inplace_update_test.cc
db_io_failure_test.cc
db_iter.cc Basic Support for Merge with user-defined timestamp (#10819) 2022-10-31 22:28:58 -07:00
db_iter.h Basic Support for Merge with user-defined timestamp (#10819) 2022-10-31 22:28:58 -07:00
db_iter_stress_test.cc Print stack traces on frozen tests in CI (#10828) 2022-10-18 00:35:35 -07:00
db_iter_test.cc Print stack traces on frozen tests in CI (#10828) 2022-10-18 00:35:35 -07:00
db_iterator_test.cc Cleanup SuperVersion in Iterator::Refresh() (#10770) 2022-10-04 22:23:24 -07:00
db_kv_checksum_test.cc Print stack traces on frozen tests in CI (#10828) 2022-10-18 00:35:35 -07:00
db_log_iter_test.cc
db_logical_block_size_cache_test.cc Print stack traces on frozen tests in CI (#10828) 2022-10-18 00:35:35 -07:00
db_memtable_test.cc Add support for wide-column point lookups (#10540) 2022-08-19 11:51:12 -07:00
db_merge_operand_test.cc Avoid allocations/copies for large `GetMergeOperands()` results (#10458) 2022-08-04 00:42:13 -07:00
db_merge_operator_test.cc
db_options_test.cc
db_properties_test.cc Refactor to avoid confusing "raw block" (#10408) 2022-09-22 11:25:32 -07:00
db_range_del_test.cc Use `sstableKeyCompare()` for compaction output boundary check (#10763) 2022-10-06 15:54:58 -07:00
db_rate_limiter_test.cc
db_readonly_with_timestamp_test.cc
db_secondary_test.cc
db_sst_test.cc Fix periodic_task unable to re-register the same task type (#10379) 2022-08-25 18:52:37 -07:00
db_statistics_test.cc
db_table_properties_test.cc Always verify SST unique IDs on SST file open (#10532) 2022-09-07 22:52:42 -07:00
db_tailing_iter_test.cc Provide support for async_io with tailing iterators (#10781) 2022-10-10 15:48:48 -07:00
db_test.cc Basic Support for Merge with user-defined timestamp (#10819) 2022-10-31 22:28:58 -07:00
db_test2.cc Allow penultimate level output for the last level only compaction (#10822) 2022-10-22 08:57:38 -07:00
db_test_util.cc Use kXXH3 as default checksum (CPU efficiency) (#10778) 2022-10-21 18:09:12 -07:00
db_test_util.h Use kXXH3 as default checksum (CPU efficiency) (#10778) 2022-10-21 18:09:12 -07:00
db_universal_compaction_test.cc
db_wal_test.cc Deflake DBWALTest.RaceInstallFlushResultsWithWalObsoletion (#10456) 2022-08-04 12:14:28 -07:00
db_with_timestamp_basic_test.cc Basic Support for Merge with user-defined timestamp (#10819) 2022-10-31 22:28:58 -07:00
db_with_timestamp_compaction_test.cc Fix overlapping check by excluding timestamp (#10615) 2022-09-08 13:03:07 -07:00
db_with_timestamp_test_util.cc
db_with_timestamp_test_util.h
db_write_buffer_manager_test.cc Prevent a case of WriteBufferManager flush thrashing (#6364) 2022-08-17 15:53:40 -07:00
db_write_test.cc Add manual_wal_flush, FlushWAL() to stress/crash test (#10698) 2022-09-30 15:48:33 -07:00
dbformat.cc User-defined timestamp support for `DeleteRange()` (#10661) 2022-09-30 16:13:03 -07:00
dbformat.h Basic Support for Merge with user-defined timestamp (#10819) 2022-10-31 22:28:58 -07:00
dbformat_test.cc Print stack traces on frozen tests in CI (#10828) 2022-10-18 00:35:35 -07:00
deletefile_test.cc
error_handler.cc
error_handler.h
error_handler_fs_test.cc Deflake DBErrorHandlingFSTest.*WALWriteError (#10642) 2022-09-06 12:59:02 -07:00
event_helpers.cc LOG more info on oldest snapshot and sequence numbers (#10454) 2022-08-12 13:08:50 -07:00
event_helpers.h
experimental.cc Allow manifest fix-up without requiring prior state (#10796) 2022-10-10 17:59:17 -07:00
external_sst_file_basic_test.cc Refactor to avoid confusing "raw block" (#10408) 2022-09-22 11:25:32 -07:00
external_sst_file_ingestion_job.cc User-defined timestamp support for `DeleteRange()` (#10661) 2022-09-30 16:13:03 -07:00
external_sst_file_ingestion_job.h
external_sst_file_test.cc
fault_injection_test.cc Print stack traces on frozen tests in CI (#10828) 2022-10-18 00:35:35 -07:00
file_indexer.cc
file_indexer.h
file_indexer_test.cc
filename_test.cc Print stack traces on frozen tests in CI (#10828) 2022-10-18 00:35:35 -07:00
flush_job.cc User-defined timestamp support for `DeleteRange()` (#10661) 2022-09-30 16:13:03 -07:00
flush_job.h
flush_job_test.cc Print stack traces on frozen tests in CI (#10828) 2022-10-18 00:35:35 -07:00
flush_scheduler.cc
flush_scheduler.h
forward_iterator.cc Provide support for async_io with tailing iterators (#10781) 2022-10-10 15:48:48 -07:00
forward_iterator.h Provide support for async_io with tailing iterators (#10781) 2022-10-10 15:48:48 -07:00
forward_iterator_bench.cc
history_trimming_iterator.h
import_column_family_job.cc Add some missing headers (#10519) 2022-08-11 12:45:50 -07:00
import_column_family_job.h Add some missing headers (#10519) 2022-08-11 12:45:50 -07:00
import_column_family_test.cc Add some missing headers (#10519) 2022-08-11 12:45:50 -07:00
internal_stats.cc Avoid repeat periodic stats printing when there is no change (#10891) 2022-10-31 09:51:38 -07:00
internal_stats.h Avoid repeat periodic stats printing when there is no change (#10891) 2022-10-31 09:51:38 -07:00
job_context.h
kv_checksum.h Add memtable per key-value checksum (#10281) 2022-08-12 13:51:32 -07:00
listener_test.cc Print stack traces on frozen tests in CI (#10828) 2022-10-18 00:35:35 -07:00
log_format.h
log_reader.cc Add checksum handshake for WAL fragment decompression (#10339) 2022-07-25 16:27:26 -07:00
log_reader.h Add checksum handshake for WAL fragment decompression (#10339) 2022-07-25 16:27:26 -07:00
log_test.cc Print stack traces on frozen tests in CI (#10828) 2022-10-18 00:35:35 -07:00
log_writer.cc Add manual_wal_flush, FlushWAL() to stress/crash test (#10698) 2022-09-30 15:48:33 -07:00
log_writer.h Add manual_wal_flush, FlushWAL() to stress/crash test (#10698) 2022-09-30 15:48:33 -07:00
logs_with_prep_tracker.cc
logs_with_prep_tracker.h
lookup_key.h Basic Support for Merge with user-defined timestamp (#10819) 2022-10-31 22:28:58 -07:00
malloc_stats.cc
malloc_stats.h
manual_compaction_test.cc Print stack traces on frozen tests in CI (#10828) 2022-10-18 00:35:35 -07:00
memtable.cc Basic Support for Merge with user-defined timestamp (#10819) 2022-10-31 22:28:58 -07:00
memtable.h User-defined timestamp support for `DeleteRange()` (#10661) 2022-09-30 16:13:03 -07:00
memtable_list.cc Fix memtable-only iterator regression (#10705) 2022-09-21 09:49:31 -07:00
memtable_list.h Fix memtable-only iterator regression (#10705) 2022-09-21 09:49:31 -07:00
memtable_list_test.cc Print stack traces on frozen tests in CI (#10828) 2022-10-18 00:35:35 -07:00
merge_context.h
merge_helper.cc Basic Support for Merge with user-defined timestamp (#10819) 2022-10-31 22:28:58 -07:00
merge_helper.h Basic Support for Merge with user-defined timestamp (#10819) 2022-10-31 22:28:58 -07:00
merge_helper_test.cc Basic Support for Merge with user-defined timestamp (#10819) 2022-10-31 22:28:58 -07:00
merge_operator.cc
merge_test.cc
obsolete_files_test.cc
options_file_test.cc Print stack traces on frozen tests in CI (#10828) 2022-10-18 00:35:35 -07:00
output_validator.cc
output_validator.h
perf_context_test.cc Print stack traces on frozen tests in CI (#10828) 2022-10-18 00:35:35 -07:00
periodic_task_scheduler.cc Fix periodic_task unable to re-register the same task type (#10379) 2022-08-25 18:52:37 -07:00
periodic_task_scheduler.h Fix periodic_task unable to re-register the same task type (#10379) 2022-08-25 18:52:37 -07:00
periodic_task_scheduler_test.cc Print stack traces on frozen tests in CI (#10828) 2022-10-18 00:35:35 -07:00
pinned_iterators_manager.h Avoid allocations/copies for large `GetMergeOperands()` results (#10458) 2022-08-04 00:42:13 -07:00
plain_table_db_test.cc Print stack traces on frozen tests in CI (#10828) 2022-10-18 00:35:35 -07:00
post_memtable_callback.h
pre_release_callback.h
prefix_test.cc Print stack traces on frozen tests in CI (#10828) 2022-10-18 00:35:35 -07:00
range_del_aggregator.cc User-defined timestamp support for `DeleteRange()` (#10661) 2022-09-30 16:13:03 -07:00
range_del_aggregator.h User-defined timestamp support for `DeleteRange()` (#10661) 2022-09-30 16:13:03 -07:00
range_del_aggregator_bench.cc Improve FragmentTombstones() speed by lazily initializing `seq_set_` (#10848) 2022-10-25 11:33:04 -07:00
range_del_aggregator_test.cc Print stack traces on frozen tests in CI (#10828) 2022-10-18 00:35:35 -07:00
range_tombstone_fragmenter.cc Improve FragmentTombstones() speed by lazily initializing `seq_set_` (#10848) 2022-10-25 11:33:04 -07:00
range_tombstone_fragmenter.h Improve FragmentTombstones() speed by lazily initializing `seq_set_` (#10848) 2022-10-25 11:33:04 -07:00
range_tombstone_fragmenter_test.cc Print stack traces on frozen tests in CI (#10828) 2022-10-18 00:35:35 -07:00
read_callback.h
repair.cc Always verify SST unique IDs on SST file open (#10532) 2022-09-07 22:52:42 -07:00
repair_test.cc Print stack traces on frozen tests in CI (#10828) 2022-10-18 00:35:35 -07:00
seqno_time_test.cc Add option `preserve_internal_time_seconds` to preserve the time info (#10747) 2022-10-07 18:49:40 -07:00
seqno_to_time_mapping.cc Add option `preserve_internal_time_seconds` to preserve the time info (#10747) 2022-10-07 18:49:40 -07:00
seqno_to_time_mapping.h Add option `preserve_internal_time_seconds` to preserve the time info (#10747) 2022-10-07 18:49:40 -07:00
snapshot_checker.h
snapshot_impl.cc
snapshot_impl.h
table_cache.cc User-defined timestamp support for `DeleteRange()` (#10661) 2022-09-30 16:13:03 -07:00
table_cache.h Always verify SST unique IDs on SST file open (#10532) 2022-09-07 22:52:42 -07:00
table_cache_sync_and_async.h Always verify SST unique IDs on SST file open (#10532) 2022-09-07 22:52:42 -07:00
table_properties_collector.cc Refactor to avoid confusing "raw block" (#10408) 2022-09-22 11:25:32 -07:00
table_properties_collector.h Refactor to avoid confusing "raw block" (#10408) 2022-09-22 11:25:32 -07:00
table_properties_collector_test.cc Print stack traces on frozen tests in CI (#10828) 2022-10-18 00:35:35 -07:00
transaction_log_impl.cc
transaction_log_impl.h
trim_history_scheduler.cc
trim_history_scheduler.h
version_builder.cc Always verify SST unique IDs on SST file open (#10532) 2022-09-07 22:52:42 -07:00
version_builder.h
version_builder_test.cc Print stack traces on frozen tests in CI (#10828) 2022-10-18 00:35:35 -07:00
version_edit.cc Remove unused fields from FileMetaData (temporarily) (#10443) 2022-08-01 17:56:13 -07:00
version_edit.h Always verify SST unique IDs on SST file open (#10532) 2022-09-07 22:52:42 -07:00
version_edit_handler.cc
version_edit_handler.h
version_edit_test.cc Print stack traces on frozen tests in CI (#10828) 2022-10-18 00:35:35 -07:00
version_set.cc Fix compilation errors, clang++-15 (#10907) 2022-10-31 18:24:44 -07:00
version_set.h Allow manifest fix-up without requiring prior state (#10796) 2022-10-10 17:59:17 -07:00
version_set_sync_and_async.h Fix range deletion handling in async MultiGet (#10534) 2022-08-17 13:51:39 -07:00
version_set_test.cc Print stack traces on frozen tests in CI (#10828) 2022-10-18 00:35:35 -07:00
version_util.h Allow manifest fix-up without requiring prior state (#10796) 2022-10-10 17:59:17 -07:00
wal_edit.cc
wal_edit.h
wal_edit_test.cc
wal_manager.cc
wal_manager.h
wal_manager_test.cc Print stack traces on frozen tests in CI (#10828) 2022-10-18 00:35:35 -07:00
write_batch.cc Basic Support for Merge with user-defined timestamp (#10819) 2022-10-31 22:28:58 -07:00
write_batch_base.cc
write_batch_internal.h User-defined timestamp support for `DeleteRange()` (#10661) 2022-09-30 16:13:03 -07:00
write_batch_test.cc Basic Support for Merge with user-defined timestamp (#10819) 2022-10-31 22:28:58 -07:00
write_callback.h
write_callback_test.cc Print stack traces on frozen tests in CI (#10828) 2022-10-18 00:35:35 -07:00
write_controller.cc
write_controller.h
write_controller_test.cc Print stack traces on frozen tests in CI (#10828) 2022-10-18 00:35:35 -07:00
write_thread.cc Fix race in ExitAsBatchGroupLeader with pipelined writes (#9944) 2022-08-02 14:52:10 -07:00
write_thread.h Fix race in ExitAsBatchGroupLeader with pipelined writes (#9944) 2022-08-02 14:52:10 -07:00