@nxtedition/rocksdb 15.1.2 → 15.1.4

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.
Files changed (154) hide show
  1. package/.claude/settings.local.json +15 -0
  2. package/binding.cc +79 -38
  3. package/build.sh +1 -2
  4. package/deps/rocksdb/rocksdb/BUCK +10 -8
  5. package/deps/rocksdb/rocksdb/CMakeLists.txt +27 -2
  6. package/deps/rocksdb/rocksdb/Makefile +27 -116
  7. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +1 -1
  8. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +101 -124
  9. package/deps/rocksdb/rocksdb/cache/clock_cache.h +47 -30
  10. package/deps/rocksdb/rocksdb/db/c.cc +793 -131
  11. package/deps/rocksdb/rocksdb/db/c_test.c +571 -0
  12. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +226 -0
  13. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +4 -0
  14. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +95 -59
  15. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +2 -2
  16. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +45 -35
  17. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +8 -4
  18. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +1 -1
  19. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +11 -6
  20. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +8 -2
  21. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +47 -0
  22. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +12 -2
  23. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +82 -0
  24. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +2 -2
  25. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +1 -1
  26. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +69 -24
  27. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +9 -1
  28. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +65 -0
  29. package/deps/rocksdb/rocksdb/db/db_etc3_test.cc +161 -0
  30. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +1 -0
  31. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +20 -7
  32. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +13 -0
  33. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +114 -39
  34. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +3 -0
  35. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +3 -3
  36. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +1 -1
  37. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +39 -25
  38. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +361 -0
  39. package/deps/rocksdb/rocksdb/db/db_options_test.cc +35 -0
  40. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +83 -0
  41. package/deps/rocksdb/rocksdb/db/db_test.cc +249 -4
  42. package/deps/rocksdb/rocksdb/db/db_test2.cc +3 -0
  43. package/deps/rocksdb/rocksdb/db/db_test_util.cc +2 -1
  44. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +3 -2
  45. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +7 -7
  46. package/deps/rocksdb/rocksdb/db/listener_test.cc +7 -17
  47. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +4 -2
  48. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +41 -0
  49. package/deps/rocksdb/rocksdb/db/repair.cc +2 -2
  50. package/deps/rocksdb/rocksdb/db/version_edit.h +7 -4
  51. package/deps/rocksdb/rocksdb/db/version_set.cc +299 -90
  52. package/deps/rocksdb/rocksdb/db/version_set.h +56 -9
  53. package/deps/rocksdb/rocksdb/db/version_set_test.cc +41 -39
  54. package/deps/rocksdb/rocksdb/db/version_util.h +3 -2
  55. package/deps/rocksdb/rocksdb/db/wal_manager.cc +7 -1
  56. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +48 -10
  57. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +1 -0
  58. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +5 -1
  59. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +16 -5
  60. package/deps/rocksdb/rocksdb/env/env_test.cc +126 -41
  61. package/deps/rocksdb/rocksdb/env/fs_posix.cc +14 -7
  62. package/deps/rocksdb/rocksdb/env/io_posix.cc +304 -112
  63. package/deps/rocksdb/rocksdb/env/io_posix.h +16 -4
  64. package/deps/rocksdb/rocksdb/env/io_posix_test.cc +43 -0
  65. package/deps/rocksdb/rocksdb/folly.mk +148 -0
  66. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +29 -3
  67. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +73 -0
  68. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +246 -0
  69. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +0 -2
  70. package/deps/rocksdb/rocksdb/include/rocksdb/data_structure.h +15 -9
  71. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +19 -9
  72. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +1 -1
  73. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +6 -4
  74. package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +14 -0
  75. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +67 -6
  76. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +1 -7
  77. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +3 -0
  78. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +6 -14
  79. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backup_engine.h +8 -1
  80. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_mirror.h +2 -2
  81. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd_execute_result.h +0 -4
  82. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/option_change_migration.h +33 -5
  83. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +6 -0
  84. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  85. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +2 -0
  86. package/deps/rocksdb/rocksdb/monitoring/thread_status_impl.cc +5 -2
  87. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +2 -2
  88. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +6 -6
  89. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater_debug.cc +2 -2
  90. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +10 -5
  91. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +2 -2
  92. package/deps/rocksdb/rocksdb/options/cf_options.cc +15 -3
  93. package/deps/rocksdb/rocksdb/options/cf_options.h +7 -0
  94. package/deps/rocksdb/rocksdb/options/db_options.cc +27 -36
  95. package/deps/rocksdb/rocksdb/options/db_options.h +3 -2
  96. package/deps/rocksdb/rocksdb/options/options.cc +4 -0
  97. package/deps/rocksdb/rocksdb/options/options_helper.cc +8 -2
  98. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +4 -1
  99. package/deps/rocksdb/rocksdb/options/options_test.cc +19 -3
  100. package/deps/rocksdb/rocksdb/src.mk +1 -1
  101. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +155 -32
  102. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +7 -3
  103. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +169 -125
  104. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +22 -7
  105. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +43 -24
  106. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +9 -5
  107. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +9 -8
  108. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +17 -0
  109. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +15 -5
  110. package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +13 -18
  111. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +29 -0
  112. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +6 -0
  113. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +15 -0
  114. package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +79 -19
  115. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +48 -20
  116. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +51 -0
  117. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +19 -0
  118. package/deps/rocksdb/rocksdb/table/block_based/user_defined_index_wrapper.h +1 -1
  119. package/deps/rocksdb/rocksdb/table/external_table.cc +2 -2
  120. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +3 -2
  121. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +3 -1
  122. package/deps/rocksdb/rocksdb/table/table_builder.h +5 -0
  123. package/deps/rocksdb/rocksdb/table/table_reader.h +4 -2
  124. package/deps/rocksdb/rocksdb/table/table_test.cc +48 -39
  125. package/deps/rocksdb/rocksdb/test_util/sync_point.cc +4 -0
  126. package/deps/rocksdb/rocksdb/test_util/sync_point.h +32 -0
  127. package/deps/rocksdb/rocksdb/test_util/testutil.h +6 -2
  128. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +14 -4
  129. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +8 -5
  130. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +3 -2
  131. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +63 -12
  132. package/deps/rocksdb/rocksdb/util/auto_tune_compressor.cc +16 -1
  133. package/deps/rocksdb/rocksdb/util/auto_tune_compressor.h +5 -1
  134. package/deps/rocksdb/rocksdb/util/bit_fields.h +133 -23
  135. package/deps/rocksdb/rocksdb/util/bloom_test.cc +2 -5
  136. package/deps/rocksdb/rocksdb/util/compression.cc +51 -23
  137. package/deps/rocksdb/rocksdb/util/compression_test.cc +525 -270
  138. package/deps/rocksdb/rocksdb/util/filter_bench.cc +3 -4
  139. package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +11 -2
  140. package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +4 -1
  141. package/deps/rocksdb/rocksdb/util/slice_test.cc +92 -0
  142. package/deps/rocksdb/rocksdb/util/thread_list_test.cc +2 -2
  143. package/deps/rocksdb/rocksdb/util/thread_operation.h +2 -2
  144. package/deps/rocksdb/rocksdb/util/threadpool_imp.cc +2 -2
  145. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +19 -2
  146. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +75 -0
  147. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +1 -0
  148. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +303 -111
  149. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +379 -0
  150. package/deps/rocksdb/rocksdb.gyp +1 -0
  151. package/iterator.js +66 -70
  152. package/package.json +6 -6
  153. package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
  154. package/deps/rocksdb/rocksdb/table/block_based/index_builder_test.cc +0 -183
