@nxtedition/rocksdb 13.5.13 → 14.0.0
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 +33 -2
- package/binding.gyp +2 -2
- package/chained-batch.js +9 -16
- package/deps/rocksdb/rocksdb/BUCK +18 -1
- package/deps/rocksdb/rocksdb/CMakeLists.txt +10 -3
- package/deps/rocksdb/rocksdb/Makefile +20 -9
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +90 -13
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +88 -75
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +44 -36
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +184 -148
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +5 -11
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +116 -47
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +1 -1
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +3 -6
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +1 -1
- package/deps/rocksdb/rocksdb/db/builder.cc +4 -2
- package/deps/rocksdb/rocksdb/db/c.cc +207 -0
- package/deps/rocksdb/rocksdb/db/c_test.c +72 -0
- package/deps/rocksdb/rocksdb/db/column_family.cc +3 -2
- package/deps/rocksdb/rocksdb/db/column_family.h +5 -0
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +4 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +2 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +51 -38
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +29 -12
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +5 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +566 -366
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +131 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +1 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +7 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +4 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +13 -14
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +12 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +8 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +97 -76
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +11 -14
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +8 -0
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +16 -3
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +448 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +22 -20
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +4 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +5 -5
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +7 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_iter.cc +104 -0
- package/deps/rocksdb/rocksdb/db/db_iter.h +4 -11
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +331 -58
- package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +129 -0
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +64 -0
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +40 -0
- package/deps/rocksdb/rocksdb/db/db_test2.cc +25 -15
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +42 -24
- package/deps/rocksdb/rocksdb/db/db_test_util.h +29 -14
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +69 -36
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/event_helpers.cc +1 -0
- package/deps/rocksdb/rocksdb/db/experimental.cc +5 -4
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +8 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +275 -79
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +23 -5
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +591 -175
- package/deps/rocksdb/rocksdb/db/flush_job.cc +3 -4
- package/deps/rocksdb/rocksdb/db/log_reader.cc +5 -2
- package/deps/rocksdb/rocksdb/db/memtable.cc +84 -35
- package/deps/rocksdb/rocksdb/db/memtable.h +39 -34
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +1 -0
- package/deps/rocksdb/rocksdb/db/merge_operator.cc +1 -1
- package/deps/rocksdb/rocksdb/db/multi_scan.cc +11 -5
- package/deps/rocksdb/rocksdb/db/version_edit.cc +1 -1
- package/deps/rocksdb/rocksdb/db/version_edit.h +1 -1
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +34 -14
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +28 -5
- package/deps/rocksdb/rocksdb/db/version_set.cc +159 -14
- package/deps/rocksdb/rocksdb/db/version_set.h +2 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +60 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +16 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_service.h +75 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compression_manager.cc +28 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compression_manager.h +2 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +31 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +50 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +57 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_stat.h +0 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +266 -35
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +5 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +0 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +18 -2
- package/deps/rocksdb/rocksdb/env/env.cc +12 -0
- package/deps/rocksdb/rocksdb/env/env_test.cc +18 -0
- package/deps/rocksdb/rocksdb/env/file_system_tracer.cc +2 -0
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +9 -5
- package/deps/rocksdb/rocksdb/env/io_posix.cc +4 -2
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +19 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +33 -31
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +42 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +93 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +43 -49
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +4 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/compression_type.h +8 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/data_structure.h +487 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +11 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +135 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +5 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +12 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/ldb_tool.h +8 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +12 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/multi_scan.h +19 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +219 -24
- package/deps/rocksdb/rocksdb/include/rocksdb/point_lock_bench_tool.h +14 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +16 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +16 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +13 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/types.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +0 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/user_defined_index.h +45 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/cache_dump_load.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +6 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +21 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/memory/memory_allocator_impl.h +3 -3
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +77 -51
- package/deps/rocksdb/rocksdb/memtable/skiplist.h +10 -13
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +16 -7
- package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +9 -4
- package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +2 -0
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +6 -0
- package/deps/rocksdb/rocksdb/options/cf_options.cc +13 -1
- package/deps/rocksdb/rocksdb/options/cf_options.h +6 -2
- package/deps/rocksdb/rocksdb/options/options.cc +2 -0
- package/deps/rocksdb/rocksdb/options/options_helper.cc +9 -8
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +9 -5
- package/deps/rocksdb/rocksdb/port/mmap.cc +1 -1
- package/deps/rocksdb/rocksdb/port/win/xpress_win.cc +51 -0
- package/deps/rocksdb/rocksdb/port/win/xpress_win.h +4 -0
- package/deps/rocksdb/rocksdb/src.mk +8 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +1125 -765
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +35 -24
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +29 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +732 -256
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +225 -16
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +102 -26
- 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_sync_and_async.h +2 -75
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +433 -141
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +17 -10
- package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy_impl.h +20 -0
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +112 -85
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +191 -36
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/user_defined_index_wrapper.h +108 -31
- package/deps/rocksdb/rocksdb/table/external_table.cc +7 -3
- package/deps/rocksdb/rocksdb/table/format.cc +6 -12
- package/deps/rocksdb/rocksdb/table/format.h +10 -0
- package/deps/rocksdb/rocksdb/table/internal_iterator.h +1 -1
- package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +1 -1
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +1 -1
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +5 -0
- package/deps/rocksdb/rocksdb/table/multiget_context.h +3 -1
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +118 -46
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +9 -8
- package/deps/rocksdb/rocksdb/table/table_builder.h +5 -0
- package/deps/rocksdb/rocksdb/table/table_properties.cc +16 -0
- package/deps/rocksdb/rocksdb/table/table_test.cc +1540 -155
- package/deps/rocksdb/rocksdb/test_util/testutil.h +21 -5
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +26 -5
- package/deps/rocksdb/rocksdb/tools/ldb.cc +1 -2
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +2 -0
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +9 -3
- package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +133 -165
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +173 -64
- package/deps/rocksdb/rocksdb/util/aligned_buffer.h +69 -0
- package/deps/rocksdb/rocksdb/util/atomic.h +6 -0
- package/deps/rocksdb/rocksdb/util/auto_tune_compressor.cc +29 -20
- package/deps/rocksdb/rocksdb/util/auto_tune_compressor.h +10 -6
- package/deps/rocksdb/rocksdb/util/bit_fields.h +338 -0
- package/deps/rocksdb/rocksdb/util/coding.h +3 -3
- package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +2 -2
- package/deps/rocksdb/rocksdb/util/compression.cc +777 -82
- package/deps/rocksdb/rocksdb/util/compression.h +5 -0
- package/deps/rocksdb/rocksdb/util/compression_test.cc +5 -3
- package/deps/rocksdb/rocksdb/util/dynamic_bloom.cc +2 -2
- package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +15 -14
- package/deps/rocksdb/rocksdb/util/interval_test.cc +102 -0
- package/deps/rocksdb/rocksdb/util/semaphore.h +164 -0
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +10 -6
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +4 -2
- package/deps/rocksdb/rocksdb/util/slice_test.cc +136 -0
- package/deps/rocksdb/rocksdb/util/status.cc +1 -0
- package/deps/rocksdb/rocksdb/util/string_util.cc +2 -16
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +7 -4
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +35 -14
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_test.cc +2 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.cc +5 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/any_lock_manager_test.h +244 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_bench.cc +18 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_bench_tool.cc +159 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +1244 -161
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +66 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_stress_test.cc +103 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +1275 -8
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +40 -262
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test_common.h +78 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_validation_test_runner.h +469 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +2 -6
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +4 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +9 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/timestamped_snapshot_test.cc +18 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +2 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.cc +2 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +72 -44
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +92 -15
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +6 -20
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +143 -112
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +23 -16
- package/index.js +3 -3
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
- package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
- package/util.h +38 -12
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_stat.cc +0 -17
|
@@ -1118,11 +1118,11 @@ class DB {
|
|
|
1118
1118
|
// // Check ex.what()
|
|
1119
1119
|
// }
|
|
1120
1120
|
virtual std::unique_ptr<MultiScan> NewMultiScan(
|
|
1121
|
-
const ReadOptions& /*options*/, ColumnFamilyHandle*
|
|
1122
|
-
const
|
|
1121
|
+
const ReadOptions& /*options*/, ColumnFamilyHandle* column_family,
|
|
1122
|
+
const MultiScanArgs& /*scan_opts*/) {
|
|
1123
1123
|
std::unique_ptr<Iterator> iter(NewErrorIterator(Status::NotSupported()));
|
|
1124
|
-
std::unique_ptr<MultiScan> ms_iter =
|
|
1125
|
-
|
|
1124
|
+
std::unique_ptr<MultiScan> ms_iter = std::make_unique<MultiScan>(
|
|
1125
|
+
column_family->GetComparator(), std::move(iter));
|
|
1126
1126
|
return ms_iter;
|
|
1127
1127
|
}
|
|
1128
1128
|
|
|
@@ -1966,7 +1966,9 @@ class DB {
|
|
|
1966
1966
|
// In the first mode we will try to find the lowest possible level that
|
|
1967
1967
|
// the file can fit in, and ingest the file into this level (2). A file that
|
|
1968
1968
|
// have a key range that overlap with the memtable key range will require us
|
|
1969
|
-
// to Flush the memtable first before ingesting the file.
|
|
1969
|
+
// to Flush the memtable first before ingesting the file. If ingested files
|
|
1970
|
+
// have any overlap with each other, level and sequence number assignment
|
|
1971
|
+
// ensure later files overwrite earlier files.
|
|
1970
1972
|
// In the second mode we will always ingest in the bottom most level (see
|
|
1971
1973
|
// docs to IngestExternalFileOptions::ingest_behind).
|
|
1972
1974
|
// For a column family that enables user-defined timestamps, ingesting
|
|
@@ -1984,7 +1986,7 @@ class DB {
|
|
|
1984
1986
|
// even if the file compression doesn't match the level compression
|
|
1985
1987
|
// (3) If IngestExternalFileOptions->ingest_behind is set to true,
|
|
1986
1988
|
// we always ingest at the bottommost level, which should be reserved
|
|
1987
|
-
// for this purpose (see
|
|
1989
|
+
// for this purpose (see ColumnFamilyOptions::cf_allow_ingest_behind).
|
|
1988
1990
|
// (4) If IngestExternalFileOptions->fail_if_not_bottommost_level is set to
|
|
1989
1991
|
// true, then this method can return Status:TryAgain() indicating that
|
|
1990
1992
|
// the files cannot be ingested to the bottommost level, and it is the
|
|
@@ -2245,12 +2247,9 @@ inline Status DB::GetApproximateSizes(ColumnFamilyHandle* column_family,
|
|
|
2245
2247
|
uint64_t* sizes,
|
|
2246
2248
|
SizeApproximationFlags include_flags) {
|
|
2247
2249
|
SizeApproximationOptions options;
|
|
2248
|
-
|
|
2249
|
-
|
|
2250
|
-
|
|
2251
|
-
options.include_files =
|
|
2252
|
-
((include_flags & SizeApproximationFlags::INCLUDE_FILES) !=
|
|
2253
|
-
SizeApproximationFlags::NONE);
|
|
2250
|
+
using enum SizeApproximationFlags; // Require C++20 support
|
|
2251
|
+
options.include_memtables = ((include_flags & INCLUDE_MEMTABLES) != NONE);
|
|
2252
|
+
options.include_files = ((include_flags & INCLUDE_FILES) != NONE);
|
|
2254
2253
|
return GetApproximateSizes(options, column_family, ranges, n, sizes);
|
|
2255
2254
|
}
|
|
2256
2255
|
|
|
@@ -456,7 +456,141 @@ class Env : public Customizable {
|
|
|
456
456
|
kGetEntity = 8,
|
|
457
457
|
kMultiGetEntity = 9,
|
|
458
458
|
kGetFileChecksumsFromCurrentManifest = 10,
|
|
459
|
-
|
|
459
|
+
// Enums after this, up to 0x7F, are reserved for future use for the public
|
|
460
|
+
// RocksDB API (i.e. they should be "non-custom" IO activities). Make sure
|
|
461
|
+
// to also update IOActivityToString when adding new values.
|
|
462
|
+
|
|
463
|
+
kCustomIOActivity80 = 0x80,
|
|
464
|
+
kFirstCustomIOActivity = kCustomIOActivity80,
|
|
465
|
+
kCustomIOActivity81 = 0x81,
|
|
466
|
+
kCustomIOActivity82 = 0x82,
|
|
467
|
+
kCustomIOActivity83 = 0x83,
|
|
468
|
+
kCustomIOActivity84 = 0x84,
|
|
469
|
+
kCustomIOActivity85 = 0x85,
|
|
470
|
+
kCustomIOActivity86 = 0x86,
|
|
471
|
+
kCustomIOActivity87 = 0x87,
|
|
472
|
+
kCustomIOActivity88 = 0x88,
|
|
473
|
+
kCustomIOActivity89 = 0x89,
|
|
474
|
+
kCustomIOActivity8A = 0x8A,
|
|
475
|
+
kCustomIOActivity8B = 0x8B,
|
|
476
|
+
kCustomIOActivity8C = 0x8C,
|
|
477
|
+
kCustomIOActivity8D = 0x8D,
|
|
478
|
+
kCustomIOActivity8E = 0x8E,
|
|
479
|
+
kCustomIOActivity8F = 0x8F,
|
|
480
|
+
kCustomIOActivity90 = 0x90,
|
|
481
|
+
kCustomIOActivity91 = 0x91,
|
|
482
|
+
kCustomIOActivity92 = 0x92,
|
|
483
|
+
kCustomIOActivity93 = 0x93,
|
|
484
|
+
kCustomIOActivity94 = 0x94,
|
|
485
|
+
kCustomIOActivity95 = 0x95,
|
|
486
|
+
kCustomIOActivity96 = 0x96,
|
|
487
|
+
kCustomIOActivity97 = 0x97,
|
|
488
|
+
kCustomIOActivity98 = 0x98,
|
|
489
|
+
kCustomIOActivity99 = 0x99,
|
|
490
|
+
kCustomIOActivity9A = 0x9A,
|
|
491
|
+
kCustomIOActivity9B = 0x9B,
|
|
492
|
+
kCustomIOActivity9C = 0x9C,
|
|
493
|
+
kCustomIOActivity9D = 0x9D,
|
|
494
|
+
kCustomIOActivity9E = 0x9E,
|
|
495
|
+
kCustomIOActivity9F = 0x9F,
|
|
496
|
+
kCustomIOActivityA0 = 0xA0,
|
|
497
|
+
kCustomIOActivityA1 = 0xA1,
|
|
498
|
+
kCustomIOActivityA2 = 0xA2,
|
|
499
|
+
kCustomIOActivityA3 = 0xA3,
|
|
500
|
+
kCustomIOActivityA4 = 0xA4,
|
|
501
|
+
kCustomIOActivityA5 = 0xA5,
|
|
502
|
+
kCustomIOActivityA6 = 0xA6,
|
|
503
|
+
kCustomIOActivityA7 = 0xA7,
|
|
504
|
+
kCustomIOActivityA8 = 0xA8,
|
|
505
|
+
kCustomIOActivityA9 = 0xA9,
|
|
506
|
+
kCustomIOActivityAA = 0xAA,
|
|
507
|
+
kCustomIOActivityAB = 0xAB,
|
|
508
|
+
kCustomIOActivityAC = 0xAC,
|
|
509
|
+
kCustomIOActivityAD = 0xAD,
|
|
510
|
+
kCustomIOActivityAE = 0xAE,
|
|
511
|
+
kCustomIOActivityAF = 0xAF,
|
|
512
|
+
kCustomIOActivityB0 = 0xB0,
|
|
513
|
+
kCustomIOActivityB1 = 0xB1,
|
|
514
|
+
kCustomIOActivityB2 = 0xB2,
|
|
515
|
+
kCustomIOActivityB3 = 0xB3,
|
|
516
|
+
kCustomIOActivityB4 = 0xB4,
|
|
517
|
+
kCustomIOActivityB5 = 0xB5,
|
|
518
|
+
kCustomIOActivityB6 = 0xB6,
|
|
519
|
+
kCustomIOActivityB7 = 0xB7,
|
|
520
|
+
kCustomIOActivityB8 = 0xB8,
|
|
521
|
+
kCustomIOActivityB9 = 0xB9,
|
|
522
|
+
kCustomIOActivityBA = 0xBA,
|
|
523
|
+
kCustomIOActivityBB = 0xBB,
|
|
524
|
+
kCustomIOActivityBC = 0xBC,
|
|
525
|
+
kCustomIOActivityBD = 0xBD,
|
|
526
|
+
kCustomIOActivityBE = 0xBE,
|
|
527
|
+
kCustomIOActivityBF = 0xBF,
|
|
528
|
+
kCustomIOActivityC0 = 0xC0,
|
|
529
|
+
kCustomIOActivityC1 = 0xC1,
|
|
530
|
+
kCustomIOActivityC2 = 0xC2,
|
|
531
|
+
kCustomIOActivityC3 = 0xC3,
|
|
532
|
+
kCustomIOActivityC4 = 0xC4,
|
|
533
|
+
kCustomIOActivityC5 = 0xC5,
|
|
534
|
+
kCustomIOActivityC6 = 0xC6,
|
|
535
|
+
kCustomIOActivityC7 = 0xC7,
|
|
536
|
+
kCustomIOActivityC8 = 0xC8,
|
|
537
|
+
kCustomIOActivityC9 = 0xC9,
|
|
538
|
+
kCustomIOActivityCA = 0xCA,
|
|
539
|
+
kCustomIOActivityCB = 0xCB,
|
|
540
|
+
kCustomIOActivityCC = 0xCC,
|
|
541
|
+
kCustomIOActivityCD = 0xCD,
|
|
542
|
+
kCustomIOActivityCE = 0xCE,
|
|
543
|
+
kCustomIOActivityCF = 0xCF,
|
|
544
|
+
kCustomIOActivityD0 = 0xD0,
|
|
545
|
+
kCustomIOActivityD1 = 0xD1,
|
|
546
|
+
kCustomIOActivityD2 = 0xD2,
|
|
547
|
+
kCustomIOActivityD3 = 0xD3,
|
|
548
|
+
kCustomIOActivityD4 = 0xD4,
|
|
549
|
+
kCustomIOActivityD5 = 0xD5,
|
|
550
|
+
kCustomIOActivityD6 = 0xD6,
|
|
551
|
+
kCustomIOActivityD7 = 0xD7,
|
|
552
|
+
kCustomIOActivityD8 = 0xD8,
|
|
553
|
+
kCustomIOActivityD9 = 0xD9,
|
|
554
|
+
kCustomIOActivityDA = 0xDA,
|
|
555
|
+
kCustomIOActivityDB = 0xDB,
|
|
556
|
+
kCustomIOActivityDC = 0xDC,
|
|
557
|
+
kCustomIOActivityDD = 0xDD,
|
|
558
|
+
kCustomIOActivityDE = 0xDE,
|
|
559
|
+
kCustomIOActivityDF = 0xDF,
|
|
560
|
+
kCustomIOActivityE0 = 0xE0,
|
|
561
|
+
kCustomIOActivityE1 = 0xE1,
|
|
562
|
+
kCustomIOActivityE2 = 0xE2,
|
|
563
|
+
kCustomIOActivityE3 = 0xE3,
|
|
564
|
+
kCustomIOActivityE4 = 0xE4,
|
|
565
|
+
kCustomIOActivityE5 = 0xE5,
|
|
566
|
+
kCustomIOActivityE6 = 0xE6,
|
|
567
|
+
kCustomIOActivityE7 = 0xE7,
|
|
568
|
+
kCustomIOActivityE8 = 0xE8,
|
|
569
|
+
kCustomIOActivityE9 = 0xE9,
|
|
570
|
+
kCustomIOActivityEA = 0xEA,
|
|
571
|
+
kCustomIOActivityEB = 0xEB,
|
|
572
|
+
kCustomIOActivityEC = 0xEC,
|
|
573
|
+
kCustomIOActivityED = 0xED,
|
|
574
|
+
kCustomIOActivityEE = 0xEE,
|
|
575
|
+
kCustomIOActivityEF = 0xEF,
|
|
576
|
+
kCustomIOActivityF0 = 0xF0,
|
|
577
|
+
kCustomIOActivityF1 = 0xF1,
|
|
578
|
+
kCustomIOActivityF2 = 0xF2,
|
|
579
|
+
kCustomIOActivityF3 = 0xF3,
|
|
580
|
+
kCustomIOActivityF4 = 0xF4,
|
|
581
|
+
kCustomIOActivityF5 = 0xF5,
|
|
582
|
+
kCustomIOActivityF6 = 0xF6,
|
|
583
|
+
kCustomIOActivityF7 = 0xF7,
|
|
584
|
+
kCustomIOActivityF8 = 0xF8,
|
|
585
|
+
kCustomIOActivityF9 = 0xF9,
|
|
586
|
+
kCustomIOActivityFA = 0xFA,
|
|
587
|
+
kCustomIOActivityFB = 0xFB,
|
|
588
|
+
kCustomIOActivityFC = 0xFC,
|
|
589
|
+
kCustomIOActivityFD = 0xFD,
|
|
590
|
+
kCustomIOActivityFE = 0xFE,
|
|
591
|
+
kLastCustomIOActivity = kCustomIOActivityFE,
|
|
592
|
+
|
|
593
|
+
kUnknown = 0xFF, // Keep last as unknown
|
|
460
594
|
};
|
|
461
595
|
|
|
462
596
|
static std::string IOActivityToString(IOActivity activity);
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
#include <functional>
|
|
25
25
|
#include <limits>
|
|
26
26
|
#include <memory>
|
|
27
|
+
#include <shared_mutex>
|
|
27
28
|
#include <sstream>
|
|
28
29
|
#include <string>
|
|
29
30
|
#include <unordered_map>
|
|
@@ -254,6 +255,10 @@ struct IODebugContext {
|
|
|
254
255
|
// Arbitrary structure containing cost information about the IO request
|
|
255
256
|
std::any cost_info;
|
|
256
257
|
|
|
258
|
+
// FileSystem implementations can use this mutex to synchronize concurrent
|
|
259
|
+
// reads/writes as needed (e.g. to update the counters or cost_info field)
|
|
260
|
+
std::shared_mutex mutex;
|
|
261
|
+
|
|
257
262
|
IODebugContext() {}
|
|
258
263
|
|
|
259
264
|
// Copy constructor
|
|
@@ -32,22 +32,34 @@ struct FileIOByTemperature {
|
|
|
32
32
|
uint64_t hot_file_bytes_read;
|
|
33
33
|
// the number of bytes read to Temperature::kWarm file
|
|
34
34
|
uint64_t warm_file_bytes_read;
|
|
35
|
+
// the number of bytes read to Temperature::kCool file
|
|
36
|
+
uint64_t cool_file_bytes_read;
|
|
35
37
|
// the number of bytes read to Temperature::kCold file
|
|
36
38
|
uint64_t cold_file_bytes_read;
|
|
39
|
+
// the number of bytes read to Temperature::kIce file
|
|
40
|
+
uint64_t ice_file_bytes_read;
|
|
37
41
|
// total number of reads to Temperature::kHot file
|
|
38
42
|
uint64_t hot_file_read_count;
|
|
39
43
|
// total number of reads to Temperature::kWarm file
|
|
40
44
|
uint64_t warm_file_read_count;
|
|
45
|
+
// total number of reads to Temperature::kCool file
|
|
46
|
+
uint64_t cool_file_read_count;
|
|
41
47
|
// total number of reads to Temperature::kCold file
|
|
42
48
|
uint64_t cold_file_read_count;
|
|
49
|
+
// total number of reads to Temperature::kIce file
|
|
50
|
+
uint64_t ice_file_read_count;
|
|
43
51
|
// reset all the statistics to 0.
|
|
44
52
|
void Reset() {
|
|
45
53
|
hot_file_bytes_read = 0;
|
|
46
54
|
warm_file_bytes_read = 0;
|
|
55
|
+
cool_file_bytes_read = 0;
|
|
47
56
|
cold_file_bytes_read = 0;
|
|
57
|
+
ice_file_bytes_read = 0;
|
|
48
58
|
hot_file_read_count = 0;
|
|
49
59
|
warm_file_read_count = 0;
|
|
60
|
+
cool_file_read_count = 0;
|
|
50
61
|
cold_file_read_count = 0;
|
|
62
|
+
ice_file_read_count = 0;
|
|
51
63
|
}
|
|
52
64
|
};
|
|
53
65
|
|
|
@@ -109,7 +109,7 @@ class Iterator : public IteratorBase {
|
|
|
109
109
|
//
|
|
110
110
|
// If Prepare() is called, it overrides the iterate_upper_bound in
|
|
111
111
|
// ReadOptions
|
|
112
|
-
virtual void Prepare(const
|
|
112
|
+
virtual void Prepare(const MultiScanArgs& /*scan_opts*/) {}
|
|
113
113
|
};
|
|
114
114
|
|
|
115
115
|
// Return an empty iterator (yields nothing).
|
|
@@ -32,10 +32,18 @@ struct LDBOptions {
|
|
|
32
32
|
|
|
33
33
|
class LDBTool {
|
|
34
34
|
public:
|
|
35
|
+
// DEPRECATED because this function does not return, which can result in
|
|
36
|
+
// memory leaks being reported because of the default Options() etc. not being
|
|
37
|
+
// destroyed.
|
|
35
38
|
void Run(
|
|
36
39
|
int argc, char** argv, Options db_options = Options(),
|
|
37
40
|
const LDBOptions& ldb_options = LDBOptions(),
|
|
38
41
|
const std::vector<ColumnFamilyDescriptor>* column_families = nullptr);
|
|
42
|
+
|
|
43
|
+
int RunAndReturn(
|
|
44
|
+
int argc, char** argv, const Options& db_options = Options(),
|
|
45
|
+
const LDBOptions& ldb_options = LDBOptions(),
|
|
46
|
+
const std::vector<ColumnFamilyDescriptor>* column_families = nullptr);
|
|
39
47
|
};
|
|
40
48
|
|
|
41
49
|
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
#include <stdint.h>
|
|
39
39
|
#include <stdlib.h>
|
|
40
40
|
|
|
41
|
+
#include <functional>
|
|
41
42
|
#include <memory>
|
|
42
43
|
#include <stdexcept>
|
|
43
44
|
#include <unordered_set>
|
|
@@ -201,11 +202,12 @@ class MemTableRep {
|
|
|
201
202
|
bool (*callback_func)(void* arg, const char* entry));
|
|
202
203
|
|
|
203
204
|
// Same as Get() but performs data integrity validation.
|
|
204
|
-
virtual Status GetAndValidate(
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
205
|
+
virtual Status GetAndValidate(
|
|
206
|
+
const LookupKey& /* k */, void* /* callback_args */,
|
|
207
|
+
bool (* /* callback_func */)(void* arg, const char* entry),
|
|
208
|
+
bool /* allow_data_in_error */, bool /* detect_key_out_of_order */,
|
|
209
|
+
const std::function<Status(const char*, bool)>&
|
|
210
|
+
/* key_validation_callback */) {
|
|
209
211
|
return Status::NotSupported("GetAndValidate() not implemented.");
|
|
210
212
|
}
|
|
211
213
|
|
|
@@ -276,9 +278,11 @@ class MemTableRep {
|
|
|
276
278
|
// Seek and perform integrity validations on the skip list.
|
|
277
279
|
// Iterator becomes invalid and Corruption is returned if a
|
|
278
280
|
// corruption is found.
|
|
279
|
-
virtual Status SeekAndValidate(
|
|
280
|
-
|
|
281
|
-
|
|
281
|
+
virtual Status SeekAndValidate(
|
|
282
|
+
const Slice& /* internal_key */, const char* /* memtable_key */,
|
|
283
|
+
bool /* allow_data_in_errors */, bool /* detect_key_out_of_order */,
|
|
284
|
+
const std::function<Status(const char*, bool)>&
|
|
285
|
+
/* key_validation_callback */) {
|
|
282
286
|
return Status::NotSupported("SeekAndValidate() not implemented.");
|
|
283
287
|
}
|
|
284
288
|
|
|
@@ -239,6 +239,9 @@ struct ColumnFamilyMetaData {
|
|
|
239
239
|
// The name of the column family.
|
|
240
240
|
std::string name;
|
|
241
241
|
// The metadata of all levels in this column family.
|
|
242
|
+
// levels[i] contains files in level i.
|
|
243
|
+
// For level 0, files with recent updates are ordered first.
|
|
244
|
+
// For level 1+, files are ordered by increasing key range.
|
|
242
245
|
std::vector<LevelMetaData> levels;
|
|
243
246
|
|
|
244
247
|
// The total size of all blob files
|
|
@@ -97,7 +97,13 @@ class Scan {
|
|
|
97
97
|
|
|
98
98
|
ScanIterator() : db_iter_(nullptr), valid_(false) {}
|
|
99
99
|
|
|
100
|
-
~ScanIterator() {
|
|
100
|
+
~ScanIterator() {
|
|
101
|
+
if (!status_.ok()) {
|
|
102
|
+
fprintf(stderr, "ScanIterator status: %s\n",
|
|
103
|
+
status_.ToString().c_str());
|
|
104
|
+
assert(false);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
101
107
|
|
|
102
108
|
ScanIterator& operator++() {
|
|
103
109
|
if (!valid_) {
|
|
@@ -152,12 +158,12 @@ class Scan {
|
|
|
152
158
|
// A Status exception is thrown if there is an error.
|
|
153
159
|
class MultiScan {
|
|
154
160
|
public:
|
|
155
|
-
MultiScan(const ReadOptions& read_options,
|
|
156
|
-
|
|
157
|
-
ColumnFamilyHandle* cfh);
|
|
161
|
+
MultiScan(const ReadOptions& read_options, const MultiScanArgs& scan_opts,
|
|
162
|
+
DB* db, ColumnFamilyHandle* cfh);
|
|
158
163
|
|
|
159
|
-
explicit MultiScan(
|
|
160
|
-
|
|
164
|
+
explicit MultiScan(const Comparator* comp,
|
|
165
|
+
std::unique_ptr<Iterator>&& db_iter)
|
|
166
|
+
: scan_opts_(comp), db_iter_(std::move(db_iter)) {}
|
|
161
167
|
|
|
162
168
|
class MultiScanIterator {
|
|
163
169
|
public:
|
|
@@ -185,6 +191,10 @@ class MultiScan {
|
|
|
185
191
|
if (scan_opts_.empty()) {
|
|
186
192
|
throw std::logic_error("Zero scans in multi-scan");
|
|
187
193
|
}
|
|
194
|
+
status_ = db_iter_->status();
|
|
195
|
+
if (!status_.ok()) {
|
|
196
|
+
throw MultiScanException(status_);
|
|
197
|
+
}
|
|
188
198
|
db_iter_->Seek(*scan_opts_[idx_].range.start);
|
|
189
199
|
status_ = db_iter_->status();
|
|
190
200
|
if (!status_.ok()) {
|
|
@@ -220,15 +230,15 @@ class MultiScan {
|
|
|
220
230
|
};
|
|
221
231
|
|
|
222
232
|
MultiScanIterator begin() {
|
|
223
|
-
return MultiScanIterator(scan_opts_, db_, cfh_,
|
|
224
|
-
&upper_bound_, db_iter_);
|
|
233
|
+
return MultiScanIterator(scan_opts_.GetScanRanges(), db_, cfh_,
|
|
234
|
+
read_options_, &upper_bound_, db_iter_);
|
|
225
235
|
}
|
|
226
236
|
|
|
227
237
|
std::nullptr_t end() { return nullptr; }
|
|
228
238
|
|
|
229
239
|
private:
|
|
230
240
|
ReadOptions read_options_;
|
|
231
|
-
const
|
|
241
|
+
const MultiScanArgs scan_opts_;
|
|
232
242
|
DB* db_;
|
|
233
243
|
ColumnFamilyHandle* cfh_;
|
|
234
244
|
Slice upper_bound_;
|