@nxtedition/rocksdb 13.5.13 → 15.0.1

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 (232) hide show
  1. package/binding.cc +55 -180
  2. package/binding.gyp +2 -2
  3. package/chained-batch.js +9 -16
  4. package/deps/rocksdb/rocksdb/BUCK +18 -1
  5. package/deps/rocksdb/rocksdb/CMakeLists.txt +10 -3
  6. package/deps/rocksdb/rocksdb/Makefile +20 -9
  7. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +90 -13
  8. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +88 -75
  9. package/deps/rocksdb/rocksdb/cache/clock_cache.h +44 -36
  10. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +184 -148
  11. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +5 -11
  12. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +116 -47
  13. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +1 -1
  14. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +3 -6
  15. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +1 -1
  16. package/deps/rocksdb/rocksdb/db/builder.cc +4 -2
  17. package/deps/rocksdb/rocksdb/db/c.cc +207 -0
  18. package/deps/rocksdb/rocksdb/db/c_test.c +72 -0
  19. package/deps/rocksdb/rocksdb/db/column_family.cc +3 -2
  20. package/deps/rocksdb/rocksdb/db/column_family.h +5 -0
  21. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +4 -0
  22. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +2 -0
  23. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +51 -38
  24. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +29 -12
  25. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +5 -10
  26. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +566 -366
  27. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +131 -4
  28. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +1 -0
  29. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +7 -0
  30. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +4 -4
  31. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +13 -14
  32. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +12 -7
  33. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +8 -10
  34. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +97 -76
  35. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +11 -14
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +1 -1
  37. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +8 -0
  38. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +16 -3
  39. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +1 -0
  40. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +448 -1
  41. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +22 -20
  42. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +4 -1
  43. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +5 -5
  44. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +7 -3
  45. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +1 -1
  46. package/deps/rocksdb/rocksdb/db/db_iter.cc +104 -0
  47. package/deps/rocksdb/rocksdb/db/db_iter.h +4 -11
  48. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +331 -58
  49. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +129 -0
  50. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +64 -0
  51. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +40 -0
  52. package/deps/rocksdb/rocksdb/db/db_test2.cc +25 -15
  53. package/deps/rocksdb/rocksdb/db/db_test_util.cc +42 -24
  54. package/deps/rocksdb/rocksdb/db/db_test_util.h +29 -14
  55. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +69 -36
  56. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +0 -1
  57. package/deps/rocksdb/rocksdb/db/event_helpers.cc +1 -0
  58. package/deps/rocksdb/rocksdb/db/experimental.cc +5 -4
  59. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +8 -1
  60. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +275 -79
  61. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +23 -5
  62. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +591 -175
  63. package/deps/rocksdb/rocksdb/db/flush_job.cc +3 -4
  64. package/deps/rocksdb/rocksdb/db/log_reader.cc +5 -2
  65. package/deps/rocksdb/rocksdb/db/memtable.cc +84 -35
  66. package/deps/rocksdb/rocksdb/db/memtable.h +39 -34
  67. package/deps/rocksdb/rocksdb/db/merge_helper.cc +1 -0
  68. package/deps/rocksdb/rocksdb/db/merge_operator.cc +1 -1
  69. package/deps/rocksdb/rocksdb/db/multi_scan.cc +11 -5
  70. package/deps/rocksdb/rocksdb/db/version_edit.cc +1 -1
  71. package/deps/rocksdb/rocksdb/db/version_edit.h +1 -1
  72. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +34 -14
  73. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +28 -5
  74. package/deps/rocksdb/rocksdb/db/version_set.cc +159 -14
  75. package/deps/rocksdb/rocksdb/db/version_set.h +2 -0
  76. package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +1 -1
  77. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +60 -0
  78. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +16 -1
  79. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_service.h +75 -10
  80. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compression_manager.cc +28 -0
  81. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compression_manager.h +2 -0
  82. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +31 -1
  83. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +50 -2
  84. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +57 -0
  85. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_stat.h +0 -4
  86. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +266 -35
  87. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +5 -0
  88. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +0 -6
  89. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +18 -2
  90. package/deps/rocksdb/rocksdb/env/env.cc +12 -0
  91. package/deps/rocksdb/rocksdb/env/env_test.cc +18 -0
  92. package/deps/rocksdb/rocksdb/env/file_system_tracer.cc +2 -0
  93. package/deps/rocksdb/rocksdb/env/fs_posix.cc +9 -5
  94. package/deps/rocksdb/rocksdb/env/io_posix.cc +4 -2
  95. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +19 -0
  96. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +33 -31
  97. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +42 -9
  98. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +93 -0
  99. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +43 -49
  100. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +4 -3
  101. package/deps/rocksdb/rocksdb/include/rocksdb/compression_type.h +8 -6
  102. package/deps/rocksdb/rocksdb/include/rocksdb/data_structure.h +487 -0
  103. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +11 -12
  104. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +135 -1
  105. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +5 -0
  106. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +12 -0
  107. package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +1 -1
  108. package/deps/rocksdb/rocksdb/include/rocksdb/ldb_tool.h +8 -0
  109. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +12 -8
  110. package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +3 -0
  111. package/deps/rocksdb/rocksdb/include/rocksdb/multi_scan.h +19 -9
  112. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +219 -24
  113. package/deps/rocksdb/rocksdb/include/rocksdb/point_lock_bench_tool.h +14 -0
  114. package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +2 -2
  115. package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +1 -1
  116. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +7 -0
  117. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +16 -0
  118. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +16 -4
  119. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +13 -0
  120. package/deps/rocksdb/rocksdb/include/rocksdb/types.h +4 -0
  121. package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +0 -2
  122. package/deps/rocksdb/rocksdb/include/rocksdb/user_defined_index.h +45 -0
  123. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/cache_dump_load.h +1 -1
  124. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +1 -1
  125. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +6 -1
  126. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +21 -0
  127. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  128. package/deps/rocksdb/rocksdb/memory/memory_allocator_impl.h +3 -3
  129. package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +77 -51
  130. package/deps/rocksdb/rocksdb/memtable/skiplist.h +10 -13
  131. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +16 -7
  132. package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +9 -4
  133. package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +2 -0
  134. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +6 -0
  135. package/deps/rocksdb/rocksdb/options/cf_options.cc +13 -1
  136. package/deps/rocksdb/rocksdb/options/cf_options.h +6 -2
  137. package/deps/rocksdb/rocksdb/options/options.cc +2 -0
  138. package/deps/rocksdb/rocksdb/options/options_helper.cc +9 -8
  139. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +9 -5
  140. package/deps/rocksdb/rocksdb/port/mmap.cc +1 -1
  141. package/deps/rocksdb/rocksdb/port/win/xpress_win.cc +51 -0
  142. package/deps/rocksdb/rocksdb/port/win/xpress_win.h +4 -0
  143. package/deps/rocksdb/rocksdb/src.mk +8 -2
  144. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +1125 -765
  145. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +35 -24
  146. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +29 -4
  147. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +732 -256
  148. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +225 -16
  149. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +102 -26
  150. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +1 -1
  151. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +2 -75
  152. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +433 -141
  153. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +2 -0
  154. package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +17 -10
  155. package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy_impl.h +20 -0
  156. package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +112 -85
  157. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +191 -36
  158. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +2 -2
  159. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +1 -1
  160. package/deps/rocksdb/rocksdb/table/block_based/user_defined_index_wrapper.h +108 -31
  161. package/deps/rocksdb/rocksdb/table/external_table.cc +7 -3
  162. package/deps/rocksdb/rocksdb/table/format.cc +6 -12
  163. package/deps/rocksdb/rocksdb/table/format.h +10 -0
  164. package/deps/rocksdb/rocksdb/table/internal_iterator.h +1 -1
  165. package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +1 -1
  166. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +1 -1
  167. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +5 -0
  168. package/deps/rocksdb/rocksdb/table/multiget_context.h +3 -1
  169. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +118 -46
  170. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +9 -8
  171. package/deps/rocksdb/rocksdb/table/table_builder.h +5 -0
  172. package/deps/rocksdb/rocksdb/table/table_properties.cc +16 -0
  173. package/deps/rocksdb/rocksdb/table/table_test.cc +1540 -155
  174. package/deps/rocksdb/rocksdb/test_util/testutil.h +21 -5
  175. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +26 -5
  176. package/deps/rocksdb/rocksdb/tools/ldb.cc +1 -2
  177. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +2 -0
  178. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +9 -3
  179. package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +133 -165
  180. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +173 -64
  181. package/deps/rocksdb/rocksdb/util/aligned_buffer.h +69 -0
  182. package/deps/rocksdb/rocksdb/util/atomic.h +6 -0
  183. package/deps/rocksdb/rocksdb/util/auto_tune_compressor.cc +29 -20
  184. package/deps/rocksdb/rocksdb/util/auto_tune_compressor.h +10 -6
  185. package/deps/rocksdb/rocksdb/util/bit_fields.h +338 -0
  186. package/deps/rocksdb/rocksdb/util/coding.h +3 -3
  187. package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +2 -2
  188. package/deps/rocksdb/rocksdb/util/compression.cc +777 -82
  189. package/deps/rocksdb/rocksdb/util/compression.h +5 -0
  190. package/deps/rocksdb/rocksdb/util/compression_test.cc +5 -3
  191. package/deps/rocksdb/rocksdb/util/dynamic_bloom.cc +2 -2
  192. package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +15 -14
  193. package/deps/rocksdb/rocksdb/util/interval_test.cc +102 -0
  194. package/deps/rocksdb/rocksdb/util/semaphore.h +164 -0
  195. package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +10 -6
  196. package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +4 -2
  197. package/deps/rocksdb/rocksdb/util/slice_test.cc +136 -0
  198. package/deps/rocksdb/rocksdb/util/status.cc +1 -0
  199. package/deps/rocksdb/rocksdb/util/string_util.cc +2 -16
  200. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +1 -1
  201. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +1 -1
  202. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +7 -4
  203. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +35 -14
  204. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_test.cc +2 -0
  205. package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.cc +5 -2
  206. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/any_lock_manager_test.h +244 -0
  207. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_bench.cc +18 -0
  208. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_bench_tool.cc +159 -0
  209. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +1244 -161
  210. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +66 -12
  211. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_stress_test.cc +103 -0
  212. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +1275 -8
  213. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +40 -262
  214. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test_common.h +78 -0
  215. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_validation_test_runner.h +469 -0
  216. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +2 -6
  217. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +4 -0
  218. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +9 -1
  219. package/deps/rocksdb/rocksdb/utilities/transactions/timestamped_snapshot_test.cc +18 -9
  220. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +2 -0
  221. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.cc +2 -1
  222. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +72 -44
  223. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +92 -15
  224. package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +6 -20
  225. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +143 -112
  226. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +23 -16
  227. package/index.js +18 -42
  228. package/package.json +1 -1
  229. package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
  230. package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
  231. package/util.h +38 -12
  232. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_stat.cc +0 -17
