@nxtedition/rocksdb 7.1.30 → 7.1.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/deps/rocksdb/rocksdb/CMakeLists.txt +2 -2
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +15 -23
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +0 -1
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +4 -5
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +3 -1
- package/deps/rocksdb/rocksdb/crash_test.mk +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_log_format.h +15 -0
- package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/column_family.cc +4 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +78 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +32 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +8 -8
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +47 -8
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +3 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +105 -166
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +46 -15
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +47 -26
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +17 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +11 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +12 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +1 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +337 -103
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +43 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +1 -2
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +524 -1
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +164 -0
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +6 -6
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +1 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +5 -7
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +11 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +4 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +1 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +2 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +1 -1
- package/deps/rocksdb/rocksdb/db/db_test2.cc +1 -1
- package/deps/rocksdb/rocksdb/db/memtable.cc +16 -23
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +30 -0
- package/deps/rocksdb/rocksdb/db/merge_helper.h +9 -0
- package/deps/rocksdb/rocksdb/db/range_del_aggregator_bench.cc +29 -9
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +10 -7
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +12 -8
- package/deps/rocksdb/rocksdb/db/version_set.cc +11 -6
- package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +142 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +59 -53
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +3 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +4 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +1 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +7 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +0 -2
- package/deps/rocksdb/rocksdb/env/env.cc +16 -19
- package/deps/rocksdb/rocksdb/env/env_basic_test.cc +1 -1
- package/deps/rocksdb/rocksdb/env/env_chroot.cc +20 -20
- package/deps/rocksdb/rocksdb/env/env_encryption.cc +62 -60
- package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +1 -1
- package/deps/rocksdb/rocksdb/env/env_test.cc +179 -176
- package/deps/rocksdb/rocksdb/env/file_system.cc +3 -4
- package/deps/rocksdb/rocksdb/env/io_posix.cc +3 -2
- package/deps/rocksdb/rocksdb/env/io_posix.h +1 -2
- package/deps/rocksdb/rocksdb/env/mock_env.h +1 -0
- package/deps/rocksdb/rocksdb/env/mock_env_test.cc +4 -4
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +6 -5
- package/deps/rocksdb/rocksdb/file/delete_scheduler.h +2 -5
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +6 -7
- package/deps/rocksdb/rocksdb/file/file_util.cc +1 -1
- package/deps/rocksdb/rocksdb/file/filename.cc +16 -17
- package/deps/rocksdb/rocksdb/file/filename.h +4 -5
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +492 -496
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +1 -3
- package/deps/rocksdb/rocksdb/file/read_write_util.cc +1 -0
- package/deps/rocksdb/rocksdb/file/read_write_util.h +1 -0
- package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +6 -8
- package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +1 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +4 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/block_cache_trace_writer.h +4 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +166 -167
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +12 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/io_status.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/ldb_tool.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_level.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/persistent_cache.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +0 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +3 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/transaction_log.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/types.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/checkpoint.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_mirror.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/option_change_migration.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +4 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/sim_cache.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +4 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +1 -1
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger.cc +3 -3
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger.h +3 -7
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +20 -23
- package/deps/rocksdb/rocksdb/logging/env_logger_test.cc +1 -0
- package/deps/rocksdb/rocksdb/logging/event_logger.cc +1 -3
- package/deps/rocksdb/rocksdb/logging/event_logger.h +4 -5
- package/deps/rocksdb/rocksdb/logging/event_logger_test.cc +2 -1
- package/deps/rocksdb/rocksdb/logging/log_buffer.cc +2 -3
- package/deps/rocksdb/rocksdb/logging/log_buffer.h +3 -2
- package/deps/rocksdb/rocksdb/logging/logging.h +3 -3
- package/deps/rocksdb/rocksdb/memory/allocator.h +1 -0
- package/deps/rocksdb/rocksdb/memory/arena_test.cc +1 -1
- package/deps/rocksdb/rocksdb/memory/concurrent_arena.cc +2 -0
- package/deps/rocksdb/rocksdb/memory/concurrent_arena.h +1 -0
- package/deps/rocksdb/rocksdb/memtable/alloc_tracker.cc +1 -0
- package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +17 -20
- package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.cc +13 -15
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +11 -10
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +3 -3
- package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +2 -2
- package/deps/rocksdb/rocksdb/memtable/skiplist.h +30 -28
- package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +4 -6
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +73 -70
- package/deps/rocksdb/rocksdb/memtable/stl_wrappers.h +1 -1
- package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +21 -23
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +1 -0
- package/deps/rocksdb/rocksdb/monitoring/histogram.cc +24 -38
- package/deps/rocksdb/rocksdb/monitoring/histogram.h +10 -17
- package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +19 -19
- package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.cc +22 -30
- package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.h +4 -6
- package/deps/rocksdb/rocksdb/monitoring/in_memory_stats_history.cc +1 -0
- package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +4 -12
- package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +2 -3
- package/deps/rocksdb/rocksdb/monitoring/iostats_context_test.cc +1 -0
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +12 -14
- package/deps/rocksdb/rocksdb/monitoring/perf_level.cc +2 -3
- package/deps/rocksdb/rocksdb/monitoring/perf_level_imp.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/perf_step_timer.h +1 -3
- package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.cc +1 -0
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +1 -1
- package/deps/rocksdb/rocksdb/monitoring/statistics.h +7 -7
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +12 -22
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +7 -10
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +2 -2
- package/deps/rocksdb/rocksdb/port/lang.h +3 -1
- package/deps/rocksdb/rocksdb/port/likely.h +2 -2
- package/deps/rocksdb/rocksdb/port/mmap.h +2 -2
- package/deps/rocksdb/rocksdb/port/port_dirent.h +2 -2
- package/deps/rocksdb/rocksdb/port/port_posix.cc +32 -27
- package/deps/rocksdb/rocksdb/port/port_posix.h +31 -30
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +1 -1
- package/deps/rocksdb/rocksdb/port/sys_time.h +1 -1
- package/deps/rocksdb/rocksdb/port/win/io_win.h +6 -7
- package/deps/rocksdb/rocksdb/port/win/port_win.h +12 -20
- package/deps/rocksdb/rocksdb/port/win/win_jemalloc.cc +5 -4
- package/deps/rocksdb/rocksdb/port/win/win_logger.cc +3 -5
- package/deps/rocksdb/rocksdb/port/win/win_logger.h +3 -4
- package/deps/rocksdb/rocksdb/port/win/win_thread.cc +30 -49
- package/deps/rocksdb/rocksdb/port/win/win_thread.h +5 -5
- package/deps/rocksdb/rocksdb/port/win/xpress_win.cc +51 -62
- package/deps/rocksdb/rocksdb/port/win/xpress_win.h +2 -2
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +4 -3
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +1 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +3 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/cachable_entry.h +28 -30
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +3 -3
- package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +3 -3
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +1 -0
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +4 -5
- package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +1 -3
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +1 -0
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +7 -6
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +1 -0
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +5 -6
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +2 -2
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +90 -80
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +5 -4
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +63 -69
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.h +2 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +58 -57
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.h +3 -3
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +35 -30
- package/deps/rocksdb/rocksdb/table/get_context.cc +16 -10
- package/deps/rocksdb/rocksdb/table/iter_heap.h +2 -0
- package/deps/rocksdb/rocksdb/table/iterator.cc +1 -1
- package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +1 -3
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +31 -16
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +6 -6
- package/deps/rocksdb/rocksdb/table/multiget_context.h +5 -6
- package/deps/rocksdb/rocksdb/table/persistent_cache_helper.cc +1 -0
- package/deps/rocksdb/rocksdb/table/plain/plain_table_bloom.cc +1 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +7 -10
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +3 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.h +2 -2
- package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +4 -3
- package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +2 -2
- package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +1 -0
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +10 -21
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +14 -12
- package/deps/rocksdb/rocksdb/table/scoped_arena_iterator.h +2 -5
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +2 -3
- package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +0 -6
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +0 -33
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +3 -6
- package/deps/rocksdb/rocksdb/table/table_properties.cc +24 -37
- package/deps/rocksdb/rocksdb/table/table_reader.h +3 -2
- package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +9 -8
- package/deps/rocksdb/rocksdb/table/table_test.cc +77 -82
- package/deps/rocksdb/rocksdb/table/two_level_iterator.cc +1 -0
- package/deps/rocksdb/rocksdb/table/two_level_iterator.h +1 -1
- package/deps/rocksdb/rocksdb/test_util/sync_point.cc +8 -18
- package/deps/rocksdb/rocksdb/test_util/sync_point.h +2 -2
- package/deps/rocksdb/rocksdb/test_util/sync_point_impl.cc +4 -3
- package/deps/rocksdb/rocksdb/test_util/sync_point_impl.h +13 -18
- package/deps/rocksdb/rocksdb/test_util/testharness.cc +1 -2
- package/deps/rocksdb/rocksdb/test_util/testutil.h +6 -7
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +3 -4
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +1 -1
- package/deps/rocksdb/rocksdb/tools/blob_dump.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +11 -7
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.h +3 -2
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +296 -314
- package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +6 -6
- package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +2 -1
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +57 -64
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +6 -5
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.cc +1 -2
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +10 -10
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/write_stress.cc +6 -3
- package/deps/rocksdb/rocksdb/util/aligned_buffer.h +12 -31
- package/deps/rocksdb/rocksdb/util/autovector.h +3 -6
- package/deps/rocksdb/rocksdb/util/autovector_test.cc +12 -12
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +8 -12
- package/deps/rocksdb/rocksdb/util/coding.cc +1 -0
- package/deps/rocksdb/rocksdb/util/coding.h +17 -15
- package/deps/rocksdb/rocksdb/util/coding_test.cc +14 -15
- package/deps/rocksdb/rocksdb/util/comparator.cc +4 -4
- package/deps/rocksdb/rocksdb/util/compression.h +6 -3
- package/deps/rocksdb/rocksdb/util/compression_context_cache.cc +2 -2
- package/deps/rocksdb/rocksdb/util/concurrent_task_limiter_impl.cc +5 -8
- package/deps/rocksdb/rocksdb/util/concurrent_task_limiter_impl.h +1 -1
- package/deps/rocksdb/rocksdb/util/crc32c.cc +202 -297
- package/deps/rocksdb/rocksdb/util/crc32c.h +2 -3
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.h +2 -0
- package/deps/rocksdb/rocksdb/util/crc32c_test.cc +39 -54
- package/deps/rocksdb/rocksdb/util/defer.h +2 -1
- package/deps/rocksdb/rocksdb/util/defer_test.cc +2 -1
- package/deps/rocksdb/rocksdb/util/duplicate_detector.h +2 -1
- package/deps/rocksdb/rocksdb/util/dynamic_bloom.cc +1 -1
- package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +3 -3
- package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +1 -1
- package/deps/rocksdb/rocksdb/util/filelock_test.cc +24 -29
- package/deps/rocksdb/rocksdb/util/filter_bench.cc +4 -4
- package/deps/rocksdb/rocksdb/util/hash_test.cc +2 -2
- package/deps/rocksdb/rocksdb/util/heap.h +5 -4
- package/deps/rocksdb/rocksdb/util/heap_test.cc +15 -25
- package/deps/rocksdb/rocksdb/util/kv_map.h +1 -1
- package/deps/rocksdb/rocksdb/util/murmurhash.cc +7 -2
- package/deps/rocksdb/rocksdb/util/murmurhash.h +4 -3
- package/deps/rocksdb/rocksdb/util/mutexlock.h +5 -11
- package/deps/rocksdb/rocksdb/util/random.cc +1 -0
- package/deps/rocksdb/rocksdb/util/random.h +2 -4
- package/deps/rocksdb/rocksdb/util/random_test.cc +2 -1
- package/deps/rocksdb/rocksdb/util/ribbon_test.cc +4 -3
- package/deps/rocksdb/rocksdb/util/slice.cc +1 -1
- package/deps/rocksdb/rocksdb/util/slice_test.cc +1 -2
- package/deps/rocksdb/rocksdb/util/status.cc +2 -0
- package/deps/rocksdb/rocksdb/util/string_util.cc +2 -0
- package/deps/rocksdb/rocksdb/util/thread_list_test.cc +64 -76
- package/deps/rocksdb/rocksdb/util/thread_local.cc +18 -32
- package/deps/rocksdb/rocksdb/util/thread_local.h +2 -3
- package/deps/rocksdb/rocksdb/util/thread_operation.h +34 -43
- package/deps/rocksdb/rocksdb/util/threadpool_imp.cc +54 -73
- package/deps/rocksdb/rocksdb/util/threadpool_imp.h +18 -18
- package/deps/rocksdb/rocksdb/util/timer.h +4 -9
- package/deps/rocksdb/rocksdb/util/timer_queue.h +1 -0
- package/deps/rocksdb/rocksdb/util/timer_queue_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/xxhash.cc +1 -2
- package/deps/rocksdb/rocksdb/util/xxhash.h +7 -4
- package/deps/rocksdb/rocksdb/util/xxph3.h +3 -1
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +16 -24
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_impl.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +106 -104
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +3 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +6 -6
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +1 -2
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +3 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +3 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +11 -15
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.h +12 -12
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_format_test.cc +56 -55
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +91 -74
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_row_merge_test.cc +17 -34
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_serialize_test.cc +21 -45
- package/deps/rocksdb/rocksdb/utilities/cassandra/format.cc +74 -97
- package/deps/rocksdb/rocksdb/utilities/cassandra/format.h +17 -18
- package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.cc +3 -4
- package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.h +19 -19
- package/deps/rocksdb/rocksdb/utilities/cassandra/serialize.h +19 -18
- package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.cc +7 -10
- package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.h +3 -4
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +10 -15
- package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +2 -1
- package/deps/rocksdb/rocksdb/utilities/convenience/info_log_finder.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/env_mirror_test.cc +5 -3
- package/deps/rocksdb/rocksdb/utilities/env_timed_test.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +4 -5
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +5 -7
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +9 -13
- package/deps/rocksdb/rocksdb/utilities/leveldb_options/leveldb_options.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.cc +7 -9
- package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.h +4 -5
- package/deps/rocksdb/rocksdb/utilities/merge_operators/put.cc +4 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.h +2 -4
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +39 -50
- package/deps/rocksdb/rocksdb/utilities/merge_operators/uint64add.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/merge_operators.h +4 -3
- package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +5 -7
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +5 -4
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +3 -6
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file_buffer.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_test.cc +3 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_bench.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +18 -13
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.h +1 -3
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector_test.cc +15 -14
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +14 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +4 -7
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +3 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +3 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +5 -5
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +3 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +5 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +3 -4
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +2 -6
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +80 -79
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +9 -17
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
|
@@ -6,46 +6,39 @@
|
|
|
6
6
|
#include "test_util/testharness.h"
|
|
7
7
|
#include "utilities/cassandra/serialize.h"
|
|
8
8
|
|
|
9
|
-
|
|
10
9
|
namespace ROCKSDB_NAMESPACE {
|
|
11
10
|
namespace cassandra {
|
|
12
11
|
|
|
13
12
|
TEST(SerializeTest, SerializeI64) {
|
|
14
13
|
std::string dest;
|
|
15
14
|
Serialize<int64_t>(0, &dest);
|
|
16
|
-
EXPECT_EQ(
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
dest);
|
|
15
|
+
EXPECT_EQ(std::string({'\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00',
|
|
16
|
+
'\x00'}),
|
|
17
|
+
dest);
|
|
20
18
|
|
|
21
19
|
dest.clear();
|
|
22
20
|
Serialize<int64_t>(1, &dest);
|
|
23
|
-
EXPECT_EQ(
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
dest);
|
|
27
|
-
|
|
21
|
+
EXPECT_EQ(std::string({'\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00',
|
|
22
|
+
'\x01'}),
|
|
23
|
+
dest);
|
|
28
24
|
|
|
29
25
|
dest.clear();
|
|
30
26
|
Serialize<int64_t>(-1, &dest);
|
|
31
|
-
EXPECT_EQ(
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
dest);
|
|
27
|
+
EXPECT_EQ(std::string({'\xff', '\xff', '\xff', '\xff', '\xff', '\xff', '\xff',
|
|
28
|
+
'\xff'}),
|
|
29
|
+
dest);
|
|
35
30
|
|
|
36
31
|
dest.clear();
|
|
37
32
|
Serialize<int64_t>(9223372036854775807, &dest);
|
|
38
|
-
EXPECT_EQ(
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
dest);
|
|
33
|
+
EXPECT_EQ(std::string({'\x7f', '\xff', '\xff', '\xff', '\xff', '\xff', '\xff',
|
|
34
|
+
'\xff'}),
|
|
35
|
+
dest);
|
|
42
36
|
|
|
43
37
|
dest.clear();
|
|
44
38
|
Serialize<int64_t>(-9223372036854775807, &dest);
|
|
45
|
-
EXPECT_EQ(
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
dest);
|
|
39
|
+
EXPECT_EQ(std::string({'\x80', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00',
|
|
40
|
+
'\x01'}),
|
|
41
|
+
dest);
|
|
49
42
|
}
|
|
50
43
|
|
|
51
44
|
TEST(SerializeTest, DeserializeI64) {
|
|
@@ -74,39 +67,23 @@ TEST(SerializeTest, DeserializeI64) {
|
|
|
74
67
|
TEST(SerializeTest, SerializeI32) {
|
|
75
68
|
std::string dest;
|
|
76
69
|
Serialize<int32_t>(0, &dest);
|
|
77
|
-
EXPECT_EQ(
|
|
78
|
-
std::string(
|
|
79
|
-
{'\x00', '\x00', '\x00', '\x00'}),
|
|
80
|
-
dest);
|
|
70
|
+
EXPECT_EQ(std::string({'\x00', '\x00', '\x00', '\x00'}), dest);
|
|
81
71
|
|
|
82
72
|
dest.clear();
|
|
83
73
|
Serialize<int32_t>(1, &dest);
|
|
84
|
-
EXPECT_EQ(
|
|
85
|
-
std::string(
|
|
86
|
-
{'\x00', '\x00', '\x00', '\x01'}),
|
|
87
|
-
dest);
|
|
88
|
-
|
|
74
|
+
EXPECT_EQ(std::string({'\x00', '\x00', '\x00', '\x01'}), dest);
|
|
89
75
|
|
|
90
76
|
dest.clear();
|
|
91
77
|
Serialize<int32_t>(-1, &dest);
|
|
92
|
-
EXPECT_EQ(
|
|
93
|
-
std::string(
|
|
94
|
-
{'\xff', '\xff', '\xff', '\xff'}),
|
|
95
|
-
dest);
|
|
78
|
+
EXPECT_EQ(std::string({'\xff', '\xff', '\xff', '\xff'}), dest);
|
|
96
79
|
|
|
97
80
|
dest.clear();
|
|
98
81
|
Serialize<int32_t>(2147483647, &dest);
|
|
99
|
-
EXPECT_EQ(
|
|
100
|
-
std::string(
|
|
101
|
-
{'\x7f', '\xff', '\xff', '\xff'}),
|
|
102
|
-
dest);
|
|
82
|
+
EXPECT_EQ(std::string({'\x7f', '\xff', '\xff', '\xff'}), dest);
|
|
103
83
|
|
|
104
84
|
dest.clear();
|
|
105
85
|
Serialize<int32_t>(-2147483648LL, &dest);
|
|
106
|
-
EXPECT_EQ(
|
|
107
|
-
std::string(
|
|
108
|
-
{'\x80', '\x00', '\x00', '\x00'}),
|
|
109
|
-
dest);
|
|
86
|
+
EXPECT_EQ(std::string({'\x80', '\x00', '\x00', '\x00'}), dest);
|
|
110
87
|
}
|
|
111
88
|
|
|
112
89
|
TEST(SerializeTest, DeserializeI32) {
|
|
@@ -141,7 +118,6 @@ TEST(SerializeTest, SerializeI8) {
|
|
|
141
118
|
Serialize<int8_t>(1, &dest);
|
|
142
119
|
EXPECT_EQ(std::string({'\x01'}), dest);
|
|
143
120
|
|
|
144
|
-
|
|
145
121
|
dest.clear();
|
|
146
122
|
Serialize<int8_t>(-1, &dest);
|
|
147
123
|
EXPECT_EQ(std::string({'\xff'}), dest);
|
|
@@ -178,7 +154,7 @@ TEST(SerializeTest, DeserializeI8) {
|
|
|
178
154
|
EXPECT_EQ(-128, Deserialize<int8_t>(dest.c_str(), offset));
|
|
179
155
|
}
|
|
180
156
|
|
|
181
|
-
}
|
|
157
|
+
} // namespace cassandra
|
|
182
158
|
} // namespace ROCKSDB_NAMESPACE
|
|
183
159
|
|
|
184
160
|
int main(int argc, char** argv) {
|
|
@@ -14,26 +14,18 @@
|
|
|
14
14
|
namespace ROCKSDB_NAMESPACE {
|
|
15
15
|
namespace cassandra {
|
|
16
16
|
namespace {
|
|
17
|
-
const int32_t kDefaultLocalDeletionTime =
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
std::numeric_limits<int64_t>::min();
|
|
21
|
-
}
|
|
17
|
+
const int32_t kDefaultLocalDeletionTime = std::numeric_limits<int32_t>::max();
|
|
18
|
+
const int64_t kDefaultMarkedForDeleteAt = std::numeric_limits<int64_t>::min();
|
|
19
|
+
} // namespace
|
|
22
20
|
|
|
23
21
|
ColumnBase::ColumnBase(int8_t mask, int8_t index)
|
|
24
|
-
|
|
22
|
+
: mask_(mask), index_(index) {}
|
|
25
23
|
|
|
26
|
-
std::size_t ColumnBase::Size() const {
|
|
27
|
-
return sizeof(mask_) + sizeof(index_);
|
|
28
|
-
}
|
|
24
|
+
std::size_t ColumnBase::Size() const { return sizeof(mask_) + sizeof(index_); }
|
|
29
25
|
|
|
30
|
-
int8_t ColumnBase::Mask() const {
|
|
31
|
-
return mask_;
|
|
32
|
-
}
|
|
26
|
+
int8_t ColumnBase::Mask() const { return mask_; }
|
|
33
27
|
|
|
34
|
-
int8_t ColumnBase::Index() const {
|
|
35
|
-
return index_;
|
|
36
|
-
}
|
|
28
|
+
int8_t ColumnBase::Index() const { return index_; }
|
|
37
29
|
|
|
38
30
|
void ColumnBase::Serialize(std::string* dest) const {
|
|
39
31
|
ROCKSDB_NAMESPACE::cassandra::Serialize<int8_t>(mask_, dest);
|
|
@@ -52,22 +44,18 @@ std::shared_ptr<ColumnBase> ColumnBase::Deserialize(const char* src,
|
|
|
52
44
|
}
|
|
53
45
|
}
|
|
54
46
|
|
|
55
|
-
Column::Column(
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
int64_t Column::Timestamp() const {
|
|
65
|
-
return timestamp_;
|
|
66
|
-
}
|
|
47
|
+
Column::Column(int8_t mask, int8_t index, int64_t timestamp, int32_t value_size,
|
|
48
|
+
const char* value)
|
|
49
|
+
: ColumnBase(mask, index),
|
|
50
|
+
timestamp_(timestamp),
|
|
51
|
+
value_size_(value_size),
|
|
52
|
+
value_(value) {}
|
|
53
|
+
|
|
54
|
+
int64_t Column::Timestamp() const { return timestamp_; }
|
|
67
55
|
|
|
68
56
|
std::size_t Column::Size() const {
|
|
69
|
-
return ColumnBase::Size() + sizeof(timestamp_) + sizeof(value_size_)
|
|
70
|
-
|
|
57
|
+
return ColumnBase::Size() + sizeof(timestamp_) + sizeof(value_size_) +
|
|
58
|
+
value_size_;
|
|
71
59
|
}
|
|
72
60
|
|
|
73
61
|
void Column::Serialize(std::string* dest) const {
|
|
@@ -77,7 +65,7 @@ void Column::Serialize(std::string* dest) const {
|
|
|
77
65
|
dest->append(value_, value_size_);
|
|
78
66
|
}
|
|
79
67
|
|
|
80
|
-
std::shared_ptr<Column> Column::Deserialize(const char
|
|
68
|
+
std::shared_ptr<Column> Column::Deserialize(const char* src,
|
|
81
69
|
std::size_t offset) {
|
|
82
70
|
int8_t mask = ROCKSDB_NAMESPACE::cassandra::Deserialize<int8_t>(src, offset);
|
|
83
71
|
offset += sizeof(mask);
|
|
@@ -89,19 +77,14 @@ std::shared_ptr<Column> Column::Deserialize(const char *src,
|
|
|
89
77
|
int32_t value_size =
|
|
90
78
|
ROCKSDB_NAMESPACE::cassandra::Deserialize<int32_t>(src, offset);
|
|
91
79
|
offset += sizeof(value_size);
|
|
92
|
-
return std::make_shared<Column>(
|
|
93
|
-
|
|
80
|
+
return std::make_shared<Column>(mask, index, timestamp, value_size,
|
|
81
|
+
src + offset);
|
|
94
82
|
}
|
|
95
83
|
|
|
96
|
-
ExpiringColumn::ExpiringColumn(
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
int32_t value_size,
|
|
101
|
-
const char* value,
|
|
102
|
-
int32_t ttl
|
|
103
|
-
) : Column(mask, index, timestamp, value_size, value),
|
|
104
|
-
ttl_(ttl) {}
|
|
84
|
+
ExpiringColumn::ExpiringColumn(int8_t mask, int8_t index, int64_t timestamp,
|
|
85
|
+
int32_t value_size, const char* value,
|
|
86
|
+
int32_t ttl)
|
|
87
|
+
: Column(mask, index, timestamp, value_size, value), ttl_(ttl) {}
|
|
105
88
|
|
|
106
89
|
std::size_t ExpiringColumn::Size() const {
|
|
107
90
|
return Column::Size() + sizeof(ttl_);
|
|
@@ -112,8 +95,10 @@ void ExpiringColumn::Serialize(std::string* dest) const {
|
|
|
112
95
|
ROCKSDB_NAMESPACE::cassandra::Serialize<int32_t>(ttl_, dest);
|
|
113
96
|
}
|
|
114
97
|
|
|
115
|
-
std::chrono::time_point<std::chrono::system_clock> ExpiringColumn::TimePoint()
|
|
116
|
-
|
|
98
|
+
std::chrono::time_point<std::chrono::system_clock> ExpiringColumn::TimePoint()
|
|
99
|
+
const {
|
|
100
|
+
return std::chrono::time_point<std::chrono::system_clock>(
|
|
101
|
+
std::chrono::microseconds(Timestamp()));
|
|
117
102
|
}
|
|
118
103
|
|
|
119
104
|
std::chrono::seconds ExpiringColumn::Ttl() const {
|
|
@@ -127,19 +112,16 @@ bool ExpiringColumn::Expired() const {
|
|
|
127
112
|
std::shared_ptr<Tombstone> ExpiringColumn::ToTombstone() const {
|
|
128
113
|
auto expired_at = (TimePoint() + Ttl()).time_since_epoch();
|
|
129
114
|
int32_t local_deletion_time = static_cast<int32_t>(
|
|
130
|
-
|
|
115
|
+
std::chrono::duration_cast<std::chrono::seconds>(expired_at).count());
|
|
131
116
|
int64_t marked_for_delete_at =
|
|
132
|
-
|
|
117
|
+
std::chrono::duration_cast<std::chrono::microseconds>(expired_at).count();
|
|
133
118
|
return std::make_shared<Tombstone>(
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
local_deletion_time,
|
|
137
|
-
marked_for_delete_at);
|
|
119
|
+
static_cast<int8_t>(ColumnTypeMask::DELETION_MASK), Index(),
|
|
120
|
+
local_deletion_time, marked_for_delete_at);
|
|
138
121
|
}
|
|
139
122
|
|
|
140
123
|
std::shared_ptr<ExpiringColumn> ExpiringColumn::Deserialize(
|
|
141
|
-
const char
|
|
142
|
-
std::size_t offset) {
|
|
124
|
+
const char* src, std::size_t offset) {
|
|
143
125
|
int8_t mask = ROCKSDB_NAMESPACE::cassandra::Deserialize<int8_t>(src, offset);
|
|
144
126
|
offset += sizeof(mask);
|
|
145
127
|
int8_t index = ROCKSDB_NAMESPACE::cassandra::Deserialize<int8_t>(src, offset);
|
|
@@ -153,25 +135,21 @@ std::shared_ptr<ExpiringColumn> ExpiringColumn::Deserialize(
|
|
|
153
135
|
const char* value = src + offset;
|
|
154
136
|
offset += value_size;
|
|
155
137
|
int32_t ttl = ROCKSDB_NAMESPACE::cassandra::Deserialize<int32_t>(src, offset);
|
|
156
|
-
return std::make_shared<ExpiringColumn>(
|
|
157
|
-
|
|
138
|
+
return std::make_shared<ExpiringColumn>(mask, index, timestamp, value_size,
|
|
139
|
+
value, ttl);
|
|
158
140
|
}
|
|
159
141
|
|
|
160
|
-
Tombstone::Tombstone(
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
) : ColumnBase(mask, index), local_deletion_time_(local_deletion_time),
|
|
166
|
-
marked_for_delete_at_(marked_for_delete_at) {}
|
|
142
|
+
Tombstone::Tombstone(int8_t mask, int8_t index, int32_t local_deletion_time,
|
|
143
|
+
int64_t marked_for_delete_at)
|
|
144
|
+
: ColumnBase(mask, index),
|
|
145
|
+
local_deletion_time_(local_deletion_time),
|
|
146
|
+
marked_for_delete_at_(marked_for_delete_at) {}
|
|
167
147
|
|
|
168
|
-
int64_t Tombstone::Timestamp() const {
|
|
169
|
-
return marked_for_delete_at_;
|
|
170
|
-
}
|
|
148
|
+
int64_t Tombstone::Timestamp() const { return marked_for_delete_at_; }
|
|
171
149
|
|
|
172
150
|
std::size_t Tombstone::Size() const {
|
|
173
|
-
return ColumnBase::Size() + sizeof(local_deletion_time_)
|
|
174
|
-
|
|
151
|
+
return ColumnBase::Size() + sizeof(local_deletion_time_) +
|
|
152
|
+
sizeof(marked_for_delete_at_);
|
|
175
153
|
}
|
|
176
154
|
|
|
177
155
|
void Tombstone::Serialize(std::string* dest) const {
|
|
@@ -187,7 +165,7 @@ bool Tombstone::Collectable(int32_t gc_grace_period_in_seconds) const {
|
|
|
187
165
|
return local_deleted_at + gc_grace_period < std::chrono::system_clock::now();
|
|
188
166
|
}
|
|
189
167
|
|
|
190
|
-
std::shared_ptr<Tombstone> Tombstone::Deserialize(const char
|
|
168
|
+
std::shared_ptr<Tombstone> Tombstone::Deserialize(const char* src,
|
|
191
169
|
std::size_t offset) {
|
|
192
170
|
int8_t mask = ROCKSDB_NAMESPACE::cassandra::Deserialize<int8_t>(src, offset);
|
|
193
171
|
offset += sizeof(mask);
|
|
@@ -198,26 +176,27 @@ std::shared_ptr<Tombstone> Tombstone::Deserialize(const char *src,
|
|
|
198
176
|
offset += sizeof(int32_t);
|
|
199
177
|
int64_t marked_for_delete_at =
|
|
200
178
|
ROCKSDB_NAMESPACE::cassandra::Deserialize<int64_t>(src, offset);
|
|
201
|
-
return std::make_shared<Tombstone>(
|
|
202
|
-
|
|
179
|
+
return std::make_shared<Tombstone>(mask, index, local_deletion_time,
|
|
180
|
+
marked_for_delete_at);
|
|
203
181
|
}
|
|
204
182
|
|
|
205
183
|
RowValue::RowValue(int32_t local_deletion_time, int64_t marked_for_delete_at)
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
184
|
+
: local_deletion_time_(local_deletion_time),
|
|
185
|
+
marked_for_delete_at_(marked_for_delete_at),
|
|
186
|
+
columns_(),
|
|
187
|
+
last_modified_time_(0) {}
|
|
209
188
|
|
|
210
|
-
RowValue::RowValue(Columns columns,
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
189
|
+
RowValue::RowValue(Columns columns, int64_t last_modified_time)
|
|
190
|
+
: local_deletion_time_(kDefaultLocalDeletionTime),
|
|
191
|
+
marked_for_delete_at_(kDefaultMarkedForDeleteAt),
|
|
192
|
+
columns_(std::move(columns)),
|
|
193
|
+
last_modified_time_(last_modified_time) {}
|
|
215
194
|
|
|
216
195
|
std::size_t RowValue::Size() const {
|
|
217
|
-
std::size_t size =
|
|
218
|
-
|
|
196
|
+
std::size_t size =
|
|
197
|
+
sizeof(local_deletion_time_) + sizeof(marked_for_delete_at_);
|
|
219
198
|
for (const auto& column : columns_) {
|
|
220
|
-
size += column
|
|
199
|
+
size += column->Size();
|
|
221
200
|
}
|
|
222
201
|
return size;
|
|
223
202
|
}
|
|
@@ -238,7 +217,7 @@ void RowValue::Serialize(std::string* dest) const {
|
|
|
238
217
|
ROCKSDB_NAMESPACE::cassandra::Serialize<int32_t>(local_deletion_time_, dest);
|
|
239
218
|
ROCKSDB_NAMESPACE::cassandra::Serialize<int64_t>(marked_for_delete_at_, dest);
|
|
240
219
|
for (const auto& column : columns_) {
|
|
241
|
-
column
|
|
220
|
+
column->Serialize(dest);
|
|
242
221
|
}
|
|
243
222
|
}
|
|
244
223
|
|
|
@@ -246,11 +225,11 @@ RowValue RowValue::RemoveExpiredColumns(bool* changed) const {
|
|
|
246
225
|
*changed = false;
|
|
247
226
|
Columns new_columns;
|
|
248
227
|
for (auto& column : columns_) {
|
|
249
|
-
if(column->Mask() == ColumnTypeMask::EXPIRATION_MASK) {
|
|
228
|
+
if (column->Mask() == ColumnTypeMask::EXPIRATION_MASK) {
|
|
250
229
|
std::shared_ptr<ExpiringColumn> expiring_column =
|
|
251
|
-
|
|
230
|
+
std::static_pointer_cast<ExpiringColumn>(column);
|
|
252
231
|
|
|
253
|
-
if(expiring_column->Expired()){
|
|
232
|
+
if (expiring_column->Expired()) {
|
|
254
233
|
*changed = true;
|
|
255
234
|
continue;
|
|
256
235
|
}
|
|
@@ -265,11 +244,11 @@ RowValue RowValue::ConvertExpiredColumnsToTombstones(bool* changed) const {
|
|
|
265
244
|
*changed = false;
|
|
266
245
|
Columns new_columns;
|
|
267
246
|
for (auto& column : columns_) {
|
|
268
|
-
if(column->Mask() == ColumnTypeMask::EXPIRATION_MASK) {
|
|
247
|
+
if (column->Mask() == ColumnTypeMask::EXPIRATION_MASK) {
|
|
269
248
|
std::shared_ptr<ExpiringColumn> expiring_column =
|
|
270
|
-
|
|
249
|
+
std::static_pointer_cast<ExpiringColumn>(column);
|
|
271
250
|
|
|
272
|
-
if(expiring_column->Expired()) {
|
|
251
|
+
if (expiring_column->Expired()) {
|
|
273
252
|
std::shared_ptr<Tombstone> tombstone = expiring_column->ToTombstone();
|
|
274
253
|
new_columns.push_back(tombstone);
|
|
275
254
|
*changed = true;
|
|
@@ -298,11 +277,9 @@ RowValue RowValue::RemoveTombstones(int32_t gc_grace_period) const {
|
|
|
298
277
|
return RowValue(std::move(new_columns), last_modified_time_);
|
|
299
278
|
}
|
|
300
279
|
|
|
301
|
-
bool RowValue::Empty() const {
|
|
302
|
-
return columns_.empty();
|
|
303
|
-
}
|
|
280
|
+
bool RowValue::Empty() const { return columns_.empty(); }
|
|
304
281
|
|
|
305
|
-
RowValue RowValue::Deserialize(const char
|
|
282
|
+
RowValue RowValue::Deserialize(const char* src, std::size_t size) {
|
|
306
283
|
std::size_t offset = 0;
|
|
307
284
|
assert(size >= sizeof(local_deletion_time_) + sizeof(marked_for_delete_at_));
|
|
308
285
|
int32_t local_deletion_time =
|
|
@@ -321,9 +298,9 @@ RowValue RowValue::Deserialize(const char *src, std::size_t size) {
|
|
|
321
298
|
int64_t last_modified_time = 0;
|
|
322
299
|
while (offset < size) {
|
|
323
300
|
auto c = ColumnBase::Deserialize(src, offset);
|
|
324
|
-
offset += c
|
|
301
|
+
offset += c->Size();
|
|
325
302
|
assert(offset <= size);
|
|
326
|
-
last_modified_time = std::max(last_modified_time, c
|
|
303
|
+
last_modified_time = std::max(last_modified_time, c->Timestamp());
|
|
327
304
|
columns.push_back(std::move(c));
|
|
328
305
|
}
|
|
329
306
|
|
|
@@ -344,9 +321,9 @@ RowValue RowValue::Merge(std::vector<RowValue>&& values) {
|
|
|
344
321
|
// Merge columns by their last modified time, and skip once we hit
|
|
345
322
|
// a row tombstone.
|
|
346
323
|
std::sort(values.begin(), values.end(),
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
324
|
+
[](const RowValue& r1, const RowValue& r2) {
|
|
325
|
+
return r1.LastModifiedTime() > r2.LastModifiedTime();
|
|
326
|
+
});
|
|
350
327
|
|
|
351
328
|
std::map<int8_t, std::shared_ptr<ColumnBase>> merged_columns;
|
|
352
329
|
int64_t tombstone_timestamp = 0;
|
|
@@ -373,7 +350,7 @@ RowValue RowValue::Merge(std::vector<RowValue>&& values) {
|
|
|
373
350
|
|
|
374
351
|
int64_t last_modified_time = 0;
|
|
375
352
|
Columns columns;
|
|
376
|
-
for (auto& pair: merged_columns) {
|
|
353
|
+
for (auto& pair : merged_columns) {
|
|
377
354
|
// For some row, its last_modified_time > row tombstone_timestamp, but
|
|
378
355
|
// it might have rows whose timestamp is ealier than tombstone, so we
|
|
379
356
|
// ned to filter these rows.
|
|
@@ -386,5 +363,5 @@ RowValue RowValue::Merge(std::vector<RowValue>&& values) {
|
|
|
386
363
|
return RowValue(std::move(columns), last_modified_time);
|
|
387
364
|
}
|
|
388
365
|
|
|
389
|
-
}
|
|
366
|
+
} // namespace cassandra
|
|
390
367
|
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -58,6 +58,7 @@
|
|
|
58
58
|
#include <chrono>
|
|
59
59
|
#include <memory>
|
|
60
60
|
#include <vector>
|
|
61
|
+
|
|
61
62
|
#include "rocksdb/merge_operator.h"
|
|
62
63
|
#include "rocksdb/slice.h"
|
|
63
64
|
|
|
@@ -70,9 +71,8 @@ enum ColumnTypeMask {
|
|
|
70
71
|
EXPIRATION_MASK = 0x02,
|
|
71
72
|
};
|
|
72
73
|
|
|
73
|
-
|
|
74
74
|
class ColumnBase {
|
|
75
|
-
public:
|
|
75
|
+
public:
|
|
76
76
|
ColumnBase(int8_t mask, int8_t index);
|
|
77
77
|
virtual ~ColumnBase() = default;
|
|
78
78
|
|
|
@@ -84,15 +84,15 @@ public:
|
|
|
84
84
|
static std::shared_ptr<ColumnBase> Deserialize(const char* src,
|
|
85
85
|
std::size_t offset);
|
|
86
86
|
|
|
87
|
-
private:
|
|
87
|
+
private:
|
|
88
88
|
int8_t mask_;
|
|
89
89
|
int8_t index_;
|
|
90
90
|
};
|
|
91
91
|
|
|
92
92
|
class Column : public ColumnBase {
|
|
93
|
-
public:
|
|
94
|
-
Column(int8_t mask, int8_t index, int64_t timestamp,
|
|
95
|
-
|
|
93
|
+
public:
|
|
94
|
+
Column(int8_t mask, int8_t index, int64_t timestamp, int32_t value_size,
|
|
95
|
+
const char* value);
|
|
96
96
|
|
|
97
97
|
virtual int64_t Timestamp() const override;
|
|
98
98
|
virtual std::size_t Size() const override;
|
|
@@ -100,16 +100,16 @@ public:
|
|
|
100
100
|
static std::shared_ptr<Column> Deserialize(const char* src,
|
|
101
101
|
std::size_t offset);
|
|
102
102
|
|
|
103
|
-
private:
|
|
103
|
+
private:
|
|
104
104
|
int64_t timestamp_;
|
|
105
105
|
int32_t value_size_;
|
|
106
106
|
const char* value_;
|
|
107
107
|
};
|
|
108
108
|
|
|
109
109
|
class Tombstone : public ColumnBase {
|
|
110
|
-
public:
|
|
111
|
-
Tombstone(int8_t mask, int8_t index,
|
|
112
|
-
|
|
110
|
+
public:
|
|
111
|
+
Tombstone(int8_t mask, int8_t index, int32_t local_deletion_time,
|
|
112
|
+
int64_t marked_for_delete_at);
|
|
113
113
|
|
|
114
114
|
virtual int64_t Timestamp() const override;
|
|
115
115
|
virtual std::size_t Size() const override;
|
|
@@ -118,15 +118,15 @@ public:
|
|
|
118
118
|
static std::shared_ptr<Tombstone> Deserialize(const char* src,
|
|
119
119
|
std::size_t offset);
|
|
120
120
|
|
|
121
|
-
private:
|
|
121
|
+
private:
|
|
122
122
|
int32_t local_deletion_time_;
|
|
123
123
|
int64_t marked_for_delete_at_;
|
|
124
124
|
};
|
|
125
125
|
|
|
126
126
|
class ExpiringColumn : public Column {
|
|
127
|
-
public:
|
|
127
|
+
public:
|
|
128
128
|
ExpiringColumn(int8_t mask, int8_t index, int64_t timestamp,
|
|
129
|
-
|
|
129
|
+
int32_t value_size, const char* value, int32_t ttl);
|
|
130
130
|
|
|
131
131
|
virtual std::size_t Size() const override;
|
|
132
132
|
virtual void Serialize(std::string* dest) const override;
|
|
@@ -136,7 +136,7 @@ public:
|
|
|
136
136
|
static std::shared_ptr<ExpiringColumn> Deserialize(const char* src,
|
|
137
137
|
std::size_t offset);
|
|
138
138
|
|
|
139
|
-
private:
|
|
139
|
+
private:
|
|
140
140
|
int32_t ttl_;
|
|
141
141
|
std::chrono::time_point<std::chrono::system_clock> TimePoint() const;
|
|
142
142
|
std::chrono::seconds Ttl() const;
|
|
@@ -145,12 +145,11 @@ private:
|
|
|
145
145
|
using Columns = std::vector<std::shared_ptr<ColumnBase>>;
|
|
146
146
|
|
|
147
147
|
class RowValue {
|
|
148
|
-
public:
|
|
148
|
+
public:
|
|
149
149
|
// Create a Row Tombstone.
|
|
150
150
|
RowValue(int32_t local_deletion_time, int64_t marked_for_delete_at);
|
|
151
151
|
// Create a Row containing columns.
|
|
152
|
-
RowValue(Columns columns,
|
|
153
|
-
int64_t last_modified_time);
|
|
152
|
+
RowValue(Columns columns, int64_t last_modified_time);
|
|
154
153
|
RowValue(const RowValue& /*that*/) = delete;
|
|
155
154
|
RowValue(RowValue&& /*that*/) noexcept = default;
|
|
156
155
|
RowValue& operator=(const RowValue& /*that*/) = delete;
|
|
@@ -180,5 +179,5 @@ public:
|
|
|
180
179
|
int64_t last_modified_time_;
|
|
181
180
|
};
|
|
182
181
|
|
|
183
|
-
}
|
|
182
|
+
} // namespace cassandra
|
|
184
183
|
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -44,9 +44,8 @@ bool CassandraValueMergeOperator::FullMergeV2(
|
|
|
44
44
|
merge_out->new_value.clear();
|
|
45
45
|
std::vector<RowValue> row_values;
|
|
46
46
|
if (merge_in.existing_value) {
|
|
47
|
-
row_values.push_back(
|
|
48
|
-
|
|
49
|
-
merge_in.existing_value->size()));
|
|
47
|
+
row_values.push_back(RowValue::Deserialize(
|
|
48
|
+
merge_in.existing_value->data(), merge_in.existing_value->size()));
|
|
50
49
|
}
|
|
51
50
|
|
|
52
51
|
for (auto& operand : merge_in.operand_list) {
|
|
@@ -78,6 +77,6 @@ bool CassandraValueMergeOperator::PartialMergeMulti(
|
|
|
78
77
|
return true;
|
|
79
78
|
}
|
|
80
79
|
|
|
81
|
-
}
|
|
80
|
+
} // namespace cassandra
|
|
82
81
|
|
|
83
82
|
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -15,30 +15,30 @@ namespace cassandra {
|
|
|
15
15
|
* A MergeOperator for rocksdb that implements Cassandra row value merge.
|
|
16
16
|
*/
|
|
17
17
|
class CassandraValueMergeOperator : public MergeOperator {
|
|
18
|
-
public:
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
public:
|
|
19
|
+
explicit CassandraValueMergeOperator(int32_t gc_grace_period_in_seconds,
|
|
20
|
+
size_t operands_limit = 0);
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
virtual bool FullMergeV2(const MergeOperationInput& merge_in,
|
|
23
|
+
MergeOperationOutput* merge_out) const override;
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
virtual bool PartialMergeMulti(const Slice& key,
|
|
26
|
+
const std::deque<Slice>& operand_list,
|
|
27
|
+
std::string* new_value,
|
|
28
|
+
Logger* logger) const override;
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
const char* Name() const override { return kClassName(); }
|
|
31
|
+
static const char* kClassName() { return "CassandraValueMergeOperator"; }
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
virtual bool AllowSingleOperand() const override { return true; }
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
virtual bool ShouldMerge(const std::vector<Slice>& operands) const override {
|
|
36
|
+
return options_.operands_limit > 0 &&
|
|
37
|
+
operands.size() >= options_.operands_limit;
|
|
38
|
+
}
|
|
39
39
|
|
|
40
|
-
private:
|
|
41
|
-
|
|
40
|
+
private:
|
|
41
|
+
CassandraOptions options_;
|
|
42
42
|
};
|
|
43
|
-
}
|
|
43
|
+
} // namespace cassandra
|
|
44
44
|
} // namespace ROCKSDB_NAMESPACE
|