@nxtedition/rocksdb 7.0.0-alpha.6 → 7.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 +37 -36
- package/deps/rocksdb/rocksdb/CMakeLists.txt +10 -3
- package/deps/rocksdb/rocksdb/Makefile +8 -1
- package/deps/rocksdb/rocksdb/TARGETS +14 -0
- package/deps/rocksdb/rocksdb/cache/cache.cc +50 -2
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +9 -3
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +111 -33
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +71 -31
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +31 -30
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +21 -8
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +35 -38
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +22 -9
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +48 -0
- package/deps/rocksdb/rocksdb/db/blob/db_blob_compaction_test.cc +78 -0
- package/deps/rocksdb/rocksdb/db/builder.cc +7 -5
- package/deps/rocksdb/rocksdb/db/c.cc +777 -108
- package/deps/rocksdb/rocksdb/db/c_test.c +290 -30
- package/deps/rocksdb/rocksdb/db/column_family.cc +13 -0
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +24 -36
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +18 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +24 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +6 -9
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +38 -40
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +14 -17
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +3 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +253 -24
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +9 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +67 -10
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +83 -7
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +5 -2
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +68 -0
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +40 -1
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +94 -23
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +17 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +263 -58
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +186 -23
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +43 -14
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +24 -28
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +116 -83
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +13 -5
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +71 -34
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +8 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +72 -33
- package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +629 -0
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +438 -10
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +43 -2
- package/deps/rocksdb/rocksdb/db/db_test.cc +41 -1
- package/deps/rocksdb/rocksdb/db/db_test2.cc +41 -12
- package/deps/rocksdb/rocksdb/db/db_test_util.h +1 -0
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +90 -0
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +109 -16
- package/deps/rocksdb/rocksdb/db/dbformat.h +1 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +54 -0
- package/deps/rocksdb/rocksdb/db/flush_job.cc +3 -3
- package/deps/rocksdb/rocksdb/db/log_reader.cc +22 -4
- package/deps/rocksdb/rocksdb/db/log_reader.h +4 -0
- package/deps/rocksdb/rocksdb/db/memtable.cc +4 -0
- package/deps/rocksdb/rocksdb/db/post_memtable_callback.h +25 -0
- package/deps/rocksdb/rocksdb/db/repair.cc +1 -1
- package/deps/rocksdb/rocksdb/db/repair_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/snapshot_impl.h +65 -2
- package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +3 -2
- package/deps/rocksdb/rocksdb/db/version_set.cc +52 -0
- package/deps/rocksdb/rocksdb/db/version_set.h +57 -43
- package/deps/rocksdb/rocksdb/db/wal_manager.cc +14 -4
- package/deps/rocksdb/rocksdb/db/wal_manager.h +16 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +141 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +55 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +292 -0
- package/deps/rocksdb/rocksdb/db/write_thread.h +6 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +2 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +42 -19
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +28 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +6 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +11 -5
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +18 -12
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +74 -167
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +4 -9
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +16 -9
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +117 -10
- package/deps/rocksdb/rocksdb/env/composite_env.cc +7 -0
- package/deps/rocksdb/rocksdb/env/env.cc +4 -0
- package/deps/rocksdb/rocksdb/env/env_posix.cc +3 -3
- package/deps/rocksdb/rocksdb/env/env_test.cc +5 -5
- package/deps/rocksdb/rocksdb/env/file_system_tracer.cc +45 -0
- package/deps/rocksdb/rocksdb/env/file_system_tracer.h +14 -0
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +1 -1
- package/deps/rocksdb/rocksdb/env/io_posix.cc +50 -24
- package/deps/rocksdb/rocksdb/env/io_posix.h +9 -7
- package/deps/rocksdb/rocksdb/env/mock_env.cc +9 -3
- package/deps/rocksdb/rocksdb/file/file_util.cc +4 -1
- package/deps/rocksdb/rocksdb/file/filename.cc +14 -0
- package/deps/rocksdb/rocksdb/file/line_file_reader.cc +9 -4
- package/deps/rocksdb/rocksdb/file/line_file_reader.h +3 -2
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +157 -0
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +8 -1
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +68 -32
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +20 -6
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +10 -6
- package/deps/rocksdb/rocksdb/file/writable_file_writer.h +4 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +16 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +231 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +4 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +13 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/io_status.h +4 -20
- package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +31 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/snapshot.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +4 -20
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/trace_record.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +34 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +36 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/wide_columns.h +74 -0
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger.cc +36 -3
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +16 -3
- package/deps/rocksdb/rocksdb/logging/env_logger.h +3 -3
- package/deps/rocksdb/rocksdb/logging/log_buffer.cc +2 -2
- package/deps/rocksdb/rocksdb/logging/log_buffer.h +1 -1
- package/deps/rocksdb/rocksdb/logging/posix_logger.h +3 -3
- package/deps/rocksdb/rocksdb/memory/arena.cc +0 -1
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +61 -73
- package/deps/rocksdb/rocksdb/monitoring/histogram.cc +6 -5
- package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +6 -0
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +7 -3
- package/deps/rocksdb/rocksdb/options/cf_options.cc +6 -0
- package/deps/rocksdb/rocksdb/options/cf_options.h +3 -0
- package/deps/rocksdb/rocksdb/options/options.cc +4 -1
- package/deps/rocksdb/rocksdb/options/options_helper.cc +1 -0
- package/deps/rocksdb/rocksdb/options/options_parser.cc +1 -1
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +1 -0
- package/deps/rocksdb/rocksdb/options/options_test.cc +4 -0
- package/deps/rocksdb/rocksdb/port/port_posix.h +0 -2
- package/deps/rocksdb/rocksdb/port/sys_time.h +27 -11
- package/deps/rocksdb/rocksdb/port/win/env_win.cc +1 -1
- package/deps/rocksdb/rocksdb/port/win/io_win.cc +16 -0
- package/deps/rocksdb/rocksdb/port/win/io_win.h +11 -2
- package/deps/rocksdb/rocksdb/port/win/port_win.cc +1 -1
- package/deps/rocksdb/rocksdb/port/win/port_win.h +2 -16
- package/deps/rocksdb/rocksdb/port/win/win_jemalloc.cc +2 -2
- package/deps/rocksdb/rocksdb/port/win/win_logger.cc +2 -2
- package/deps/rocksdb/rocksdb/rocksdb.pc.in +4 -5
- package/deps/rocksdb/rocksdb/src.mk +3 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +7 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +39 -43
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +2 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +42 -34
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +1 -7
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_like_traits.h +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_prefix_index.cc +7 -13
- package/deps/rocksdb/rocksdb/table/block_based/block_prefix_index.h +9 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_type.h +5 -2
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +4 -4
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +6 -2
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +8 -5
- package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +19 -14
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +2 -0
- package/deps/rocksdb/rocksdb/table/format.h +1 -3
- package/deps/rocksdb/rocksdb/table/get_context.cc +5 -0
- package/deps/rocksdb/rocksdb/table/multiget_context.h +3 -0
- package/deps/rocksdb/rocksdb/table/scoped_arena_iterator.h +3 -4
- package/deps/rocksdb/rocksdb/table/table_test.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +102 -6
- package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +19 -2
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +2 -1
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +2 -1
- package/deps/rocksdb/rocksdb/util/aligned_buffer.h +2 -4
- package/deps/rocksdb/rocksdb/util/autovector.h +11 -1
- package/deps/rocksdb/rocksdb/util/cleanable.cc +1 -0
- package/deps/rocksdb/rocksdb/util/compression.h +5 -7
- package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +14 -8
- package/deps/rocksdb/rocksdb/util/string_util.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +33 -63
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +3 -2
- package/deps/rocksdb/rocksdb/utilities/counted_fs.cc +14 -0
- package/deps/rocksdb/rocksdb/utilities/counted_fs.h +7 -1
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.cc +7 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +8 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +3 -0
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_bench.cc +6 -4
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +2 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +34 -21
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +31 -7
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +63 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.h +40 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/timestamped_snapshot_test.cc +426 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +37 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +6 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +16 -18
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +18 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +61 -0
- package/deps/rocksdb/rocksdb.gyp +1 -0
- package/index.js +5 -2
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/darwin-x64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
|
@@ -100,7 +100,8 @@ AdvancedColumnFamilyOptions::AdvancedColumnFamilyOptions(const Options& options)
|
|
|
100
100
|
options.blob_garbage_collection_age_cutoff),
|
|
101
101
|
blob_garbage_collection_force_threshold(
|
|
102
102
|
options.blob_garbage_collection_force_threshold),
|
|
103
|
-
blob_compaction_readahead_size(options.blob_compaction_readahead_size)
|
|
103
|
+
blob_compaction_readahead_size(options.blob_compaction_readahead_size),
|
|
104
|
+
blob_file_starting_level(options.blob_file_starting_level) {
|
|
104
105
|
assert(memtable_factory.get() != nullptr);
|
|
105
106
|
if (max_bytes_for_level_multiplier_additional.size() <
|
|
106
107
|
static_cast<unsigned int>(num_levels)) {
|
|
@@ -414,6 +415,8 @@ void ColumnFamilyOptions::Dump(Logger* log) const {
|
|
|
414
415
|
ROCKS_LOG_HEADER(
|
|
415
416
|
log, " Options.blob_compaction_readahead_size: %" PRIu64,
|
|
416
417
|
blob_compaction_readahead_size);
|
|
418
|
+
ROCKS_LOG_HEADER(log, " Options.blob_file_starting_level: %d",
|
|
419
|
+
blob_file_starting_level);
|
|
417
420
|
} // ColumnFamilyOptions::Dump
|
|
418
421
|
|
|
419
422
|
void Options::Dump(Logger* log) const {
|
|
@@ -254,6 +254,7 @@ void UpdateColumnFamilyOptions(const MutableCFOptions& moptions,
|
|
|
254
254
|
moptions.blob_garbage_collection_force_threshold;
|
|
255
255
|
cf_opts->blob_compaction_readahead_size =
|
|
256
256
|
moptions.blob_compaction_readahead_size;
|
|
257
|
+
cf_opts->blob_file_starting_level = moptions.blob_file_starting_level;
|
|
257
258
|
|
|
258
259
|
// Misc options
|
|
259
260
|
cf_opts->max_sequential_skip_in_iterations =
|
|
@@ -271,7 +271,7 @@ Status RocksDBOptionsParser::Parse(const ConfigOptions& config_options_in,
|
|
|
271
271
|
std::unordered_map<std::string, std::string> opt_map;
|
|
272
272
|
std::string line;
|
|
273
273
|
// we only support single-lined statement.
|
|
274
|
-
while (lf_reader.ReadLine(&line)) {
|
|
274
|
+
while (lf_reader.ReadLine(&line, Env::IO_TOTAL /* rate_limiter_priority */)) {
|
|
275
275
|
int line_num = static_cast<int>(lf_reader.GetLineNumber());
|
|
276
276
|
line = TrimAndRemoveComment(line);
|
|
277
277
|
if (line.empty()) {
|
|
@@ -520,6 +520,7 @@ TEST_F(OptionsSettableTest, ColumnFamilyOptionsAllFieldsSettable) {
|
|
|
520
520
|
"blob_garbage_collection_age_cutoff=0.5;"
|
|
521
521
|
"blob_garbage_collection_force_threshold=0.75;"
|
|
522
522
|
"blob_compaction_readahead_size=262144;"
|
|
523
|
+
"blob_file_starting_level=1;"
|
|
523
524
|
"bottommost_temperature=kWarm;"
|
|
524
525
|
"compaction_options_fifo={max_table_files_size=3;allow_"
|
|
525
526
|
"compaction=false;age_for_warm=1;};",
|
|
@@ -109,6 +109,7 @@ TEST_F(OptionsTest, GetOptionsFromMapTest) {
|
|
|
109
109
|
{"blob_garbage_collection_age_cutoff", "0.5"},
|
|
110
110
|
{"blob_garbage_collection_force_threshold", "0.75"},
|
|
111
111
|
{"blob_compaction_readahead_size", "256K"},
|
|
112
|
+
{"blob_file_starting_level", "1"},
|
|
112
113
|
{"bottommost_temperature", "kWarm"},
|
|
113
114
|
};
|
|
114
115
|
|
|
@@ -247,6 +248,7 @@ TEST_F(OptionsTest, GetOptionsFromMapTest) {
|
|
|
247
248
|
ASSERT_EQ(new_cf_opt.blob_garbage_collection_age_cutoff, 0.5);
|
|
248
249
|
ASSERT_EQ(new_cf_opt.blob_garbage_collection_force_threshold, 0.75);
|
|
249
250
|
ASSERT_EQ(new_cf_opt.blob_compaction_readahead_size, 262144);
|
|
251
|
+
ASSERT_EQ(new_cf_opt.blob_file_starting_level, 1);
|
|
250
252
|
ASSERT_EQ(new_cf_opt.bottommost_temperature, Temperature::kWarm);
|
|
251
253
|
|
|
252
254
|
cf_options_map["write_buffer_size"] = "hello";
|
|
@@ -2330,6 +2332,7 @@ TEST_F(OptionsOldApiTest, GetOptionsFromMapTest) {
|
|
|
2330
2332
|
{"blob_garbage_collection_age_cutoff", "0.5"},
|
|
2331
2333
|
{"blob_garbage_collection_force_threshold", "0.75"},
|
|
2332
2334
|
{"blob_compaction_readahead_size", "256K"},
|
|
2335
|
+
{"blob_file_starting_level", "1"},
|
|
2333
2336
|
{"bottommost_temperature", "kWarm"},
|
|
2334
2337
|
};
|
|
2335
2338
|
|
|
@@ -2462,6 +2465,7 @@ TEST_F(OptionsOldApiTest, GetOptionsFromMapTest) {
|
|
|
2462
2465
|
ASSERT_EQ(new_cf_opt.blob_garbage_collection_age_cutoff, 0.5);
|
|
2463
2466
|
ASSERT_EQ(new_cf_opt.blob_garbage_collection_force_threshold, 0.75);
|
|
2464
2467
|
ASSERT_EQ(new_cf_opt.blob_compaction_readahead_size, 262144);
|
|
2468
|
+
ASSERT_EQ(new_cf_opt.blob_file_starting_level, 1);
|
|
2465
2469
|
ASSERT_EQ(new_cf_opt.bottommost_temperature, Temperature::kWarm);
|
|
2466
2470
|
|
|
2467
2471
|
cf_options_map["write_buffer_size"] = "hello";
|
|
@@ -12,36 +12,52 @@
|
|
|
12
12
|
|
|
13
13
|
#pragma once
|
|
14
14
|
|
|
15
|
-
#
|
|
15
|
+
#include "rocksdb/rocksdb_namespace.h"
|
|
16
16
|
|
|
17
|
-
#
|
|
17
|
+
#if defined(OS_WIN) && (defined(_MSC_VER) || defined(__MINGW32__))
|
|
18
18
|
|
|
19
|
-
#include
|
|
19
|
+
#include <time.h>
|
|
20
20
|
|
|
21
21
|
namespace ROCKSDB_NAMESPACE {
|
|
22
22
|
|
|
23
23
|
namespace port {
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
struct timeval {
|
|
25
|
+
struct TimeVal {
|
|
27
26
|
long tv_sec;
|
|
28
27
|
long tv_usec;
|
|
29
28
|
};
|
|
30
29
|
|
|
31
|
-
void
|
|
30
|
+
void GetTimeOfDay(TimeVal* tv, struct timezone* tz);
|
|
32
31
|
|
|
33
|
-
inline struct tm*
|
|
32
|
+
inline struct tm* LocalTimeR(const time_t* timep, struct tm* result) {
|
|
34
33
|
errno_t ret = localtime_s(result, timep);
|
|
35
34
|
return (ret == 0) ? result : NULL;
|
|
36
35
|
}
|
|
37
|
-
}
|
|
38
36
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
using port::localtime_r;
|
|
37
|
+
} // namespace port
|
|
38
|
+
|
|
42
39
|
} // namespace ROCKSDB_NAMESPACE
|
|
43
40
|
|
|
44
41
|
#else
|
|
45
42
|
#include <time.h>
|
|
46
43
|
#include <sys/time.h>
|
|
44
|
+
|
|
45
|
+
namespace ROCKSDB_NAMESPACE {
|
|
46
|
+
|
|
47
|
+
namespace port {
|
|
48
|
+
|
|
49
|
+
using TimeVal = struct timeval;
|
|
50
|
+
|
|
51
|
+
inline void GetTimeOfDay(TimeVal* tv, struct timezone* tz) {
|
|
52
|
+
gettimeofday(tv, tz);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
inline struct tm* LocalTimeR(const time_t* timep, struct tm* result) {
|
|
56
|
+
return localtime_r(timep, result);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
} // namespace port
|
|
60
|
+
|
|
61
|
+
} // namespace ROCKSDB_NAMESPACE
|
|
62
|
+
|
|
47
63
|
#endif
|
|
@@ -1064,6 +1064,22 @@ IOStatus WinDirectory::Fsync(const IOOptions& /*options*/,
|
|
|
1064
1064
|
return IOStatus::OK();
|
|
1065
1065
|
}
|
|
1066
1066
|
|
|
1067
|
+
IOStatus WinDirectory::Close(const IOOptions& /*options*/,
|
|
1068
|
+
IODebugContext* /*dbg*/) {
|
|
1069
|
+
IOStatus s = IOStatus::OK();
|
|
1070
|
+
BOOL ret __attribute__((__unused__));
|
|
1071
|
+
if (handle_ != INVALID_HANDLE_VALUE) {
|
|
1072
|
+
ret = ::CloseHandle(handle_);
|
|
1073
|
+
if (!ret) {
|
|
1074
|
+
auto lastError = GetLastError();
|
|
1075
|
+
s = IOErrorFromWindowsError("Directory closes failed for : " + GetName(),
|
|
1076
|
+
lastError);
|
|
1077
|
+
}
|
|
1078
|
+
handle_ = NULL;
|
|
1079
|
+
}
|
|
1080
|
+
return s;
|
|
1081
|
+
}
|
|
1082
|
+
|
|
1067
1083
|
size_t WinDirectory::GetUniqueId(char* id, size_t max_size) const {
|
|
1068
1084
|
return GetUniqueIdFromFile(handle_, id, max_size);
|
|
1069
1085
|
}
|
|
@@ -472,14 +472,23 @@ class WinMemoryMappedBuffer : public MemoryMappedFileBuffer {
|
|
|
472
472
|
};
|
|
473
473
|
|
|
474
474
|
class WinDirectory : public FSDirectory {
|
|
475
|
+
const std::string filename_;
|
|
475
476
|
HANDLE handle_;
|
|
476
477
|
|
|
477
478
|
public:
|
|
478
|
-
explicit WinDirectory(
|
|
479
|
+
explicit WinDirectory(const std::string& filename, HANDLE h) noexcept
|
|
480
|
+
: filename_(filename), handle_(h) {
|
|
479
481
|
assert(handle_ != INVALID_HANDLE_VALUE);
|
|
480
482
|
}
|
|
481
|
-
~WinDirectory() {
|
|
483
|
+
~WinDirectory() {
|
|
484
|
+
if (handle_ != NULL) {
|
|
485
|
+
IOStatus s = WinDirectory::Close(IOOptions(), nullptr);
|
|
486
|
+
s.PermitUncheckedError();
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
const std::string& GetName() const { return filename_; }
|
|
482
490
|
IOStatus Fsync(const IOOptions& options, IODebugContext* dbg) override;
|
|
491
|
+
IOStatus Close(const IOOptions& options, IODebugContext* dbg) override;
|
|
483
492
|
|
|
484
493
|
size_t GetUniqueId(char* id, size_t max_size) const override;
|
|
485
494
|
};
|
|
@@ -52,7 +52,7 @@ std::wstring utf8_to_utf16(const std::string& utf8) {
|
|
|
52
52
|
}
|
|
53
53
|
#endif
|
|
54
54
|
|
|
55
|
-
void
|
|
55
|
+
void GetTimeOfDay(TimeVal* tv, struct timezone* /* tz */) {
|
|
56
56
|
std::chrono::microseconds usNow(
|
|
57
57
|
std::chrono::duration_cast<std::chrono::microseconds>(
|
|
58
58
|
std::chrono::system_clock::now().time_since_epoch()));
|
|
@@ -70,20 +70,6 @@ extern const bool kDefaultToAdaptiveMutex;
|
|
|
70
70
|
|
|
71
71
|
namespace port {
|
|
72
72
|
|
|
73
|
-
// VS < 2015
|
|
74
|
-
#if defined(_MSC_VER) && (_MSC_VER < 1900)
|
|
75
|
-
|
|
76
|
-
// VS 15 has snprintf
|
|
77
|
-
#define snprintf _snprintf
|
|
78
|
-
|
|
79
|
-
#define ROCKSDB_NOEXCEPT
|
|
80
|
-
|
|
81
|
-
#else // VS >= 2015 or MinGW
|
|
82
|
-
|
|
83
|
-
#define ROCKSDB_NOEXCEPT noexcept
|
|
84
|
-
|
|
85
|
-
#endif //_MSC_VER
|
|
86
|
-
|
|
87
73
|
// "Windows is designed to run on little-endian computer architectures."
|
|
88
74
|
// https://docs.microsoft.com/en-us/windows/win32/sysinfo/registry-value-types
|
|
89
75
|
constexpr bool kLittleEndian = true;
|
|
@@ -230,8 +216,8 @@ extern void InitOnce(OnceType* once, void (*initializer)());
|
|
|
230
216
|
|
|
231
217
|
#ifdef ROCKSDB_JEMALLOC
|
|
232
218
|
// Separate inlines so they can be replaced if needed
|
|
233
|
-
void* jemalloc_aligned_alloc(size_t size, size_t alignment)
|
|
234
|
-
void jemalloc_aligned_free(void* p)
|
|
219
|
+
void* jemalloc_aligned_alloc(size_t size, size_t alignment) noexcept;
|
|
220
|
+
void jemalloc_aligned_free(void* p) noexcept;
|
|
235
221
|
#endif
|
|
236
222
|
|
|
237
223
|
inline void *cacheline_aligned_alloc(size_t size) {
|
|
@@ -41,10 +41,10 @@ ZSTD_customMem GetJeZstdAllocationOverrides() {
|
|
|
41
41
|
|
|
42
42
|
namespace ROCKSDB_NAMESPACE {
|
|
43
43
|
namespace port {
|
|
44
|
-
void* jemalloc_aligned_alloc(size_t size, size_t alignment)
|
|
44
|
+
void* jemalloc_aligned_alloc(size_t size, size_t alignment) noexcept {
|
|
45
45
|
return je_aligned_alloc(alignment, size);
|
|
46
46
|
}
|
|
47
|
-
void jemalloc_aligned_free(void* p)
|
|
47
|
+
void jemalloc_aligned_free(void* p) noexcept { je_free(p); }
|
|
48
48
|
} // namespace port
|
|
49
49
|
} // namespace ROCKSDB_NAMESPACE
|
|
50
50
|
|
|
@@ -118,8 +118,8 @@ void WinLogger::Logv(const char* format, va_list ap) {
|
|
|
118
118
|
char* p = base;
|
|
119
119
|
char* limit = base + bufsize;
|
|
120
120
|
|
|
121
|
-
|
|
122
|
-
|
|
121
|
+
port::TimeVal now_tv;
|
|
122
|
+
port::GetTimeOfDay(&now_tv, nullptr);
|
|
123
123
|
const time_t seconds = now_tv.tv_sec;
|
|
124
124
|
struct tm t;
|
|
125
125
|
localtime_s(&t, &seconds);
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
prefix="@CMAKE_INSTALL_PREFIX@"
|
|
2
|
-
|
|
3
|
-
libdir="${prefix}
|
|
4
|
-
includedir="${prefix}/include"
|
|
2
|
+
includedir="${prefix}/@CMAKE_INSTALL_INCLUDEDIR@"
|
|
3
|
+
libdir="${prefix}/@CMAKE_INSTALL_LIBDIR@"
|
|
5
4
|
|
|
6
5
|
Name: @PROJECT_NAME@
|
|
7
|
-
Description: @
|
|
8
|
-
URL: @
|
|
6
|
+
Description: @PROJECT_DESCRIPTION@
|
|
7
|
+
URL: @PROJECT_HOMEPAGE_URL@
|
|
9
8
|
Version: @PROJECT_VERSION@
|
|
10
9
|
Cflags: -I"${includedir}"
|
|
11
10
|
Libs: -L"${libdir}" -lrocksdb
|
|
@@ -82,6 +82,7 @@ LIB_SOURCES = \
|
|
|
82
82
|
db/version_set.cc \
|
|
83
83
|
db/wal_edit.cc \
|
|
84
84
|
db/wal_manager.cc \
|
|
85
|
+
db/wide/wide_column_serialization.cc \
|
|
85
86
|
db/write_batch.cc \
|
|
86
87
|
db/write_batch_base.cc \
|
|
87
88
|
db/write_controller.cc \
|
|
@@ -497,6 +498,7 @@ TEST_MAIN_SOURCES = \
|
|
|
497
498
|
db/version_edit_test.cc \
|
|
498
499
|
db/version_set_test.cc \
|
|
499
500
|
db/wal_manager_test.cc \
|
|
501
|
+
db/wide/wide_column_serialization_test.cc \
|
|
500
502
|
db/write_batch_test.cc \
|
|
501
503
|
db/write_callback_test.cc \
|
|
502
504
|
db/write_controller_test.cc \
|
|
@@ -592,6 +594,7 @@ TEST_MAIN_SOURCES = \
|
|
|
592
594
|
utilities/transactions/write_prepared_transaction_test.cc \
|
|
593
595
|
utilities/transactions/write_unprepared_transaction_test.cc \
|
|
594
596
|
utilities/transactions/write_committed_transaction_ts_test.cc \
|
|
597
|
+
utilities/transactions/timestamped_snapshot_test.cc \
|
|
595
598
|
utilities/ttl/ttl_test.cc \
|
|
596
599
|
utilities/util_merge_operators_test.cc \
|
|
597
600
|
utilities/write_batch_with_index/write_batch_with_index_test.cc \
|
|
@@ -187,9 +187,9 @@ std::unique_ptr<FilterBlockReader> BlockBasedFilterBlockReader::Create(
|
|
|
187
187
|
|
|
188
188
|
CachableEntry<BlockContents> filter_block;
|
|
189
189
|
if (prefetch || !use_cache) {
|
|
190
|
-
const Status s = ReadFilterBlock(
|
|
191
|
-
|
|
192
|
-
|
|
190
|
+
const Status s = ReadFilterBlock(
|
|
191
|
+
table, prefetch_buffer, ro, use_cache, nullptr /* get_context */,
|
|
192
|
+
lookup_context, &filter_block, BlockType::kDeprecatedFilter);
|
|
193
193
|
if (!s.ok()) {
|
|
194
194
|
IGNORE_STATUS_IF_ERROR(s);
|
|
195
195
|
return std::unique_ptr<FilterBlockReader>();
|
|
@@ -257,7 +257,8 @@ bool BlockBasedFilterBlockReader::MayMatch(
|
|
|
257
257
|
CachableEntry<BlockContents> filter_block;
|
|
258
258
|
|
|
259
259
|
const Status s =
|
|
260
|
-
GetOrReadFilterBlock(no_io, get_context, lookup_context, &filter_block
|
|
260
|
+
GetOrReadFilterBlock(no_io, get_context, lookup_context, &filter_block,
|
|
261
|
+
BlockType::kDeprecatedFilter);
|
|
261
262
|
if (!s.ok()) {
|
|
262
263
|
IGNORE_STATUS_IF_ERROR(s);
|
|
263
264
|
return true;
|
|
@@ -316,7 +317,8 @@ std::string BlockBasedFilterBlockReader::ToString() const {
|
|
|
316
317
|
|
|
317
318
|
const Status s =
|
|
318
319
|
GetOrReadFilterBlock(false /* no_io */, nullptr /* get_context */,
|
|
319
|
-
nullptr /* lookup_context */, &filter_block
|
|
320
|
+
nullptr /* lookup_context */, &filter_block,
|
|
321
|
+
BlockType::kDeprecatedFilter);
|
|
320
322
|
if (!s.ok()) {
|
|
321
323
|
IGNORE_STATUS_IF_ERROR(s);
|
|
322
324
|
return std::string("Unable to retrieve filter block");
|
|
@@ -1250,8 +1250,7 @@ void BlockBasedTableBuilder::WriteRawBlock(const Slice& block_contents,
|
|
|
1250
1250
|
CompressionType type,
|
|
1251
1251
|
BlockHandle* handle,
|
|
1252
1252
|
BlockType block_type,
|
|
1253
|
-
const Slice* raw_block_contents
|
|
1254
|
-
bool is_top_level_filter_block) {
|
|
1253
|
+
const Slice* raw_block_contents) {
|
|
1255
1254
|
Rep* r = rep_;
|
|
1256
1255
|
bool is_data_block = block_type == BlockType::kData;
|
|
1257
1256
|
StopWatch sw(r->ioptions.clock, r->ioptions.stats, WRITE_RAW_BLOCK_MICROS);
|
|
@@ -1311,11 +1310,9 @@ void BlockBasedTableBuilder::WriteRawBlock(const Slice& block_contents,
|
|
|
1311
1310
|
}
|
|
1312
1311
|
if (warm_cache) {
|
|
1313
1312
|
if (type == kNoCompression) {
|
|
1314
|
-
s = InsertBlockInCacheHelper(block_contents, handle, block_type
|
|
1315
|
-
is_top_level_filter_block);
|
|
1313
|
+
s = InsertBlockInCacheHelper(block_contents, handle, block_type);
|
|
1316
1314
|
} else if (raw_block_contents != nullptr) {
|
|
1317
|
-
s = InsertBlockInCacheHelper(*raw_block_contents, handle, block_type
|
|
1318
|
-
is_top_level_filter_block);
|
|
1315
|
+
s = InsertBlockInCacheHelper(*raw_block_contents, handle, block_type);
|
|
1319
1316
|
}
|
|
1320
1317
|
if (!s.ok()) {
|
|
1321
1318
|
r->SetStatus(s);
|
|
@@ -1491,25 +1488,28 @@ Status BlockBasedTableBuilder::InsertBlockInCompressedCache(
|
|
|
1491
1488
|
|
|
1492
1489
|
Status BlockBasedTableBuilder::InsertBlockInCacheHelper(
|
|
1493
1490
|
const Slice& block_contents, const BlockHandle* handle,
|
|
1494
|
-
BlockType block_type
|
|
1491
|
+
BlockType block_type) {
|
|
1495
1492
|
Status s;
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
// for block-based filter which is deprecated.
|
|
1501
|
-
s = InsertBlockInCache<BlockContents>(block_contents, handle, block_type);
|
|
1502
|
-
} else if (is_top_level_filter_block) {
|
|
1503
|
-
// for top level filter block in partitioned filter.
|
|
1493
|
+
switch (block_type) {
|
|
1494
|
+
case BlockType::kData:
|
|
1495
|
+
case BlockType::kIndex:
|
|
1496
|
+
case BlockType::kFilterPartitionIndex:
|
|
1504
1497
|
s = InsertBlockInCache<Block>(block_contents, handle, block_type);
|
|
1505
|
-
|
|
1506
|
-
|
|
1498
|
+
break;
|
|
1499
|
+
case BlockType::kDeprecatedFilter:
|
|
1500
|
+
s = InsertBlockInCache<BlockContents>(block_contents, handle, block_type);
|
|
1501
|
+
break;
|
|
1502
|
+
case BlockType::kFilter:
|
|
1507
1503
|
s = InsertBlockInCache<ParsedFullFilterBlock>(block_contents, handle,
|
|
1508
1504
|
block_type);
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1505
|
+
break;
|
|
1506
|
+
case BlockType::kCompressionDictionary:
|
|
1507
|
+
s = InsertBlockInCache<UncompressionDict>(block_contents, handle,
|
|
1508
|
+
block_type);
|
|
1509
|
+
break;
|
|
1510
|
+
default:
|
|
1511
|
+
// no-op / not cached
|
|
1512
|
+
break;
|
|
1513
1513
|
}
|
|
1514
1514
|
return s;
|
|
1515
1515
|
}
|
|
@@ -1563,10 +1563,14 @@ Status BlockBasedTableBuilder::InsertBlockInCache(const Slice& block_contents,
|
|
|
1563
1563
|
|
|
1564
1564
|
void BlockBasedTableBuilder::WriteFilterBlock(
|
|
1565
1565
|
MetaIndexBuilder* meta_index_builder) {
|
|
1566
|
+
if (rep_->filter_builder == nullptr || rep_->filter_builder->IsEmpty()) {
|
|
1567
|
+
// No filter block needed
|
|
1568
|
+
return;
|
|
1569
|
+
}
|
|
1566
1570
|
BlockHandle filter_block_handle;
|
|
1567
|
-
bool
|
|
1568
|
-
|
|
1569
|
-
if (ok()
|
|
1571
|
+
bool is_block_based_filter = rep_->filter_builder->IsBlockBased();
|
|
1572
|
+
bool is_partitioned_filter = rep_->table_options.partition_filters;
|
|
1573
|
+
if (ok()) {
|
|
1570
1574
|
rep_->props.num_filter_entries +=
|
|
1571
1575
|
rep_->filter_builder->EstimateEntriesAdded();
|
|
1572
1576
|
Status s = Status::Incomplete();
|
|
@@ -1591,31 +1595,23 @@ void BlockBasedTableBuilder::WriteFilterBlock(
|
|
|
1591
1595
|
|
|
1592
1596
|
rep_->props.filter_size += filter_content.size();
|
|
1593
1597
|
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
top_level_filter_block = true;
|
|
1601
|
-
}
|
|
1602
|
-
WriteRawBlock(filter_content, kNoCompression, &filter_block_handle,
|
|
1603
|
-
BlockType::kFilter, nullptr /*raw_contents*/,
|
|
1604
|
-
top_level_filter_block);
|
|
1598
|
+
BlockType btype = is_block_based_filter ? BlockType::kDeprecatedFilter
|
|
1599
|
+
: is_partitioned_filter && /* last */ s.ok()
|
|
1600
|
+
? BlockType::kFilterPartitionIndex
|
|
1601
|
+
: BlockType::kFilter;
|
|
1602
|
+
WriteRawBlock(filter_content, kNoCompression, &filter_block_handle, btype,
|
|
1603
|
+
nullptr /*raw_contents*/);
|
|
1605
1604
|
}
|
|
1606
1605
|
rep_->filter_builder->ResetFilterBitsBuilder();
|
|
1607
1606
|
}
|
|
1608
|
-
if (ok()
|
|
1607
|
+
if (ok()) {
|
|
1609
1608
|
// Add mapping from "<filter_block_prefix>.Name" to location
|
|
1610
1609
|
// of filter data.
|
|
1611
1610
|
std::string key;
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
? BlockBasedTable::kPartitionedFilterBlockPrefix
|
|
1617
|
-
: BlockBasedTable::kFullFilterBlockPrefix;
|
|
1618
|
-
}
|
|
1611
|
+
key = is_block_based_filter ? BlockBasedTable::kFilterBlockPrefix
|
|
1612
|
+
: is_partitioned_filter
|
|
1613
|
+
? BlockBasedTable::kPartitionedFilterBlockPrefix
|
|
1614
|
+
: BlockBasedTable::kFullFilterBlockPrefix;
|
|
1619
1615
|
key.append(rep_->table_options.filter_policy->CompatibilityName());
|
|
1620
1616
|
meta_index_builder->Add(key, filter_block_handle);
|
|
1621
1617
|
}
|
|
@@ -119,8 +119,7 @@ class BlockBasedTableBuilder : public TableBuilder {
|
|
|
119
119
|
BlockType block_type);
|
|
120
120
|
// Directly write data to the file.
|
|
121
121
|
void WriteRawBlock(const Slice& data, CompressionType, BlockHandle* handle,
|
|
122
|
-
BlockType block_type, const Slice* raw_data = nullptr
|
|
123
|
-
bool is_top_level_filter_block = false);
|
|
122
|
+
BlockType block_type, const Slice* raw_data = nullptr);
|
|
124
123
|
|
|
125
124
|
void SetupCacheKeyPrefix(const TableBuilderOptions& tbo);
|
|
126
125
|
|
|
@@ -130,8 +129,7 @@ class BlockBasedTableBuilder : public TableBuilder {
|
|
|
130
129
|
|
|
131
130
|
Status InsertBlockInCacheHelper(const Slice& block_contents,
|
|
132
131
|
const BlockHandle* handle,
|
|
133
|
-
BlockType block_type
|
|
134
|
-
bool is_top_level_filter_block);
|
|
132
|
+
BlockType block_type);
|
|
135
133
|
|
|
136
134
|
Status InsertBlockInCompressedCache(const Slice& block_contents,
|
|
137
135
|
const CompressionType type,
|