package/binding.cc CHANGED
@@ -1797,6 +1797,36 @@ NAPI_METHOD(batch_clear) {
1797
1797
  }
1798
1798
 
1799
1799
  NAPI_METHOD(batch_write) {
1800
+ NAPI_ARGV(4);
1801
+
1802
+ Database* database;
1803
+ NAPI_STATUS_THROWS(napi_get_value_external(env, argv[0], reinterpret_cast<void**>(&database)));
1804
+
1805
+ rocksdb::WriteBatch* batch;
1806
+ NAPI_STATUS_THROWS(napi_get_value_external(env, argv[1], reinterpret_cast<void**>(&batch)));
1807
+
1808
+ bool sync = false;
1809
+ NAPI_STATUS_THROWS(GetProperty(env, argv[2], "sync", sync));
1810
+
1811
+ bool lowPriority = false;
1812
+ NAPI_STATUS_THROWS(GetProperty(env, argv[2], "lowPriority", lowPriority));
1813
+
1814
+ auto callback = argv[3];
1815
+
1816
+ runAsync<std::nullptr_t>(
1817
+ "leveldown.batch_write", env, callback,
1818
+ [=](auto& state) {
1819
+ rocksdb::WriteOptions writeOptions;
1820
+ writeOptions.sync = sync;
1821
+ writeOptions.low_pri = lowPriority;
1822
+ return database->db->Write(writeOptions, batch);
1823
+ },
1824
+ [](auto& state, auto env, auto& argv) { return napi_ok; });
1825
+
1826
+ return 0;
1827
+ }
1828
+
1829
+ NAPI_METHOD(batch_write_sync) {
1800
1830
  NAPI_ARGV(3);
1801
1831
 
1802
1832
  Database* database;
@@ -2004,193 +2034,30 @@ NAPI_METHOD(updates_close) {
2004
2034
  }
2005
2035
  }
