@nxtedition/rocksdb 13.5.7 → 13.5.9
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/binding.cc +248 -70
- package/binding.gyp +2 -2
- package/deps/rocksdb/rocksdb/BUCK +12 -0
- package/deps/rocksdb/rocksdb/CMakeLists.txt +7 -0
- package/deps/rocksdb/rocksdb/Makefile +28 -23
- package/deps/rocksdb/rocksdb/cache/cache.cc +0 -1
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +1 -2
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +43 -39
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +2 -0
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +0 -1
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +2 -3
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +2 -2
- package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +1 -3
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +11 -1
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache_test.cc +13 -5
- package/deps/rocksdb/rocksdb/crash_test.mk +61 -15
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +136 -45
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +34 -16
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +10 -7
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +1 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.h +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +12 -9
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +2 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/builder.cc +22 -8
- package/deps/rocksdb/rocksdb/db/builder.h +5 -4
- package/deps/rocksdb/rocksdb/db/c.cc +556 -15
- package/deps/rocksdb/rocksdb/db/c_test.c +133 -12
- package/deps/rocksdb/rocksdb/db/column_family.cc +114 -50
- package/deps/rocksdb/rocksdb/db/column_family.h +53 -36
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +95 -70
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +71 -51
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +7 -86
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +26 -68
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +0 -122
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +453 -258
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +117 -92
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +38 -38
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +24 -17
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +34 -45
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +32 -31
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +12 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +2 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +10 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +2 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +82 -34
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +267 -179
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +4 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +273 -89
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +300 -14
- package/deps/rocksdb/rocksdb/db/compaction/compaction_state.cc +4 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_state.h +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +28 -23
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +69 -51
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +522 -245
- package/deps/rocksdb/rocksdb/db/convenience.cc +15 -4
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +1 -3
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +0 -2
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +196 -17
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +74 -62
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +48 -0
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +682 -250
- package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/db_encryption_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +11 -16
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +57 -0
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +540 -490
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +347 -188
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +584 -217
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +13 -9
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +5 -7
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +40 -36
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +1 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +751 -372
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +35 -32
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +24 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +125 -63
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +2 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +311 -196
- package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +15 -5
- package/deps/rocksdb/rocksdb/db/db_iter.cc +42 -29
- package/deps/rocksdb/rocksdb/db/db_iter.h +96 -31
- package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/db_iter_test.cc +168 -228
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +454 -0
- package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +8 -8
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +90 -0
- package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +60 -2
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +7 -3
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +85 -27
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +3 -1
- package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +0 -2
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +114 -2
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +51 -3
- package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/db_test.cc +325 -18
- package/deps/rocksdb/rocksdb/db/db_test2.cc +644 -20
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +14 -6
- package/deps/rocksdb/rocksdb/db/db_test_util.h +9 -0
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +64 -45
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +203 -14
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +259 -30
- package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +75 -1
- package/deps/rocksdb/rocksdb/db/dbformat.h +70 -6
- package/deps/rocksdb/rocksdb/db/deletefile_test.cc +0 -190
- package/deps/rocksdb/rocksdb/db/error_handler.cc +22 -7
- package/deps/rocksdb/rocksdb/db/error_handler.h +16 -1
- package/deps/rocksdb/rocksdb/db/event_helpers.cc +41 -26
- package/deps/rocksdb/rocksdb/db/experimental.cc +4 -3
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +464 -78
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +166 -69
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +54 -25
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +1 -3
- package/deps/rocksdb/rocksdb/db/flush_job.cc +98 -81
- package/deps/rocksdb/rocksdb/db/flush_job.h +4 -9
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +80 -84
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +1 -1
- package/deps/rocksdb/rocksdb/db/forward_iterator.h +2 -2
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +12 -19
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +0 -2
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +41 -15
- package/deps/rocksdb/rocksdb/db/internal_stats.h +63 -52
- package/deps/rocksdb/rocksdb/db/job_context.h +59 -24
- package/deps/rocksdb/rocksdb/db/listener_test.cc +69 -10
- package/deps/rocksdb/rocksdb/db/log_format.h +11 -2
- package/deps/rocksdb/rocksdb/db/log_reader.cc +147 -34
- package/deps/rocksdb/rocksdb/db/log_reader.h +40 -11
- package/deps/rocksdb/rocksdb/db/log_test.cc +16 -3
- package/deps/rocksdb/rocksdb/db/log_writer.cc +102 -55
- package/deps/rocksdb/rocksdb/db/log_writer.h +21 -2
- package/deps/rocksdb/rocksdb/db/malloc_stats.h +0 -2
- package/deps/rocksdb/rocksdb/db/memtable.cc +16 -47
- package/deps/rocksdb/rocksdb/db/memtable.h +76 -12
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +23 -20
- package/deps/rocksdb/rocksdb/db/memtable_list.h +9 -11
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +18 -37
- package/deps/rocksdb/rocksdb/db/merge_context.h +2 -1
- package/deps/rocksdb/rocksdb/db/merge_test.cc +8 -0
- package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +3 -5
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +15 -7
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.h +6 -3
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +22 -4
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +41 -1
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/repair.cc +29 -34
- package/deps/rocksdb/rocksdb/db/repair_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +14 -15
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +1 -3
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +47 -1
- package/deps/rocksdb/rocksdb/db/table_cache.cc +3 -3
- package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +1 -3
- package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +2 -1
- package/deps/rocksdb/rocksdb/db/version_builder.cc +2 -2
- package/deps/rocksdb/rocksdb/db/version_edit.cc +8 -37
- package/deps/rocksdb/rocksdb/db/version_edit.h +32 -1
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +26 -18
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +7 -5
- package/deps/rocksdb/rocksdb/db/version_set.cc +282 -197
- package/deps/rocksdb/rocksdb/db/version_set.h +54 -57
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +28 -35
- package/deps/rocksdb/rocksdb/db/version_util.h +2 -3
- package/deps/rocksdb/rocksdb/db/wal_manager.cc +3 -2
- package/deps/rocksdb/rocksdb/db/wal_manager.h +0 -1
- package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/wide/wide_columns.cc +1 -0
- package/deps/rocksdb/rocksdb/db/write_batch.cc +22 -8
- package/deps/rocksdb/rocksdb/db/write_batch_internal.h +5 -4
- package/deps/rocksdb/rocksdb/db/write_batch_test.cc +7 -6
- package/deps/rocksdb/rocksdb/db/write_callback_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/write_thread.h +3 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +13 -5
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +9 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_service.h +39 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compression_manager.h +65 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +45 -22
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +7 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +22 -5
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +28 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +143 -38
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +4 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +80 -32
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.h +51 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +23 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +305 -15
- package/deps/rocksdb/rocksdb/env/env.cc +32 -2
- package/deps/rocksdb/rocksdb/env/env_encryption.cc +0 -2
- package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +2 -4
- package/deps/rocksdb/rocksdb/env/env_posix.cc +4 -2
- package/deps/rocksdb/rocksdb/env/env_test.cc +0 -1
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +20 -11
- package/deps/rocksdb/rocksdb/env/fs_readonly.h +0 -2
- package/deps/rocksdb/rocksdb/env/fs_remap.cc +0 -2
- package/deps/rocksdb/rocksdb/env/fs_remap.h +0 -2
- package/deps/rocksdb/rocksdb/env/io_posix.cc +6 -4
- package/deps/rocksdb/rocksdb/env/io_posix.h +3 -2
- package/deps/rocksdb/rocksdb/env/mock_env.cc +0 -1
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +2 -2
- package/deps/rocksdb/rocksdb/file/delete_scheduler.h +0 -2
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +0 -2
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +30 -21
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +16 -0
- package/deps/rocksdb/rocksdb/file/file_util.cc +32 -14
- package/deps/rocksdb/rocksdb/file/file_util.h +22 -5
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +229 -76
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +21 -12
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +10 -7
- package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +12 -8
- package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +1 -2
- package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +0 -2
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +3 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +598 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_iterator.h +36 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +70 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +232 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +3 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/compression_type.h +149 -15
- package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +17 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/data_structure.h +132 -34
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +158 -79
- package/deps/rocksdb/rocksdb/include/rocksdb/db_bench_tool.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +4 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +1 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +5 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/external_table.h +275 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +50 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +10 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +13 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/ldb_tool.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +5 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +13 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/multi_scan.h +237 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +230 -39
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +15 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_level.h +31 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +41 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_dump_tool.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +5 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +18 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +20 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +19 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/tool_hooks.h +124 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/trace_record.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +26 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backup_engine.h +55 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/debug.h +3 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_mirror.h +0 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +1 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/memory_util.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +1 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/secondary_index.h +96 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/secondary_index_faiss.h +117 -0
- package/deps/rocksdb/rocksdb/{utilities/secondary_index/faiss_ivf_index.h → include/rocksdb/utilities/secondary_index_simple.h} +11 -14
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +26 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +16 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +0 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +63 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db_mutex.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +28 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +3 -3
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +0 -2
- package/deps/rocksdb/rocksdb/logging/event_logger_test.cc +1 -2
- package/deps/rocksdb/rocksdb/memory/memory_allocator_impl.h +1 -1
- package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +0 -1
- package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +0 -1
- package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +3 -1
- package/deps/rocksdb/rocksdb/memtable/skiplist.h +2 -2
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +2 -4
- package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +69 -8
- package/deps/rocksdb/rocksdb/memtable/wbwi_memtable.cc +32 -9
- package/deps/rocksdb/rocksdb/memtable/wbwi_memtable.h +58 -45
- package/deps/rocksdb/rocksdb/monitoring/histogram.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +5 -3
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +5 -0
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +1 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +3 -2
- package/deps/rocksdb/rocksdb/options/cf_options.cc +44 -13
- package/deps/rocksdb/rocksdb/options/cf_options.h +21 -7
- package/deps/rocksdb/rocksdb/options/configurable.cc +5 -5
- package/deps/rocksdb/rocksdb/options/configurable_test.h +1 -2
- package/deps/rocksdb/rocksdb/options/customizable.cc +0 -1
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +4 -11
- package/deps/rocksdb/rocksdb/options/db_options.cc +18 -15
- package/deps/rocksdb/rocksdb/options/db_options.h +2 -2
- package/deps/rocksdb/rocksdb/options/options.cc +296 -305
- package/deps/rocksdb/rocksdb/options/options_helper.cc +188 -62
- package/deps/rocksdb/rocksdb/options/options_helper.h +3 -3
- package/deps/rocksdb/rocksdb/options/options_parser.cc +2 -4
- package/deps/rocksdb/rocksdb/options/options_parser.h +0 -1
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +17 -4
- package/deps/rocksdb/rocksdb/options/options_test.cc +101 -76
- package/deps/rocksdb/rocksdb/port/lang.h +2 -1
- package/deps/rocksdb/rocksdb/port/port_posix.cc +2 -1
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +5 -4
- package/deps/rocksdb/rocksdb/port/win/env_win.cc +3 -2
- package/deps/rocksdb/rocksdb/port/win/xpress_win.cc +99 -1
- package/deps/rocksdb/rocksdb/port/win/xpress_win.h +6 -0
- package/deps/rocksdb/rocksdb/src.mk +17 -11
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +1094 -929
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +6 -19
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +76 -22
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +221 -131
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +12 -9
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +23 -24
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +38 -38
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +7 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +5 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +10 -12
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +6 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +35 -43
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +0 -4
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +3 -3
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +3 -3
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +4 -4
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +4 -5
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +4 -4
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +37 -35
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +11 -7
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +4 -3
- package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +31 -5
- package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.h +2 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +0 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +0 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +0 -1
- package/deps/rocksdb/rocksdb/table/external_table.cc +483 -0
- package/deps/rocksdb/rocksdb/table/format.cc +62 -44
- package/deps/rocksdb/rocksdb/table/format.h +35 -12
- package/deps/rocksdb/rocksdb/table/internal_iterator.h +3 -13
- package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +8 -0
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +6 -0
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +150 -141
- package/deps/rocksdb/rocksdb/table/meta_blocks.h +5 -0
- package/deps/rocksdb/rocksdb/table/multiget_context.h +3 -2
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +8 -0
- package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +0 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +0 -2
- package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.h +0 -2
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +0 -1
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +6 -6
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +0 -1
- package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +86 -7
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +88 -2
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +0 -1
- package/deps/rocksdb/rocksdb/table/table_builder.h +10 -1
- package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +3 -2
- package/deps/rocksdb/rocksdb/table/table_test.cc +899 -22
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +3 -4
- package/deps/rocksdb/rocksdb/test_util/testutil.h +132 -1
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +0 -1
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +0 -2
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +163 -77
- package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +0 -2
- package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +0 -1
- package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +0 -1
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +120 -52
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +0 -2
- package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.h +0 -2
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +2 -1
- package/deps/rocksdb/rocksdb/tools/tool_hooks.cc +94 -0
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +0 -1
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.h +0 -1
- package/deps/rocksdb/rocksdb/trace_replay/io_tracer.cc +1 -1
- package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +2 -1
- package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +3 -5
- package/deps/rocksdb/rocksdb/util/async_file_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/util/async_file_reader.h +15 -8
- package/deps/rocksdb/rocksdb/util/auto_skip_compressor.cc +131 -0
- package/deps/rocksdb/rocksdb/util/auto_skip_compressor.h +90 -0
- package/deps/rocksdb/rocksdb/util/autovector.h +1 -1
- package/deps/rocksdb/rocksdb/util/autovector_test.cc +2 -2
- package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +0 -2
- package/deps/rocksdb/rocksdb/util/compression.cc +936 -4
- package/deps/rocksdb/rocksdb/util/compression.h +348 -232
- package/deps/rocksdb/rocksdb/util/compression_test.cc +229 -0
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +10 -10
- package/deps/rocksdb/rocksdb/util/crc32c_ppc.c +1 -0
- package/deps/rocksdb/rocksdb/util/data_structure.cc +2 -0
- package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +1 -3
- package/deps/rocksdb/rocksdb/util/ppc-opcode.h +5 -5
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +108 -0
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +67 -0
- package/deps/rocksdb/rocksdb/util/slice_test.cc +83 -0
- package/deps/rocksdb/rocksdb/util/string_util.cc +0 -2
- package/deps/rocksdb/rocksdb/util/string_util.h +10 -0
- package/deps/rocksdb/rocksdb/util/thread_operation.h +2 -1
- package/deps/rocksdb/rocksdb/util/udt_util.cc +18 -5
- package/deps/rocksdb/rocksdb/util/udt_util.h +10 -7
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +650 -154
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +438 -144
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_gc_stats.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +16 -17
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +2 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +7 -8
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +4 -3
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +0 -48
- package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/debug.cc +7 -14
- package/deps/rocksdb/rocksdb/utilities/env_mirror.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/env_mirror_test.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/env_timed.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/env_timed_test.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +5 -3
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +10 -9
- package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/memory/memory_util.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/memory_allocators.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_evictable.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/lrulist.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/secondary_index/faiss_ivf_index.cc +183 -32
- package/deps/rocksdb/rocksdb/utilities/secondary_index/faiss_ivf_index_test.cc +258 -12
- package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_helper.h +33 -0
- package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_iterator.cc +99 -0
- package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_mixin.h +280 -120
- package/deps/rocksdb/rocksdb/utilities/secondary_index/simple_secondary_index.cc +79 -0
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +52 -16
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.h +10 -6
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector_test.cc +55 -0
- package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +37 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +2 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/db.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc +2 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +1 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +36 -10
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +5 -7
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +4 -5
- package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +1 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +1118 -37
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +4 -7
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +0 -3
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +125 -127
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +45 -23
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +54 -22
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +477 -58
- package/deps/rocksdb/rocksdb.gyp +9 -4
- package/index.js +50 -9
- package/package.json +8 -1
- package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
- package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
|
@@ -163,7 +163,7 @@ class TransactionTestBase : public ::testing::Test {
|
|
|
163
163
|
std::vector<ColumnFamilyHandle*>* handles) {
|
|
164
164
|
std::vector<size_t> compaction_enabled_cf_indices;
|
|
165
165
|
TransactionDB::PrepareWrap(&options, &cfs, &compaction_enabled_cf_indices);
|
|
166
|
-
DB
|
|
166
|
+
std::unique_ptr<DB> root_db;
|
|
167
167
|
Options options_copy(options);
|
|
168
168
|
const bool use_seq_per_batch =
|
|
169
169
|
txn_db_options.write_policy == WRITE_PREPARED ||
|
|
@@ -174,9 +174,8 @@ class TransactionTestBase : public ::testing::Test {
|
|
|
174
174
|
Status s = DBImpl::Open(options_copy, dbname, cfs, handles, &root_db,
|
|
175
175
|
use_seq_per_batch, use_batch_per_txn,
|
|
176
176
|
/*is_retry=*/false, /*can_retry=*/nullptr);
|
|
177
|
-
auto stackable_db = std::make_unique<StackableDB>(root_db);
|
|
177
|
+
auto stackable_db = std::make_unique<StackableDB>(std::move(root_db));
|
|
178
178
|
if (s.ok()) {
|
|
179
|
-
assert(root_db != nullptr);
|
|
180
179
|
// If WrapStackableDB() returns non-ok, then stackable_db is already
|
|
181
180
|
// deleted within WrapStackableDB().
|
|
182
181
|
s = TransactionDB::WrapStackableDB(stackable_db.release(), txn_db_options,
|
|
@@ -194,7 +193,7 @@ class TransactionTestBase : public ::testing::Test {
|
|
|
194
193
|
TransactionDB::PrepareWrap(&options, &column_families,
|
|
195
194
|
&compaction_enabled_cf_indices);
|
|
196
195
|
std::vector<ColumnFamilyHandle*> handles;
|
|
197
|
-
DB
|
|
196
|
+
std::unique_ptr<DB> root_db;
|
|
198
197
|
Options options_copy(options);
|
|
199
198
|
const bool use_seq_per_batch =
|
|
200
199
|
txn_db_options.write_policy == WRITE_PREPARED ||
|
|
@@ -206,11 +205,9 @@ class TransactionTestBase : public ::testing::Test {
|
|
|
206
205
|
&root_db, use_seq_per_batch, use_batch_per_txn,
|
|
207
206
|
/*is_retry=*/false, /*can_retry=*/nullptr);
|
|
208
207
|
if (!s.ok()) {
|
|
209
|
-
delete root_db;
|
|
210
208
|
return s;
|
|
211
209
|
}
|
|
212
|
-
StackableDB* stackable_db = new StackableDB(root_db);
|
|
213
|
-
assert(root_db != nullptr);
|
|
210
|
+
StackableDB* stackable_db = new StackableDB(std::move(root_db));
|
|
214
211
|
assert(handles.size() == 1);
|
|
215
212
|
s = TransactionDB::WrapStackableDB(stackable_db, txn_db_options,
|
|
216
213
|
compaction_enabled_cf_indices, handles,
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
// COPYING file in the root directory) and Apache 2.0 License
|
|
4
4
|
// (found in the LICENSE.Apache file in the root directory).
|
|
5
5
|
|
|
6
|
-
|
|
7
6
|
#include "utilities/transactions/transaction_util.h"
|
|
8
7
|
|
|
9
8
|
#include <cinttypes>
|
|
@@ -204,4 +203,3 @@ Status TransactionUtil::CheckKeysForConflicts(DBImpl* db_impl,
|
|
|
204
203
|
}
|
|
205
204
|
|
|
206
205
|
} // namespace ROCKSDB_NAMESPACE
|
|
207
|
-
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
// COPYING file in the root directory) and Apache 2.0 License
|
|
4
4
|
// (found in the LICENSE.Apache file in the root directory).
|
|
5
5
|
|
|
6
|
-
|
|
7
6
|
#include <algorithm>
|
|
8
7
|
#include <atomic>
|
|
9
8
|
#include <cinttypes>
|
|
@@ -792,7 +791,8 @@ TEST_P(WritePreparedTransactionTest, CheckKeySkipOldMemtable) {
|
|
|
792
791
|
const int kAttemptImmMemTable = 1;
|
|
793
792
|
for (int attempt = kAttemptHistoryMemtable; attempt <= kAttemptImmMemTable;
|
|
794
793
|
attempt++) {
|
|
795
|
-
options.
|
|
794
|
+
options.max_write_buffer_size_to_maintain =
|
|
795
|
+
3 * static_cast<int>(options.write_buffer_size);
|
|
796
796
|
ASSERT_OK(ReOpen());
|
|
797
797
|
|
|
798
798
|
WriteOptions write_options;
|
|
@@ -3596,7 +3596,7 @@ TEST_P(WritePreparedTransactionTest, NonAtomicCommitOfDelayedPrepared) {
|
|
|
3596
3596
|
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->DisableProcessing();
|
|
3597
3597
|
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->ClearAllCallBacks();
|
|
3598
3598
|
} // for split_before_mutex
|
|
3599
|
-
}
|
|
3599
|
+
} // for split_read
|
|
3600
3600
|
}
|
|
3601
3601
|
|
|
3602
3602
|
// When max evicted seq advances a prepared seq, it involves two updates: i)
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
// COPYING file in the root directory) and Apache 2.0 License
|
|
4
4
|
// (found in the LICENSE.Apache file in the root directory).
|
|
5
5
|
|
|
6
|
-
|
|
7
6
|
#include "utilities/transactions/transaction_test.h"
|
|
8
7
|
#include "utilities/transactions/write_unprepared_txn.h"
|
|
9
8
|
#include "utilities/transactions/write_unprepared_txn_db.h"
|
|
@@ -729,4 +728,3 @@ int main(int argc, char** argv) {
|
|
|
729
728
|
::testing::InitGoogleTest(&argc, argv);
|
|
730
729
|
return RUN_ALL_TESTS();
|
|
731
730
|
}
|
|
732
|
-
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
// COPYING file in the root directory) and Apache 2.0 License
|
|
4
4
|
// (found in the LICENSE.Apache file in the root directory).
|
|
5
5
|
|
|
6
|
-
|
|
7
6
|
#include "utilities/transactions/write_unprepared_txn.h"
|
|
8
7
|
|
|
9
8
|
#include "db/db_impl/db_impl.h"
|
|
@@ -375,7 +374,7 @@ Status WriteUnpreparedTxn::FlushWriteBatchToDBInternal(bool prepared) {
|
|
|
375
374
|
uint64_t seq_used = kMaxSequenceNumber;
|
|
376
375
|
// log_number_ should refer to the oldest log containing uncommitted data
|
|
377
376
|
// from the current transaction. This means that if log_number_ is set,
|
|
378
|
-
// WriteImpl should not overwrite that value, so set
|
|
377
|
+
// WriteImpl should not overwrite that value, so set wal_used to nullptr if
|
|
379
378
|
// log_number_ is already set.
|
|
380
379
|
s = db_impl_->WriteImpl(write_options, GetWriteBatch()->GetWriteBatch(),
|
|
381
380
|
/*callback*/ nullptr, /*user_write_cb=*/nullptr,
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
|
|
6
6
|
#pragma once
|
|
7
7
|
|
|
8
|
-
|
|
9
8
|
#include <set>
|
|
10
9
|
|
|
11
10
|
#include "utilities/transactions/write_prepared_txn.h"
|
|
@@ -272,7 +271,7 @@ class WriteUnpreparedTxn : public WritePreparedTxn {
|
|
|
272
271
|
|
|
273
272
|
SavePoint(const std::map<SequenceNumber, size_t>& seqs,
|
|
274
273
|
ManagedSnapshot* snapshot)
|
|
275
|
-
: unprep_seqs_(seqs), snapshot_(snapshot){}
|
|
274
|
+
: unprep_seqs_(seqs), snapshot_(snapshot) {}
|
|
276
275
|
};
|
|
277
276
|
|
|
278
277
|
// We have 3 data structures holding savepoint information:
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
// Use of this source code is governed by a BSD-style license that can be
|
|
4
4
|
// found in the LICENSE file. See the AUTHORS file for names of contributors.
|
|
5
5
|
|
|
6
|
-
|
|
7
6
|
#include <map>
|
|
8
7
|
#include <memory>
|
|
9
8
|
|
|
@@ -618,7 +617,6 @@ TEST_F(TtlTest, UnregisteredMergeOperator) {
|
|
|
618
617
|
public:
|
|
619
618
|
const char* Name() const override { return "UnregisteredMergeOperator"; }
|
|
620
619
|
};
|
|
621
|
-
options_.fail_if_options_file_error = true;
|
|
622
620
|
options_.merge_operator = std::make_shared<UnregisteredMergeOperator>();
|
|
623
621
|
OpenTtl();
|
|
624
622
|
CloseTtl();
|
|
@@ -931,4 +929,3 @@ int main(int argc, char** argv) {
|
|
|
931
929
|
::testing::InitGoogleTest(&argc, argv);
|
|
932
930
|
return RUN_ALL_TESTS();
|
|
933
931
|
}
|
|
934
|
-
|
|
@@ -15,8 +15,6 @@
|
|
|
15
15
|
#include "db/merge_helper.h"
|
|
16
16
|
#include "db/wide/wide_columns_helper.h"
|
|
17
17
|
#include "memory/arena.h"
|
|
18
|
-
#include "memtable/skiplist.h"
|
|
19
|
-
#include "options/db_options.h"
|
|
20
18
|
#include "rocksdb/comparator.h"
|
|
21
19
|
#include "rocksdb/iterator.h"
|
|
22
20
|
#include "util/cast_util.h"
|
|
@@ -32,17 +30,13 @@ struct WriteBatchWithIndex::Rep {
|
|
|
32
30
|
index_comparator ? index_comparator->timestamp_size() : 0),
|
|
33
31
|
comparator(index_comparator, &write_batch),
|
|
34
32
|
skip_list(comparator, &arena),
|
|
35
|
-
overwrite_key(_overwrite_key),
|
|
36
|
-
last_entry_offset(0),
|
|
37
33
|
last_sub_batch_offset(0),
|
|
38
34
|
sub_batch_cnt(1),
|
|
39
|
-
|
|
35
|
+
overwrite_key(_overwrite_key) {}
|
|
40
36
|
ReadableWriteBatch write_batch;
|
|
41
37
|
WriteBatchEntryComparator comparator;
|
|
42
38
|
Arena arena;
|
|
43
39
|
WriteBatchEntrySkipList skip_list;
|
|
44
|
-
bool overwrite_key;
|
|
45
|
-
size_t last_entry_offset;
|
|
46
40
|
// The starting offset of the last sub-batch. A sub-batch starts right before
|
|
47
41
|
// inserting a key that is a duplicate of a key in the last sub-batch. Zero,
|
|
48
42
|
// the default, means that no duplicate key is detected so far.
|
|
@@ -50,32 +44,51 @@ struct WriteBatchWithIndex::Rep {
|
|
|
50
44
|
// Total number of sub-batches in the write batch. Default is 1.
|
|
51
45
|
size_t sub_batch_cnt;
|
|
52
46
|
|
|
53
|
-
bool
|
|
47
|
+
const bool overwrite_key;
|
|
54
48
|
// Tracks ids of CFs that have updates in this WBWI, number of updates and
|
|
55
|
-
// number of overwritten single deletions per cf.
|
|
49
|
+
// number of overwritten single deletions per cf. Useful for WBWIMemTable
|
|
50
|
+
// when this WBWI is ingested into a DB.
|
|
56
51
|
std::unordered_map<uint32_t, CFStat> cf_id_to_stat;
|
|
57
52
|
|
|
58
|
-
// Remember current offset of internal write batch, which is used as
|
|
59
|
-
// the starting offset of the next record.
|
|
60
|
-
void SetLastEntryOffset() { last_entry_offset = write_batch.GetDataSize(); }
|
|
61
|
-
|
|
62
53
|
// In overwrite mode, find the existing entry for the same key and update it
|
|
63
|
-
// to point to the current entry.
|
|
54
|
+
// to point to the current entry if this is not a Merge operation.
|
|
64
55
|
// Return true if the key is found and updated.
|
|
65
|
-
|
|
66
|
-
|
|
56
|
+
// most_recent_entry_update_count will be set to the update count of the
|
|
57
|
+
// most recent index entry for `key` if exists.
|
|
67
58
|
bool UpdateExistingEntryWithCfId(uint32_t column_family_id, const Slice& key,
|
|
68
|
-
WriteType type
|
|
59
|
+
WriteType type, size_t last_entry_offset,
|
|
60
|
+
uint32_t* most_recent_entry_update_count);
|
|
61
|
+
|
|
62
|
+
// Add or update the index for the given `key` of `type`
|
|
63
|
+
// at `last_entry_offset` in the write batch.
|
|
64
|
+
//
|
|
65
|
+
// The index is updated in place if this WBWI is in overwrite mode
|
|
66
|
+
// and this is not a Merge operation.
|
|
67
|
+
//
|
|
68
|
+
// If `cf_cmp` is provided and there is no compartor stored
|
|
69
|
+
// for this cf, it will be stored as the comparator to use for this cf.
|
|
70
|
+
void AddOrUpdateIndexWithCfId(uint32_t cf_id, const Slice& key,
|
|
71
|
+
WriteType type, size_t last_entry_offset,
|
|
72
|
+
const Comparator* cf_cmp = nullptr);
|
|
73
|
+
|
|
74
|
+
void AddOrUpdateIndex(ColumnFamilyHandle* cfh, const Slice& key,
|
|
75
|
+
WriteType type, size_t last_entry_offset) {
|
|
76
|
+
AddOrUpdateIndexWithCfId(GetColumnFamilyID(cfh), key, type,
|
|
77
|
+
last_entry_offset,
|
|
78
|
+
GetColumnFamilyUserComparator(cfh));
|
|
79
|
+
}
|
|
69
80
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
void AddOrUpdateIndex(const Slice& key, WriteType type);
|
|
81
|
+
void AddOrUpdateIndex(const Slice& key, WriteType type,
|
|
82
|
+
size_t last_entry_offset) {
|
|
83
|
+
AddOrUpdateIndexWithCfId(0, key, type, last_entry_offset);
|
|
84
|
+
}
|
|
75
85
|
|
|
76
|
-
//
|
|
77
|
-
//
|
|
78
|
-
|
|
86
|
+
// Add a new index entry pointing to the the entry at `last_entry_offset`
|
|
87
|
+
// in the write batch. `most_recent_entry_update_count` will be used to
|
|
88
|
+
// initialize the update count of the new index entry.
|
|
89
|
+
void AddNewEntry(uint32_t column_family_id, WriteType type,
|
|
90
|
+
size_t last_entry_offset,
|
|
91
|
+
uint32_t most_recent_entry_update_count);
|
|
79
92
|
|
|
80
93
|
// Clear all updates buffered in this batch.
|
|
81
94
|
void Clear();
|
|
@@ -86,14 +99,10 @@ struct WriteBatchWithIndex::Rep {
|
|
|
86
99
|
Status ReBuildIndex();
|
|
87
100
|
};
|
|
88
101
|
|
|
89
|
-
bool WriteBatchWithIndex::Rep::UpdateExistingEntry(
|
|
90
|
-
ColumnFamilyHandle* column_family, const Slice& key, WriteType type) {
|
|
91
|
-
uint32_t cf_id = GetColumnFamilyID(column_family);
|
|
92
|
-
return UpdateExistingEntryWithCfId(cf_id, key, type);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
102
|
bool WriteBatchWithIndex::Rep::UpdateExistingEntryWithCfId(
|
|
96
|
-
uint32_t column_family_id, const Slice& key, WriteType type
|
|
103
|
+
uint32_t column_family_id, const Slice& key, WriteType type,
|
|
104
|
+
size_t last_entry_offset, uint32_t* most_recent_entry_update_count) {
|
|
105
|
+
assert(most_recent_entry_update_count);
|
|
97
106
|
if (!overwrite_key) {
|
|
98
107
|
return false;
|
|
99
108
|
}
|
|
@@ -105,60 +114,60 @@ bool WriteBatchWithIndex::Rep::UpdateExistingEntryWithCfId(
|
|
|
105
114
|
return false;
|
|
106
115
|
} else if (!iter.MatchesKey(column_family_id, key)) {
|
|
107
116
|
return false;
|
|
108
|
-
} else {
|
|
109
|
-
// Move to the end of this key (NextKey-Prev)
|
|
110
|
-
iter.NextKey(); // Move to the next key
|
|
111
|
-
if (iter.Valid()) {
|
|
112
|
-
iter.Prev(); // Move back one entry
|
|
113
|
-
} else {
|
|
114
|
-
iter.SeekToLast();
|
|
115
|
-
}
|
|
116
117
|
}
|
|
117
|
-
|
|
118
|
+
// Seek() and MatchesKey() guarantees that we are at the first entry with
|
|
119
|
+
// key == `key`, which is the most recently update to `key`.
|
|
120
|
+
WriteBatchIndexEntry* most_recent_entry =
|
|
118
121
|
const_cast<WriteBatchIndexEntry*>(iter.GetRawEntry());
|
|
119
|
-
|
|
122
|
+
*most_recent_entry_update_count = most_recent_entry->update_count;
|
|
123
|
+
|
|
124
|
+
if (LIKELY(last_sub_batch_offset <= most_recent_entry->offset)) {
|
|
120
125
|
last_sub_batch_offset = last_entry_offset;
|
|
121
126
|
sub_batch_cnt++;
|
|
122
127
|
}
|
|
123
|
-
if (
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
128
|
+
if (most_recent_entry->has_single_del &&
|
|
129
|
+
!most_recent_entry->has_overwritten_single_del) {
|
|
130
|
+
cf_id_to_stat[column_family_id].overwritten_sd_count++;
|
|
131
|
+
most_recent_entry->has_overwritten_single_del = true;
|
|
132
|
+
}
|
|
133
|
+
if (type == kSingleDeleteRecord) {
|
|
134
|
+
most_recent_entry->has_single_del = true;
|
|
135
|
+
}
|
|
136
|
+
// Some sanity check for using Merge and SD on the same key.
|
|
137
|
+
if (iter.Entry().type == kSingleDeleteRecord) {
|
|
138
|
+
assert(type != kMergeRecord);
|
|
132
139
|
}
|
|
133
140
|
if (type == kMergeRecord) {
|
|
141
|
+
assert(iter.Entry().type != kSingleDeleteRecord);
|
|
134
142
|
return false;
|
|
135
143
|
} else {
|
|
136
|
-
|
|
144
|
+
// We still increment the update count when updating in-place. This is
|
|
145
|
+
// useful for WBWIMemTable when it needs to emit overwritten SingleDeletes.
|
|
146
|
+
// The overwritten SingleDelete will be assigned sequence number as if
|
|
147
|
+
// update_count is 0. So any later update should have update_count > 0.
|
|
148
|
+
most_recent_entry->update_count++;
|
|
149
|
+
most_recent_entry->offset = last_entry_offset;
|
|
137
150
|
return true;
|
|
138
151
|
}
|
|
139
152
|
}
|
|
140
153
|
|
|
141
|
-
void WriteBatchWithIndex::Rep::
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
154
|
+
void WriteBatchWithIndex::Rep::AddOrUpdateIndexWithCfId(
|
|
155
|
+
uint32_t cf_id, const Slice& key, WriteType type, size_t last_entry_offset,
|
|
156
|
+
const Comparator* cf_cmp) {
|
|
157
|
+
uint32_t update_count = 0;
|
|
158
|
+
if (!UpdateExistingEntryWithCfId(cf_id, key, type, last_entry_offset,
|
|
159
|
+
&update_count)) {
|
|
160
|
+
if (cf_cmp) {
|
|
147
161
|
comparator.SetComparatorForCF(cf_id, cf_cmp);
|
|
148
162
|
}
|
|
149
|
-
AddNewEntry(cf_id, type);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
void WriteBatchWithIndex::Rep::AddOrUpdateIndex(const Slice& key,
|
|
154
|
-
WriteType type) {
|
|
155
|
-
if (!UpdateExistingEntryWithCfId(0, key, type)) {
|
|
156
|
-
AddNewEntry(0, type);
|
|
163
|
+
AddNewEntry(cf_id, type, last_entry_offset, update_count + 1);
|
|
157
164
|
}
|
|
158
165
|
}
|
|
159
166
|
|
|
160
167
|
void WriteBatchWithIndex::Rep::AddNewEntry(uint32_t column_family_id,
|
|
161
|
-
WriteType type
|
|
168
|
+
WriteType type,
|
|
169
|
+
size_t last_entry_offset,
|
|
170
|
+
uint32_t update_count) {
|
|
162
171
|
const std::string& wb_data = write_batch.Data();
|
|
163
172
|
Slice entry_ptr = Slice(wb_data.data() + last_entry_offset,
|
|
164
173
|
wb_data.size() - last_entry_offset);
|
|
@@ -179,17 +188,15 @@ void WriteBatchWithIndex::Rep::AddNewEntry(uint32_t column_family_id,
|
|
|
179
188
|
}
|
|
180
189
|
|
|
181
190
|
auto* mem = arena.Allocate(sizeof(WriteBatchIndexEntry));
|
|
182
|
-
auto* index_entry =
|
|
183
|
-
|
|
184
|
-
|
|
191
|
+
auto* index_entry = new (mem) WriteBatchIndexEntry(
|
|
192
|
+
last_entry_offset, column_family_id, key.data() - wb_data.data(),
|
|
193
|
+
key.size(), update_count);
|
|
185
194
|
skip_list.Insert(index_entry);
|
|
186
195
|
|
|
187
|
-
if (
|
|
188
|
-
|
|
189
|
-
index_entry->has_single_del = true;
|
|
190
|
-
}
|
|
191
|
-
cf_id_to_stat[column_family_id].entry_count++;
|
|
196
|
+
if (type == kSingleDeleteRecord) {
|
|
197
|
+
index_entry->has_single_del = true;
|
|
192
198
|
}
|
|
199
|
+
cf_id_to_stat[column_family_id].entry_count++;
|
|
193
200
|
}
|
|
194
201
|
|
|
195
202
|
void WriteBatchWithIndex::Rep::Clear() {
|
|
@@ -203,7 +210,6 @@ void WriteBatchWithIndex::Rep::ClearIndex() {
|
|
|
203
210
|
arena.~Arena();
|
|
204
211
|
new (&arena) Arena();
|
|
205
212
|
new (&skip_list) WriteBatchEntrySkipList(comparator, &arena);
|
|
206
|
-
last_entry_offset = 0;
|
|
207
213
|
last_sub_batch_offset = 0;
|
|
208
214
|
sub_batch_cnt = 1;
|
|
209
215
|
}
|
|
@@ -232,7 +238,7 @@ Status WriteBatchWithIndex::Rep::ReBuildIndex() {
|
|
|
232
238
|
char tag = 0;
|
|
233
239
|
|
|
234
240
|
// set offset of current entry for call to AddNewEntry()
|
|
235
|
-
last_entry_offset = input.data() - write_batch.Data().data();
|
|
241
|
+
size_t last_entry_offset = input.data() - write_batch.Data().data();
|
|
236
242
|
|
|
237
243
|
s = ReadRecordFromWriteBatch(&input, &tag, &column_family_id, &key, &value,
|
|
238
244
|
&blob, &xid, &unix_write_time);
|
|
@@ -244,32 +250,26 @@ Status WriteBatchWithIndex::Rep::ReBuildIndex() {
|
|
|
244
250
|
case kTypeColumnFamilyValue:
|
|
245
251
|
case kTypeValue:
|
|
246
252
|
found++;
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
}
|
|
253
|
+
AddOrUpdateIndexWithCfId(column_family_id, key, kPutRecord,
|
|
254
|
+
last_entry_offset);
|
|
250
255
|
break;
|
|
251
256
|
case kTypeColumnFamilyDeletion:
|
|
252
257
|
case kTypeDeletion:
|
|
253
258
|
found++;
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
AddNewEntry(column_family_id, kDeleteRecord);
|
|
257
|
-
}
|
|
259
|
+
AddOrUpdateIndexWithCfId(column_family_id, key, kDeleteRecord,
|
|
260
|
+
last_entry_offset);
|
|
258
261
|
break;
|
|
259
262
|
case kTypeColumnFamilySingleDeletion:
|
|
260
263
|
case kTypeSingleDeletion:
|
|
261
264
|
found++;
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
AddNewEntry(column_family_id, kSingleDeleteRecord);
|
|
265
|
-
}
|
|
265
|
+
AddOrUpdateIndexWithCfId(column_family_id, key, kSingleDeleteRecord,
|
|
266
|
+
last_entry_offset);
|
|
266
267
|
break;
|
|
267
268
|
case kTypeColumnFamilyMerge:
|
|
268
269
|
case kTypeMerge:
|
|
269
270
|
found++;
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
}
|
|
271
|
+
AddOrUpdateIndexWithCfId(column_family_id, key, kMergeRecord,
|
|
272
|
+
last_entry_offset);
|
|
273
273
|
break;
|
|
274
274
|
case kTypeLogData:
|
|
275
275
|
case kTypeBeginPrepareXID:
|
|
@@ -284,10 +284,8 @@ Status WriteBatchWithIndex::Rep::ReBuildIndex() {
|
|
|
284
284
|
case kTypeColumnFamilyWideColumnEntity:
|
|
285
285
|
case kTypeWideColumnEntity:
|
|
286
286
|
found++;
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
AddNewEntry(column_family_id, kPutEntityRecord);
|
|
290
|
-
}
|
|
287
|
+
AddOrUpdateIndexWithCfId(column_family_id, key, kPutEntityRecord,
|
|
288
|
+
last_entry_offset);
|
|
291
289
|
break;
|
|
292
290
|
case kTypeColumnFamilyValuePreferredSeqno:
|
|
293
291
|
case kTypeValuePreferredSeqno:
|
|
@@ -363,10 +361,19 @@ Iterator* WriteBatchWithIndex::NewIteratorWithBase(
|
|
|
363
361
|
read_options);
|
|
364
362
|
}
|
|
365
363
|
|
|
366
|
-
Iterator* WriteBatchWithIndex::NewIteratorWithBase(
|
|
364
|
+
Iterator* WriteBatchWithIndex::NewIteratorWithBase(
|
|
365
|
+
Iterator* base_iterator, const ReadOptions* read_options) {
|
|
366
|
+
WBWIIteratorImpl* wbwiii;
|
|
367
367
|
// default column family's comparator
|
|
368
|
-
|
|
369
|
-
|
|
368
|
+
if (read_options != nullptr) {
|
|
369
|
+
wbwiii = new WBWIIteratorImpl(
|
|
370
|
+
0, &(rep->skip_list), &rep->write_batch, &rep->comparator,
|
|
371
|
+
read_options->iterate_lower_bound, read_options->iterate_upper_bound);
|
|
372
|
+
} else {
|
|
373
|
+
wbwiii = new WBWIIteratorImpl(0, &(rep->skip_list), &rep->write_batch,
|
|
374
|
+
&rep->comparator);
|
|
375
|
+
}
|
|
376
|
+
|
|
370
377
|
return new BaseDeltaIterator(nullptr, base_iterator, wbwiii,
|
|
371
378
|
rep->comparator.default_comparator(),
|
|
372
379
|
/* read_options */ nullptr);
|
|
@@ -374,19 +381,19 @@ Iterator* WriteBatchWithIndex::NewIteratorWithBase(Iterator* base_iterator) {
|
|
|
374
381
|
|
|
375
382
|
Status WriteBatchWithIndex::Put(ColumnFamilyHandle* column_family,
|
|
376
383
|
const Slice& key, const Slice& value) {
|
|
377
|
-
rep->
|
|
384
|
+
size_t last_entry_offset = rep->write_batch.GetDataSize();
|
|
378
385
|
auto s = rep->write_batch.Put(column_family, key, value);
|
|
379
386
|
if (s.ok()) {
|
|
380
|
-
rep->AddOrUpdateIndex(column_family, key, kPutRecord);
|
|
387
|
+
rep->AddOrUpdateIndex(column_family, key, kPutRecord, last_entry_offset);
|
|
381
388
|
}
|
|
382
389
|
return s;
|
|
383
390
|
}
|
|
384
391
|
|
|
385
392
|
Status WriteBatchWithIndex::Put(const Slice& key, const Slice& value) {
|
|
386
|
-
rep->
|
|
393
|
+
size_t last_entry_offset = rep->write_batch.GetDataSize();
|
|
387
394
|
auto s = rep->write_batch.Put(key, value);
|
|
388
395
|
if (s.ok()) {
|
|
389
|
-
rep->AddOrUpdateIndex(key, kPutRecord);
|
|
396
|
+
rep->AddOrUpdateIndex(key, kPutRecord, last_entry_offset);
|
|
390
397
|
}
|
|
391
398
|
return s;
|
|
392
399
|
}
|
|
@@ -405,33 +412,30 @@ Status WriteBatchWithIndex::PutEntity(ColumnFamilyHandle* column_family,
|
|
|
405
412
|
const Slice& key,
|
|
406
413
|
const WideColumns& columns) {
|
|
407
414
|
assert(rep);
|
|
408
|
-
|
|
409
|
-
rep->SetLastEntryOffset();
|
|
410
|
-
|
|
415
|
+
size_t last_entry_offset = rep->write_batch.GetDataSize();
|
|
411
416
|
const Status s = rep->write_batch.PutEntity(column_family, key, columns);
|
|
412
|
-
|
|
413
417
|
if (s.ok()) {
|
|
414
|
-
rep->AddOrUpdateIndex(column_family, key, kPutEntityRecord
|
|
418
|
+
rep->AddOrUpdateIndex(column_family, key, kPutEntityRecord,
|
|
419
|
+
last_entry_offset);
|
|
415
420
|
}
|
|
416
|
-
|
|
417
421
|
return s;
|
|
418
422
|
}
|
|
419
423
|
|
|
420
424
|
Status WriteBatchWithIndex::Delete(ColumnFamilyHandle* column_family,
|
|
421
425
|
const Slice& key) {
|
|
422
|
-
rep->
|
|
426
|
+
size_t last_entry_offset = rep->write_batch.GetDataSize();
|
|
423
427
|
auto s = rep->write_batch.Delete(column_family, key);
|
|
424
428
|
if (s.ok()) {
|
|
425
|
-
rep->AddOrUpdateIndex(column_family, key, kDeleteRecord);
|
|
429
|
+
rep->AddOrUpdateIndex(column_family, key, kDeleteRecord, last_entry_offset);
|
|
426
430
|
}
|
|
427
431
|
return s;
|
|
428
432
|
}
|
|
429
433
|
|
|
430
434
|
Status WriteBatchWithIndex::Delete(const Slice& key) {
|
|
431
|
-
rep->
|
|
435
|
+
size_t last_entry_offset = rep->write_batch.GetDataSize();
|
|
432
436
|
auto s = rep->write_batch.Delete(key);
|
|
433
437
|
if (s.ok()) {
|
|
434
|
-
rep->AddOrUpdateIndex(key, kDeleteRecord);
|
|
438
|
+
rep->AddOrUpdateIndex(key, kDeleteRecord, last_entry_offset);
|
|
435
439
|
}
|
|
436
440
|
return s;
|
|
437
441
|
}
|
|
@@ -447,19 +451,20 @@ Status WriteBatchWithIndex::Delete(ColumnFamilyHandle* column_family,
|
|
|
447
451
|
|
|
448
452
|
Status WriteBatchWithIndex::SingleDelete(ColumnFamilyHandle* column_family,
|
|
449
453
|
const Slice& key) {
|
|
450
|
-
rep->
|
|
454
|
+
size_t last_entry_offset = rep->write_batch.GetDataSize();
|
|
451
455
|
auto s = rep->write_batch.SingleDelete(column_family, key);
|
|
452
456
|
if (s.ok()) {
|
|
453
|
-
rep->AddOrUpdateIndex(column_family, key, kSingleDeleteRecord
|
|
457
|
+
rep->AddOrUpdateIndex(column_family, key, kSingleDeleteRecord,
|
|
458
|
+
last_entry_offset);
|
|
454
459
|
}
|
|
455
460
|
return s;
|
|
456
461
|
}
|
|
457
462
|
|
|
458
463
|
Status WriteBatchWithIndex::SingleDelete(const Slice& key) {
|
|
459
|
-
rep->
|
|
464
|
+
size_t last_entry_offset = rep->write_batch.GetDataSize();
|
|
460
465
|
auto s = rep->write_batch.SingleDelete(key);
|
|
461
466
|
if (s.ok()) {
|
|
462
|
-
rep->AddOrUpdateIndex(key, kSingleDeleteRecord);
|
|
467
|
+
rep->AddOrUpdateIndex(key, kSingleDeleteRecord, last_entry_offset);
|
|
463
468
|
}
|
|
464
469
|
return s;
|
|
465
470
|
}
|
|
@@ -476,19 +481,19 @@ Status WriteBatchWithIndex::SingleDelete(ColumnFamilyHandle* column_family,
|
|
|
476
481
|
|
|
477
482
|
Status WriteBatchWithIndex::Merge(ColumnFamilyHandle* column_family,
|
|
478
483
|
const Slice& key, const Slice& value) {
|
|
479
|
-
rep->
|
|
484
|
+
size_t last_entry_offset = rep->write_batch.GetDataSize();
|
|
480
485
|
auto s = rep->write_batch.Merge(column_family, key, value);
|
|
481
486
|
if (s.ok()) {
|
|
482
|
-
rep->AddOrUpdateIndex(column_family, key, kMergeRecord);
|
|
487
|
+
rep->AddOrUpdateIndex(column_family, key, kMergeRecord, last_entry_offset);
|
|
483
488
|
}
|
|
484
489
|
return s;
|
|
485
490
|
}
|
|
486
491
|
|
|
487
492
|
Status WriteBatchWithIndex::Merge(const Slice& key, const Slice& value) {
|
|
488
|
-
rep->
|
|
493
|
+
size_t last_entry_offset = rep->write_batch.GetDataSize();
|
|
489
494
|
auto s = rep->write_batch.Merge(key, value);
|
|
490
495
|
if (s.ok()) {
|
|
491
|
-
rep->AddOrUpdateIndex(key, kMergeRecord);
|
|
496
|
+
rep->AddOrUpdateIndex(key, kMergeRecord, last_entry_offset);
|
|
492
497
|
}
|
|
493
498
|
return s;
|
|
494
499
|
}
|
|
@@ -1163,15 +1168,8 @@ const Comparator* WriteBatchWithIndexInternal::GetUserComparator(
|
|
|
1163
1168
|
return ucmps.GetComparator(cf_id);
|
|
1164
1169
|
}
|
|
1165
1170
|
|
|
1166
|
-
void WriteBatchWithIndex::SetTrackPerCFStat(bool track) {
|
|
1167
|
-
// Should be set when the wbwi contains no update.
|
|
1168
|
-
assert(GetWriteBatch()->Count() == 0);
|
|
1169
|
-
rep->track_cf_stat = track;
|
|
1170
|
-
}
|
|
1171
|
-
|
|
1172
1171
|
const std::unordered_map<uint32_t, WriteBatchWithIndex::CFStat>&
|
|
1173
1172
|
WriteBatchWithIndex::GetCFStats() const {
|
|
1174
|
-
assert(rep->track_cf_stat);
|
|
1175
1173
|
return rep->cf_id_to_stat;
|
|
1176
1174
|
}
|
|
1177
1175
|
|