@@ -1,183 +0,0 @@
1
- // Copyright (c) Meta Platforms, Inc. and affiliates.
2
- // This source code is licensed under both the GPLv2 (found in the
3
- // COPYING file in the root directory) and Apache 2.0 License
4
- // (found in the LICENSE.Apache file in the root directory).
5
-
6
- #include "table/block_based/index_builder.h"
7
-
8
- #include <gtest/gtest.h>
9
-
10
- #include <memory>
11
- #include <string>
12
-
13
- #include "db/dbformat.h"
14
- #include "rocksdb/comparator.h"
15
- #include "table/format.h"
16
- #include "test_util/testharness.h"
17
-
18
- namespace ROCKSDB_NAMESPACE {
19
-
20
- class IndexBuilderTest
21
- : public testing::Test,
22
- public testing::WithParamInterface<BlockBasedTableOptions::IndexType> {
23
- public:
24
- IndexBuilderTest() : icomp_(BytewiseComparator()) {}
25
-
26
- std::unique_ptr<IndexBuilder> CreateIndexBuilder() {
27
- BlockBasedTableOptions table_options;
28
- BlockBasedTableOptions::IndexType index_type = GetParam();
29
- return std::unique_ptr<IndexBuilder>(IndexBuilder::CreateIndexBuilder(
30
- index_type, &icomp_, nullptr, false /* use_value_delta_encoding */,
31
- table_options, 0 /* ts_sz */,
32
- true /* persist_user_defined_timestamps */));
33
- }
34
-
35
- std::string MakeKey(int i) {
36
- return InternalKey(std::string("key") + std::to_string(i), 100 - i,
37
- kTypeValue)
38
- .Encode()
39
- .ToString();
40
- }
41
-
42
- BlockHandle MakeBlockHandle(uint64_t offset, uint64_t size) {
43
- BlockHandle handle;
44
- handle.set_offset(offset);
45
- handle.set_size(size);
46
- return handle;
47
- }
48
-
49
- void AddEntriesToBuilder(IndexBuilder* builder, int num_entries,
50
- std::vector<uint64_t>* estimates = nullptr) {
51
- for (int i = 1; i <= num_entries; ++i) {
52
- std::string key_current = MakeKey(i);
53
- BlockHandle handle = MakeBlockHandle(i * kBlockOffset, kBlockSize);
54
- std::string separator_scratch;
55
-
56
- if (i == num_entries) {
57
- // Last entry - no next key
58
- builder->AddIndexEntry(key_current, nullptr, handle, &separator_scratch,
59
- false);
60
- } else {
61
- std::string key_next = MakeKey(i + 1);
62
- Slice key_next_slice(key_next);
63
- builder->AddIndexEntry(key_current, &key_next_slice, handle,
64
- &separator_scratch, false);
65
- }
66
-
67
- if (estimates) {
68
- uint64_t current_estimate = builder->EstimateCurrentIndexSize();
69
- estimates->push_back(current_estimate);
70
- }
71
- }
72
- }
73
-
74
- protected:
75
- InternalKeyComparator icomp_;
76
- static const uint64_t kBlockOffset = 1000;
77
- static const uint64_t kBlockSize = 4096;
78
- // BlockBuilder initial overhead
79
- // See BlockBuilder constructor and Reset()
80
- static const uint64_t kBlockBuilderInitialOverhead = 2 * sizeof(uint32_t);
81
- };
82
-
83
- const uint64_t IndexBuilderTest::kBlockOffset;
84
- const uint64_t IndexBuilderTest::kBlockSize;
85
- const uint64_t IndexBuilderTest::kBlockBuilderInitialOverhead;
86
-
87
- TEST_P(IndexBuilderTest, EstimateCurrentIndexSize) {
88
- auto builder = CreateIndexBuilder();
89
- BlockBasedTableOptions::IndexType index_type = GetParam();
90
-
91
- // Empty builder
92
- uint64_t empty_size = builder->EstimateCurrentIndexSize();
93
- if (index_type == BlockBasedTableOptions::kBinarySearch) {
94
- EXPECT_EQ(empty_size, kBlockBuilderInitialOverhead)
95
- << "Empty ShortenedIndexBuilder should return BlockBuilder initial "
96
- "overhead ("
97
- << kBlockBuilderInitialOverhead;
98
- } else {
99
- EXPECT_EQ(empty_size, 0) << "Other builders should return 0 when empty";
100
- }
101
-
102
- // Add one entry
103
- AddEntriesToBuilder(builder.get(), 1);
104
- uint64_t size_after_one = builder->EstimateCurrentIndexSize();
105
-
106
- if (index_type == BlockBasedTableOptions::kBinarySearch) {
107
- EXPECT_GT(size_after_one, kBlockBuilderInitialOverhead)
108
- << "Estimate should be greater than initial overhead";
109
- } else {
110
- // Other builders currently return 0 (which is expected)
111
- EXPECT_EQ(size_after_one, 0) << "Other index builders currently return 0";
112
- }
113
-
114
- // Add multiple entries and capture all estimates
115
- std::vector<uint64_t> estimates;
116
- auto new_builder = CreateIndexBuilder();
117
- AddEntriesToBuilder(new_builder.get(), 5, &estimates);
118
-
119
- // Validate reported estimates
120
- for (size_t i = 0; i < estimates.size(); ++i) {
121
- uint64_t estimate = estimates[i];
122
-
123
- if (index_type == BlockBasedTableOptions::kBinarySearch) {
124
- EXPECT_GT(estimate, 0)
125
- << "Estimate should be positive for " << i << " entry";
126
- if (i > 0) {
127
- EXPECT_GT(estimate, estimates[i - 1])
128
- << "Estimate should not decrease with more entries (entry " << i - 1
129
- << ": " << estimates[i - 1] << ", entry " << i << ": " << estimate
130
- << ")";
131
- }
132
- } else {
133
- EXPECT_EQ(estimate, 0) << "Other index builders currently return 0";
134
- }
135
- }
136
-
137
- // Multiple calls should return the same value if the builder state is not
138
- // modified
139
- uint64_t estimate1 = builder->EstimateCurrentIndexSize();
140
- uint64_t estimate2 = builder->EstimateCurrentIndexSize();
141
- uint64_t estimate3 = builder->EstimateCurrentIndexSize();
142
-
143
- EXPECT_EQ(estimate1, estimate2);
144
- EXPECT_EQ(estimate2, estimate3);
145
-
146
- // Test behavior after Finish() - only for builders that can be finished
147
- // successfully
148
- if (index_type == BlockBasedTableOptions::kBinarySearch) {
149
- uint64_t estimate_before_finish = builder->EstimateCurrentIndexSize();
150
-
151
- IndexBuilder::IndexBlocks index_blocks;
152
- Status s = builder->Finish(&index_blocks);
153
- EXPECT_TRUE(s.ok()) << "ShortenedIndexBuilder should finish successfully: "
154
- << s.ToString();
155
-
156
- uint64_t estimate_after_finish = builder->EstimateCurrentIndexSize();
157
- EXPECT_GT(estimate_after_finish, 0);
158
- EXPECT_LE(estimate_before_finish, estimate_after_finish)
159
- << "Estimate should not decrease after finish";
160
-
161
- // Ensure that the actual index size is not greater than the estimated size
162
- // after finish is called to prevent underestimation.
163
- uint64_t actual_index_size = builder->IndexSize();
164
- EXPECT_LE(actual_index_size, estimate_after_finish)
165
- << "Actual index size should not be greater than estimated size: "
166
- "actual size: "
167
- << actual_index_size << ", estimated size: " << estimate_after_finish;
168
- }
169
- }
170
-
171
- INSTANTIATE_TEST_CASE_P(
172
- IndexBuilderTypes, IndexBuilderTest,
173
- ::testing::Values(BlockBasedTableOptions::kBinarySearch,
174
- BlockBasedTableOptions::kHashSearch,
175
- BlockBasedTableOptions::kTwoLevelIndexSearch));
176
-
177
- } // namespace ROCKSDB_NAMESPACE
178
-
179
- int main(int argc, char** argv) {
180
- ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
181
- ::testing::InitGoogleTest(&argc, argv);
182
- return RUN_ALL_TESTS();
183
- }