2006
2036
 
2007
- NAPI_METHOD(db_open_for_read_only) {
2008
- NAPI_ARGV(3);
2037
+ NAPI_METHOD(db_compact_range_sync) {
2038
+ NAPI_ARGV(2);
2009
2039
 
2010
2040
  Database* database;
2011
2041
  NAPI_STATUS_THROWS(napi_get_value_external(env, argv[0], reinterpret_cast<void**>(&database)));
2012
2042
 
2013
- if (database->db) {
2014
- napi_value columns;
2015
- NAPI_STATUS_THROWS(napi_create_object(env, &columns));
2016
- for (auto& [id, column] : database->columns) {
2017
- napi_value val;
2018
- NAPI_STATUS_THROWS(napi_create_external(env, column.handle, nullptr, nullptr, &val));
2019
- NAPI_STATUS_THROWS(napi_set_named_property(env, columns, column.descriptor.name.c_str(), val));
2020
- }
2021
- return columns;
2022
- } else {
2023
- rocksdb::Options dbOptions;
2024
-
2025
- const auto options = argv[1];
2026
-
2027
- int parallelism = std::max<int>(1, std::thread::hardware_concurrency() / 2);
2028
- NAPI_STATUS_THROWS(GetProperty(env, options, "parallelism", parallelism));
2029
- dbOptions.IncreaseParallelism(parallelism);
2030
-
2031
- NAPI_STATUS_THROWS(GetProperty(env, options, "walDir", dbOptions.wal_dir));
2032
-
2033
- uint32_t walTTL = 0;
2034
- NAPI_STATUS_THROWS(GetProperty(env, options, "walTTL", walTTL));
2035
- dbOptions.WAL_ttl_seconds = walTTL / 1e3;
2036
-
2037
- uint32_t walSizeLimit = 0;
2038
- NAPI_STATUS_THROWS(GetProperty(env, options, "walSizeLimit", walSizeLimit));
2039
- dbOptions.WAL_size_limit_MB = walSizeLimit / 1e6;
2040
-
2041
- NAPI_STATUS_THROWS(GetProperty(env, options, "maxTotalWalSize", dbOptions.max_total_wal_size));
2042
-
2043
- bool walCompression = true;
2044
- NAPI_STATUS_THROWS(GetProperty(env, options, "walCompression", walCompression));
2045
- dbOptions.wal_compression =
2046
- walCompression ? rocksdb::CompressionType::kZSTD : rocksdb::CompressionType::kNoCompression;
2047
-
2048
- dbOptions.avoid_unnecessary_blocking_io = true;
2049
- NAPI_STATUS_THROWS(GetProperty(env, options, "avoidUnnecessaryBlockingIO", dbOptions.avoid_unnecessary_blocking_io));
2050
-
2051
- dbOptions.create_missing_column_families = true;
2052
- NAPI_STATUS_THROWS(GetProperty(env, options, "createMissingColumnFamilies", dbOptions.create_missing_column_families));
2053
-
2054
- NAPI_STATUS_THROWS(GetProperty(env, options, "writeDbIdToManifest", dbOptions.write_dbid_to_manifest));
2055
-
2056
- NAPI_STATUS_THROWS(GetProperty(env, options, "adviseRandomOnOpen", dbOptions.advise_random_on_open));
2057
-
2058
- NAPI_STATUS_THROWS(GetProperty(env, options, "bytesPerSync", dbOptions.bytes_per_sync));
2059
-
2060
- NAPI_STATUS_THROWS(GetProperty(env, options, "walBytesPerSync", dbOptions.wal_bytes_per_sync));
2061
-
2062
- NAPI_STATUS_THROWS(GetProperty(env, options, "strictBytesPerSync", dbOptions.strict_bytes_per_sync));
2063
-
2064
- NAPI_STATUS_THROWS(GetProperty(env, options, "delayedWriteRate", dbOptions.delayed_write_rate));
2065
-
2066
- NAPI_STATUS_THROWS(GetProperty(env, options, "createIfMissing", dbOptions.create_if_missing));
2067
-
2068
- NAPI_STATUS_THROWS(GetProperty(env, options, "errorIfExists", dbOptions.error_if_exists));
2069
-
2070
- NAPI_STATUS_THROWS(GetProperty(env, options, "pipelinedWrite", dbOptions.enable_pipelined_write));
2071
-
2072
- NAPI_STATUS_THROWS(GetProperty(env, options, "dailyOffpeakTime", dbOptions.daily_offpeak_time_utc));
2073
-
2074
- NAPI_STATUS_THROWS(GetProperty(env, options, "unorderedWrite", dbOptions.unordered_write));
2075
-
2076
- NAPI_STATUS_THROWS(GetProperty(env, options, "allowMmapReads", dbOptions.allow_mmap_reads));
2077
-
2078
- NAPI_STATUS_THROWS(GetProperty(env, options, "allowMmapWrites", dbOptions.allow_mmap_writes));
2079
-
2080
- NAPI_STATUS_THROWS(GetProperty(env, options, "memTableHugePageSize", dbOptions.memtable_huge_page_size));
2081
-
2082
- NAPI_STATUS_THROWS(GetProperty(env, options, "useDirectIOReads", dbOptions.use_direct_reads));
2083
-
2084
- NAPI_STATUS_THROWS(GetProperty(env, options, "useDirectIOForFlushAndCompaction", dbOptions.use_direct_io_for_flush_and_compaction));
2085
-
2086
- NAPI_STATUS_THROWS(GetProperty(env, options, "compactionReadaheadSize", dbOptions.compaction_readahead_size));
2087
-
2088
- // TODO (feat): dbOptions.listeners
2089
-
2090
- std::string infoLogLevel;
2091
- NAPI_STATUS_THROWS(GetProperty(env, options, "infoLogLevel", infoLogLevel));
2092
- if (infoLogLevel.size() > 0) {
2093
- rocksdb::InfoLogLevel lvl = {};
2094
-
2095
- if (infoLogLevel == "debug")
2096
- lvl = rocksdb::InfoLogLevel::DEBUG_LEVEL;
2097
- else if (infoLogLevel == "info")
2098
- lvl = rocksdb::InfoLogLevel::INFO_LEVEL;
2099
- else if (infoLogLevel == "warn")
2100
- lvl = rocksdb::InfoLogLevel::WARN_LEVEL;
2101
- else if (infoLogLevel == "error")
2102
- lvl = rocksdb::InfoLogLevel::ERROR_LEVEL;
2103
- else if (infoLogLevel == "fatal")
2104
- lvl = rocksdb::InfoLogLevel::FATAL_LEVEL;
2105
- else if (infoLogLevel == "header")
2106
- lvl = rocksdb::InfoLogLevel::HEADER_LEVEL;
2107
- else
2108
- napi_throw_error(env, nullptr, "invalid log level");
2109
-
2110
- dbOptions.info_log_level = lvl;
2111
- } else {
2112
- // In some places RocksDB checks this option to see if it should prepare
2113
- // debug information (ahead of logging), so set it to the highest level.
2114
- dbOptions.info_log_level = rocksdb::InfoLogLevel::HEADER_LEVEL;
2115
- dbOptions.info_log.reset(new NullLogger());
2116
- }
2117
-
2118
- NAPI_STATUS_THROWS(InitOptions(env, dbOptions, options));
2119
-
2120
- std::vector<rocksdb::ColumnFamilyDescriptor> descriptors;
2121
-
2122
- bool hasColumns;
2123
- NAPI_STATUS_THROWS(napi_has_named_property(env, options, "columns", &hasColumns));
2124
-
2125
- if (hasColumns) {
2126
- napi_value columns;
2127
- NAPI_STATUS_THROWS(napi_get_named_property(env, options, "columns", &columns));
2128
-
2129
- napi_value keys;
2130
- NAPI_STATUS_THROWS(napi_get_property_names(env, columns, &keys));
2131
-
2132
- uint32_t len;
2133
- NAPI_STATUS_THROWS(napi_get_array_length(env, keys, &len));
2134
-
2135
- descriptors.resize(len);
2136
- for (uint32_t n = 0; n < len; ++n) {
2137
- napi_value key;
2138
- NAPI_STATUS_THROWS(napi_get_element(env, keys, n, &key));
2139
-
2140
- napi_value column;
2141
- NAPI_STATUS_THROWS(napi_get_property(env, columns, key, &column));
2142
-
2143
- NAPI_STATUS_THROWS(InitOptions(env, descriptors[n].options, column));
2144
-
2145
- NAPI_STATUS_THROWS(GetValue(env, key, descriptors[n].name));
2146
- }
2147
- }
2148
-
2149
- auto callback = argv[2];
2150
-
2151
- runAsync<std::vector<rocksdb::ColumnFamilyHandle*>>(
2152
- "leveldown.open_for_read_only", env, callback,
2153
- [=](auto& handles) {
2154
- assert(!database->db);
2155
-
2156
- rocksdb::DB* db = nullptr;
2157
-
2158
- const auto status = descriptors.empty()
2159
- ? rocksdb::DB::OpenForReadOnly(dbOptions, database->location, &db)
2160
- : rocksdb::DB::OpenForReadOnly(dbOptions, database->location, descriptors, &handles, &db);
2161
-
2162
- database->db.reset(db);
2163
-
2164
- return status;
2165
- },
2166
- [=](auto& handles, auto env, auto& argv) {
2167
- argv.resize(2);
2043
+ std::optional<std::string> start;
2044
+ std::optional<std::string> end;
2168
2045
 
2169
- NAPI_STATUS_RETURN(napi_create_object(env, &argv[1]));
2046
+ NAPI_STATUS_THROWS(GetProperty(env, argv[1], "start", start));
2047
+ NAPI_STATUS_THROWS(GetProperty(env, argv[1], "end", end));
2170
2048
 
2171
- for (size_t n = 0; n < handles.size(); ++n) {
2172
- ColumnFamily column;
2173
- column.handle = handles[n];
2174
- column.descriptor = descriptors[n];
2175
- database->columns[column.handle->GetID()] = column;
2176
- }
2049
+ rocksdb::CompactRangeOptions options;
2177
2050
 
2178
- napi_value columns = argv[1];
2179
- for (auto& [id, column] : database->columns) {
2180
- napi_value val;
2181
- NAPI_STATUS_RETURN(napi_create_external(env, column.handle, nullptr, nullptr, &val));
2182
- NAPI_STATUS_RETURN(napi_set_named_property(env, columns, column.descriptor.name.c_str(), val));
2183
- }
2051
+ auto begin = start ? std::make_unique<rocksdb::Slice>(*start) : nullptr;
2052
+ auto finish = end ? std::make_unique<rocksdb::Slice>(*end) : nullptr;
2184
2053
 
2185
- return napi_ok;
2186
- });
2187
- }
2054
+ ROCKS_STATUS_THROWS_NAPI(database->db->CompactRange(options, begin.get(), finish.get()));
2188
2055
 
2189
2056
  return 0;
2190
2057
  }
2191
2058
 
2192
2059
  NAPI_METHOD(db_compact_range) {
2193
- NAPI_ARGV(2);
2060
+ NAPI_ARGV(3);
2194
2061
 
2195
2062
  Database* database;
2196
2063
  NAPI_STATUS_THROWS(napi_get_value_external(env, argv[0], reinterpret_cast<void**>(&database)));
@@ -2201,12 +2068,19 @@ NAPI_METHOD(db_compact_range) {
2201
2068
  NAPI_STATUS_THROWS(GetProperty(env, argv[1], "start", start));
2202
2069
  NAPI_STATUS_THROWS(GetProperty(env, argv[1], "end", end));
2203
2070
 
2204
- rocksdb::CompactRangeOptions options;
2071
+ auto callback = argv[2];
2205
2072
 
2206
- auto begin = start ? std::make_unique<rocksdb::Slice>(*start) : nullptr;
2207
- auto finish = end ? std::make_unique<rocksdb::Slice>(*end) : nullptr;
2073
+ runAsync<std::nullptr_t>(
2074
+ "leveldown.compact_range", env, callback,
2075
+ [=](auto& state) {
2076
+ rocksdb::CompactRangeOptions options;
2208
2077
 
2209
- ROCKS_STATUS_THROWS_NAPI(database->db->CompactRange(options, begin.get(), finish.get()));
2078
+ auto begin = start ? std::make_unique<rocksdb::Slice>(*start) : nullptr;
2079
+ auto finish = end ? std::make_unique<rocksdb::Slice>(*end) : nullptr;
2080
+
2081
+ return database->db->CompactRange(options, begin.get(), finish.get());
2082
+ },
2083
+ [](auto& state, auto env, auto& argv) { return napi_ok; });
2210
2084
 
2211
2085
  return 0;
2212
2086
  }
@@ -2224,6 +2098,8 @@ NAPI_INIT() {
2224
2098
  NAPI_EXPORT_FUNCTION(db_get_property);
2225
2099
  NAPI_EXPORT_FUNCTION(db_get_latest_sequence);
2226
2100
  NAPI_EXPORT_FUNCTION(db_query);
2101
+ NAPI_EXPORT_FUNCTION(db_compact_range_sync);
2102
+ NAPI_EXPORT_FUNCTION(db_compact_range);
2227
2103
 
2228
2104
  NAPI_EXPORT_FUNCTION(iterator_init);
2229
2105
  NAPI_EXPORT_FUNCTION(iterator_seek);
@@ -2241,9 +2117,8 @@ NAPI_INIT() {
2241
2117
  NAPI_EXPORT_FUNCTION(batch_del);
2242
2118
  NAPI_EXPORT_FUNCTION(batch_clear);
2243
2119
  NAPI_EXPORT_FUNCTION(batch_write);
2120
+ NAPI_EXPORT_FUNCTION(batch_write_sync);
2244
2121
  NAPI_EXPORT_FUNCTION(batch_merge);
2245
2122
  NAPI_EXPORT_FUNCTION(batch_count);
2246
2123
  NAPI_EXPORT_FUNCTION(batch_iterate);
2247
- NAPI_EXPORT_FUNCTION(db_open_for_read_only);
2248
- NAPI_EXPORT_FUNCTION(db_compact_range);
2249
2124
  }
package/binding.gyp CHANGED
@@ -16,8 +16,8 @@
16
16
  "/usr/lib/x86_64-linux-gnu/include",
17
17
  "/usr/lib/include",
18
18
  ],
19
- "cflags": ["-march=znver1"],
20
- "ccflags": ["-flto", '-march=znver1'],
19
+ "cflags": ["-march=znver3", "-mtune=znver3"],
20
+ "ccflags": ["-flto", '-std=c++20', "-march=znver3", "-mtune=znver3"],
21
21
  "cflags!": ["-fno-exceptions"],
22
22
  "cflags_cc!": ["-fno-exceptions"],
23
23
  "ldflags": ["-flto", "-fuse-linker-plugin"],
package/chained-batch.js CHANGED
@@ -3,13 +3,10 @@
3
3
  const { AbstractChainedBatch } = require('abstract-level')
4
4
  const binding = require('./binding')
5
5
  const ModuleError = require('module-error')
6
- const { fromCallback } = require('catering')
7
6
  const assert = require('node:assert')
8
7
 
9
8
  const kBatchContext = Symbol('batchContext')
10
9
  const kDbContext = Symbol('dbContext')
11
- const kPromise = Symbol('promise')
12
-
13
10
  const EMPTY = {}
14
11
 
15
12
  class ChainedBatch extends AbstractChainedBatch {
@@ -78,28 +75,24 @@ class ChainedBatch extends AbstractChainedBatch {
78
75
  _write (options, callback) {
79
76
  assert(this[kBatchContext])
80
77
 
81
- callback = fromCallback(callback, kPromise)
82
-
83
- try {
84
- this._writeSync(options)
85
- process.nextTick(callback, null)
86
- } catch (err) {
87
- process.nextTick(callback, err)
88
- }
89
-
90
- return callback[kPromise]
78
+ binding.batch_write(this[kDbContext], this[kBatchContext], options ?? EMPTY, callback)
91
79
  }
92
80
 
93
81
  _writeSync (options) {
94
82
  assert(this[kBatchContext])
95
83
 
96
- binding.batch_write(this[kDbContext], this[kBatchContext], options ?? EMPTY)
84
+ binding.batch_write_sync(this[kDbContext], this[kBatchContext], options ?? EMPTY)
97
85
  }
98
86
 
99
87
  _close (callback) {
100
- this._closeSync()
88
+ assert(this[kBatchContext])
101
89
 
102
- process.nextTick(callback)
90
+ try {
91
+ this._closeSync()
92
+ process.nextTick(callback, null)
93
+ } catch (err) {
94
+ process.nextTick(callback, err)
95
+ }
103
96
  }
104
97
 
105
98
  _closeSync () {
@@ -114,6 +114,7 @@ cpp_library_wrapper(name="rocksdb_lib", srcs=[
114
114
  "db/write_controller.cc",
115
115
  "db/write_stall_stats.cc",
116
116
  "db/write_thread.cc",
117
+ "db_stress_tool/db_stress_compression_manager.cc",
117
118
  "env/composite_env.cc",
118
119
  "env/env.cc",
119
120
  "env/env_chroot.cc",
@@ -418,16 +419,18 @@ cpp_library_wrapper(name="rocksdb_tools_lib", srcs=[
418
419
 
419
420
  cpp_library_wrapper(name="rocksdb_cache_bench_tools_lib", srcs=["cache/cache_bench_tool.cc"], deps=[":rocksdb_lib"], headers=[], link_whole=False, extra_test_libs=False)
420
421
 
422
+ cpp_library_wrapper(name="rocksdb_point_lock_bench_tools_lib", srcs=["utilities/transactions/lock/point/point_lock_bench_tool.cc"], deps=[":rocksdb_lib"], headers=[], link_whole=False, extra_test_libs=False)
423
+
421
424
  rocks_cpp_library_wrapper(name="rocksdb_stress_lib", srcs=[
422
425
  "db_stress_tool/batched_ops_stress.cc",
423
426
  "db_stress_tool/cf_consistency_stress.cc",
424
427
  "db_stress_tool/db_stress_common.cc",
428
+ "db_stress_tool/db_stress_compression_manager.cc",
425
429
  "db_stress_tool/db_stress_driver.cc",
426
430
  "db_stress_tool/db_stress_filters.cc",
427
431
  "db_stress_tool/db_stress_gflags.cc",
428
432
  "db_stress_tool/db_stress_listener.cc",
429
433
  "db_stress_tool/db_stress_shared_state.cc",
430
- "db_stress_tool/db_stress_stat.cc",
431
434
  "db_stress_tool/db_stress_test_base.cc",
432
435
  "db_stress_tool/db_stress_tool.cc",
433
436
  "db_stress_tool/db_stress_wide_merge_operator.cc",
@@ -449,6 +452,8 @@ cpp_binary_wrapper(name="db_bench", srcs=["tools/db_bench.cc"], deps=[":rocksdb_
449
452
 
450
453
  cpp_binary_wrapper(name="cache_bench", srcs=["cache/cache_bench.cc"], deps=[":rocksdb_cache_bench_tools_lib"], extra_preprocessor_flags=[], extra_bench_libs=False)
451
454
 
455
+ cpp_binary_wrapper(name="point_lock_bench", srcs=["utilities/transactions/lock/point/point_lock_bench.cc"], deps=[":rocksdb_point_lock_bench_tools_lib"], extra_preprocessor_flags=[], extra_bench_libs=False)
456
+
452
457
  cpp_binary_wrapper(name="ribbon_bench", srcs=["microbench/ribbon_bench.cc"], deps=[], extra_preprocessor_flags=[], extra_bench_libs=True)
453
458
 
454
459
  cpp_binary_wrapper(name="db_basic_bench", srcs=["microbench/db_basic_bench.cc"], deps=[], extra_preprocessor_flags=[], extra_bench_libs=True)
@@ -5194,6 +5199,12 @@ cpp_unittest_wrapper(name="inlineskiplist_test",
5194
5199
  extra_compiler_flags=[])
5195
5200
 
5196
5201
 
5202
+ cpp_unittest_wrapper(name="interval_test",
5203
+ srcs=["util/interval_test.cc"],
5204
+ deps=[":rocksdb_test_lib"],
5205
+ extra_compiler_flags=[])
5206
+
5207
+
5197
5208
  cpp_unittest_wrapper(name="io_posix_test",
5198
5209
  srcs=["env/io_posix_test.cc"],
5199
5210
  deps=[":rocksdb_test_lib"],
@@ -5374,6 +5385,12 @@ cpp_unittest_wrapper(name="plain_table_db_test",
5374
5385
  extra_compiler_flags=[])
5375
5386
 
5376
5387
 
5388
+ cpp_unittest_wrapper(name="point_lock_manager_stress_test",
5389
+ srcs=["utilities/transactions/lock/point/point_lock_manager_stress_test.cc"],
5390
+ deps=[":rocksdb_test_lib"],
5391
+ extra_compiler_flags=[])
5392
+
5393
+
5377
5394
  cpp_unittest_wrapper(name="point_lock_manager_test",
5378
5395
  srcs=["utilities/transactions/lock/point/point_lock_manager_test.cc"],
5379
5396
  deps=[":rocksdb_test_lib"],
@@ -27,7 +27,7 @@
27
27
  #
28
28
  # Linux:
29
29
  #
30
- # 1. Install a recent toolchain if you're on a older distro. C++17 required (GCC >= 7, Clang >= 5)
30
+ # 1. Install a recent toolchain if you're on a older distro. C++20 required (GCC >= 11, Clang >= 10)
31
31
  # 2. mkdir build; cd build
32
32
  # 3. cmake ..
33
33
  # 4. make -j
@@ -100,7 +100,7 @@ endif()
100
100
  option(ROCKSDB_BUILD_SHARED "Build shared versions of the RocksDB libraries" ON)
101
101
 
102
102
  if( NOT DEFINED CMAKE_CXX_STANDARD )
103
- set(CMAKE_CXX_STANDARD 17)
103
+ set(CMAKE_CXX_STANDARD 20)
104
104
  endif()
105
105
 
106
106
  include(CMakeDependentOption)
@@ -314,7 +314,6 @@ endif()
314
314
 
315
315
  # Check if -latomic is required or not
316
316
  if (NOT MSVC)
317
- set(CMAKE_REQUIRED_FLAGS "--std=c++17")
318
317
  CHECK_CXX_SOURCE_COMPILES("
319
318
  #include <atomic>
320
319
  std::atomic<uint64_t> x(0);
@@ -747,6 +746,7 @@ set(SOURCES
747
746
  db/write_controller.cc
748
747
  db/write_stall_stats.cc
749
748
  db/write_thread.cc
749
+ db_stress_tool/db_stress_compression_manager.cc
750
750
  env/composite_env.cc
751
751
  env/env.cc
752
752
  env/env_chroot.cc
@@ -1503,6 +1503,7 @@ if(WITH_TESTS)
1503
1503
  utilities/transactions/optimistic_transaction_test.cc
1504
1504
  utilities/transactions/transaction_test.cc
1505
1505
  utilities/transactions/lock/point/point_lock_manager_test.cc
1506
+ utilities/transactions/lock/point/point_lock_manager_stress_test.cc
1506
1507
  utilities/transactions/write_committed_transaction_ts_test.cc
1507
1508
  utilities/transactions/write_prepared_transaction_test.cc
1508
1509
  utilities/transactions/write_unprepared_transaction_test.cc
@@ -1613,6 +1614,12 @@ if(WITH_BENCHMARK_TOOLS)
1613
1614
  utilities/persistent_cache/hash_table_bench.cc)
1614
1615
  target_link_libraries(hash_table_bench${ARTIFACT_SUFFIX}
1615
1616
  ${ROCKSDB_LIB} ${GFLAGS_LIB} ${FOLLY_LIBS})
1617
+
1618
+ add_executable(point_lock_bench${ARTIFACT_SUFFIX}
1619
+ utilities/transactions/lock/point/point_lock_bench.cc
1620
+ utilities/transactions/lock/point/point_lock_bench_tool.cc)
1621
+ target_link_libraries(point_lock_bench${ARTIFACT_SUFFIX}
1622
+ ${ROCKSDB_LIB} ${GFLAGS_LIB} ${FOLLY_LIBS})
1616
1623
  endif()
1617
1624
 
1618
1625
  option(WITH_TRACE_TOOLS "build with trace tools" ON)
@@ -148,10 +148,8 @@ ifeq ($(USE_COROUTINES), 1)
148
148
  USE_FOLLY = 1
149
149
  # glog/logging.h requires HAVE_CXX11_ATOMIC
150
150
  OPT += -DUSE_COROUTINES -DHAVE_CXX11_ATOMIC
151
- ROCKSDB_CXX_STANDARD = c++2a
152
151
  USE_RTTI = 1
153
152
  ifneq ($(USE_CLANG), 1)
154
- ROCKSDB_CXX_STANDARD = c++20
155
153
  PLATFORM_CXXFLAGS += -fcoroutines
156
154
  endif
157
155
  endif
@@ -638,13 +636,14 @@ endif
638
636
  TEST_OBJECTS = $(patsubst %.cc, $(OBJ_DIR)/%.o, $(TEST_LIB_SOURCES) $(MOCK_LIB_SOURCES)) $(GTEST)
639
637
  BENCH_OBJECTS = $(patsubst %.cc, $(OBJ_DIR)/%.o, $(BENCH_LIB_SOURCES))
640
638
  CACHE_BENCH_OBJECTS = $(patsubst %.cc, $(OBJ_DIR)/%.o, $(CACHE_BENCH_LIB_SOURCES))
639
+ POINT_LOCK_BENCH_OBJECTS = $(patsubst %.cc, $(OBJ_DIR)/%.o, $(POINT_LOCK_BENCH_LIB_SOURCES))
641
640
  TOOL_OBJECTS = $(patsubst %.cc, $(OBJ_DIR)/%.o, $(TOOL_LIB_SOURCES))
642
641
  ANALYZE_OBJECTS = $(patsubst %.cc, $(OBJ_DIR)/%.o, $(ANALYZER_LIB_SOURCES))
643
642
  STRESS_OBJECTS = $(patsubst %.cc, $(OBJ_DIR)/%.o, $(STRESS_LIB_SOURCES))
644
643
 
645
644
  # Exclude build_version.cc -- a generated source file -- from all sources. Not needed for dependencies
646
645
  ALL_SOURCES = $(filter-out util/build_version.cc, $(LIB_SOURCES)) $(TEST_LIB_SOURCES) $(MOCK_LIB_SOURCES) $(GTEST_DIR)/gtest/gtest-all.cc
647
- ALL_SOURCES += $(TOOL_LIB_SOURCES) $(BENCH_LIB_SOURCES) $(CACHE_BENCH_LIB_SOURCES) $(ANALYZER_LIB_SOURCES) $(STRESS_LIB_SOURCES)
646
+ ALL_SOURCES += $(TOOL_LIB_SOURCES) $(BENCH_LIB_SOURCES) $(CACHE_BENCH_LIB_SOURCES) $(POINT_LOCK_BENCH_LIB_SOURCES) $(ANALYZER_LIB_SOURCES) $(STRESS_LIB_SOURCES)
648
647
  ALL_SOURCES += $(TEST_MAIN_SOURCES) $(TOOL_MAIN_SOURCES) $(BENCH_MAIN_SOURCES)
649
648
  ALL_SOURCES += $(ROCKSDB_PLUGIN_SOURCES) $(ROCKSDB_PLUGIN_TESTS)
650
649
 
@@ -683,7 +682,7 @@ am__v_CCH_1 =
683
682
  # user build settings
684
683
  %.h.pub: %.h # .h.pub not actually created, so re-checked on each invocation
685
684
  $(AM_V_CCH) cd include/ && echo '#include "$(patsubst include/%,%,$<)"' | \
686
- $(CXX) -I. -DROCKSDB_NAMESPACE=42 -x c++ -c - -o /dev/null
685
+ $(CXX) -std=$(or $(ROCKSDB_CXX_STANDARD),c++20) -I. -DROCKSDB_NAMESPACE=42 -x c++ -c - -o /dev/null
687
686
 
688
687
  check-headers: $(HEADER_OK_FILES)
689
688
 
@@ -1345,6 +1344,9 @@ block_cache_trace_analyzer: $(OBJ_DIR)/tools/block_cache_analyzer/block_cache_tr
1345
1344
  cache_bench: $(OBJ_DIR)/cache/cache_bench.o $(CACHE_BENCH_OBJECTS) $(LIBRARY)
1346
1345
  $(AM_LINK)
1347
1346
 
1347
+ point_lock_bench: $(OBJ_DIR)/utilities/transactions/lock/point/point_lock_bench.o $(POINT_LOCK_BENCH_OBJECTS) $(LIBRARY)
1348
+ $(AM_LINK)
1349
+
1348
1350
  persistent_cache_bench: $(OBJ_DIR)/utilities/persistent_cache/persistent_cache_bench.o $(LIBRARY)
1349
1351
  $(AM_LINK)
1350
1352
 
@@ -1357,6 +1359,9 @@ filter_bench: $(OBJ_DIR)/util/filter_bench.o $(LIBRARY)
1357
1359
  db_stress: $(OBJ_DIR)/db_stress_tool/db_stress.o $(STRESS_LIBRARY) $(TOOLS_LIBRARY) $(LIBRARY)
1358
1360
  $(AM_LINK)
1359
1361
 
1362
+ db_stress_compression_manager: $(OBJ_DIR)/db_stress_tool/db_stress_compression_manager.o $(LIBRARY)
1363
+ $(AM_LINK)
1364
+
1360
1365
  write_stress: $(OBJ_DIR)/tools/write_stress.o $(LIBRARY)
1361
1366
  $(AM_LINK)
1362
1367
 
@@ -1422,13 +1427,13 @@ agg_merge_test: $(OBJ_DIR)/utilities/agg_merge/agg_merge_test.o $(TEST_LIBRARY)
1422
1427
  stringappend_test: $(OBJ_DIR)/utilities/merge_operators/string_append/stringappend_test.o $(TEST_LIBRARY) $(LIBRARY)
1423
1428
  $(AM_LINK)
1424
1429
 
1425
- cassandra_format_test: $(OBJ_DIR)/utilities/cassandra/cassandra_format_test.o $(OBJ_DIR)/utilities/cassandra/test_utils.o $(TEST_LIBRARY) $(LIBRARY)
1430
+ cassandra_format_test: $(OBJ_DIR)/utilities/cassandra/cassandra_format_test.o $(TEST_LIBRARY) $(LIBRARY)
1426
1431
  $(AM_LINK)
1427
1432
 
1428
- cassandra_functional_test: $(OBJ_DIR)/utilities/cassandra/cassandra_functional_test.o $(OBJ_DIR)/utilities/cassandra/test_utils.o $(TEST_LIBRARY) $(LIBRARY)
1433
+ cassandra_functional_test: $(OBJ_DIR)/utilities/cassandra/cassandra_functional_test.o $(TEST_LIBRARY) $(LIBRARY)
1429
1434
  $(AM_LINK)
1430
1435
 
1431
- cassandra_row_merge_test: $(OBJ_DIR)/utilities/cassandra/cassandra_row_merge_test.o $(OBJ_DIR)/utilities/cassandra/test_utils.o $(TEST_LIBRARY) $(LIBRARY)
1436
+ cassandra_row_merge_test: $(OBJ_DIR)/utilities/cassandra/cassandra_row_merge_test.o $(TEST_LIBRARY) $(LIBRARY)
1432
1437
  $(AM_LINK)
1433
1438
 
1434
1439
  cassandra_serialize_test: $(OBJ_DIR)/utilities/cassandra/cassandra_serialize_test.o $(TEST_LIBRARY) $(LIBRARY)
@@ -1878,6 +1883,9 @@ heap_test: $(OBJ_DIR)/util/heap_test.o $(TEST_LIBRARY) $(LIBRARY)
1878
1883
  point_lock_manager_test: utilities/transactions/lock/point/point_lock_manager_test.o $(TEST_LIBRARY) $(LIBRARY)
1879
1884
  $(AM_LINK)
1880
1885
 
1886
+ point_lock_manager_stress_test: utilities/transactions/lock/point/point_lock_manager_stress_test.o $(TEST_LIBRARY) $(LIBRARY)
1887
+ $(AM_LINK)
1888
+
1881
1889
  transaction_test: $(OBJ_DIR)/utilities/transactions/transaction_test.o $(TEST_LIBRARY) $(LIBRARY)
1882
1890
  $(AM_LINK)
1883
1891
 
@@ -2037,6 +2045,9 @@ wide_column_serialization_test: $(OBJ_DIR)/db/wide/wide_column_serialization_tes
2037
2045
  wide_columns_helper_test: $(OBJ_DIR)/db/wide/wide_columns_helper_test.o $(TEST_LIBRARY) $(LIBRARY)
2038
2046
  $(AM_LINK)
2039
2047
 
2048
+ interval_test: $(OBJ_DIR)/util/interval_test.o $(TEST_LIBRARY) $(LIBRARY)
2049
+ $(AM_LINK)
2050
+
2040
2051
  #-------------------------------------------------
2041
2052
  # make install related stuff
2042
2053
  PREFIX ?= /usr/local
@@ -2245,7 +2256,7 @@ libsnappy.a: snappy-$(SNAPPY_VER).tar.gz
2245
2256
  -rm -rf snappy-$(SNAPPY_VER)
2246
2257
  tar xvzf snappy-$(SNAPPY_VER).tar.gz
2247
2258
  mkdir snappy-$(SNAPPY_VER)/build
2248
- cd snappy-$(SNAPPY_VER)/build && CFLAGS='$(ARCHFLAG) ${JAVA_STATIC_DEPS_CCFLAGS} ${EXTRA_CFLAGS}' CXXFLAGS='$(ARCHFLAG) ${JAVA_STATIC_DEPS_CXXFLAGS} ${EXTRA_CXXFLAGS}' LDFLAGS='${JAVA_STATIC_DEPS_LDFLAGS} ${EXTRA_LDFLAGS}' cmake -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DSNAPPY_BUILD_BENCHMARKS=OFF -DSNAPPY_BUILD_TESTS=OFF --compile-no-warning-as-error ${PLATFORM_CMAKE_FLAGS} .. && $(MAKE) ${SNAPPY_MAKE_TARGET}
2259
+ cd snappy-$(SNAPPY_VER)/build && CFLAGS='$(ARCHFLAG) ${JAVA_STATIC_DEPS_CCFLAGS} ${EXTRA_CFLAGS}' CXXFLAGS='$(ARCHFLAG) ${JAVA_STATIC_DEPS_CXXFLAGS} ${EXTRA_CXXFLAGS}' LDFLAGS='${JAVA_STATIC_DEPS_LDFLAGS} ${EXTRA_LDFLAGS}' cmake -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DSNAPPY_BUILD_BENCHMARKS=OFF -DSNAPPY_BUILD_TESTS=OFF ${PLATFORM_CMAKE_FLAGS} .. && $(MAKE) ${SNAPPY_MAKE_TARGET}
2249
2260
  cp snappy-$(SNAPPY_VER)/build/libsnappy.a .
2250
2261
 
2251
2262
  lz4-$(LZ4_VER).tar.gz:
@@ -2492,7 +2503,7 @@ checkout_folly:
2492
2503
  fi
2493
2504
  @# Pin to a particular version for public CI, so that PR authors don't
2494
2505
  @# need to worry about folly breaking our integration. Update periodically
2495
- cd third-party/folly && git reset --hard 5c626dd6a028a02e461edb5396694d48305e9284
2506
+ cd third-party/folly && git reset --hard e95383b7c8b5b1e46cf47acf2f317d54f93c8268
2496
2507
  @# Apparently missing include
2497
2508
  perl -pi -e 's/(#include <atomic>)/$$1\n#include <cstring>/' third-party/folly/folly/lang/Exception.h
2498
2509
  @# Warning-as-error on memcpy