@nxtedition/rocksdb 15.4.1 → 16.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.
Files changed (401) hide show
  1. package/binding.cc +70 -23
  2. package/deps/rocksdb/rocksdb/.clang-tidy +86 -0
  3. package/deps/rocksdb/rocksdb/BUCK +42 -0
  4. package/deps/rocksdb/rocksdb/CMakeLists.txt +11 -0
  5. package/deps/rocksdb/rocksdb/Makefile +59 -32
  6. package/deps/rocksdb/rocksdb/cache/cache.cc +0 -5
  7. package/deps/rocksdb/rocksdb/cache/cache_entry_stats.h +9 -9
  8. package/deps/rocksdb/rocksdb/cache/cache_key.cc +3 -3
  9. package/deps/rocksdb/rocksdb/cache/cache_key.h +5 -5
  10. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +16 -16
  11. package/deps/rocksdb/rocksdb/cache/cache_test.cc +1 -1
  12. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +258 -294
  13. package/deps/rocksdb/rocksdb/cache/clock_cache.h +98 -49
  14. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +1 -5
  15. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +2 -3
  16. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +18 -18
  17. package/deps/rocksdb/rocksdb/crash_test.mk +5 -1
  18. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +23 -22
  19. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +6 -1
  20. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +14 -16
  21. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +38 -26
  22. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +5 -1
  23. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +101 -18
  24. package/deps/rocksdb/rocksdb/db/blob/blob_index.h +12 -0
  25. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +6 -9
  26. package/deps/rocksdb/rocksdb/db/builder.cc +23 -0
  27. package/deps/rocksdb/rocksdb/db/builder.h +7 -0
  28. package/deps/rocksdb/rocksdb/db/c.cc +373 -57
  29. package/deps/rocksdb/rocksdb/db/c_test.c +101 -1
  30. package/deps/rocksdb/rocksdb/db/column_family.cc +31 -3
  31. package/deps/rocksdb/rocksdb/db/column_family_test.cc +10 -13
  32. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +35 -48
  33. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +13 -5
  34. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +201 -39
  35. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +15 -10
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +7 -7
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +2 -455
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +4 -2
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +19 -0
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +72 -9
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +12 -10
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +405 -83
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +25 -1
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +23 -10
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +1 -0
  46. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +1410 -106
  47. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +12 -5
  48. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +2 -1
  49. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +19 -10
  50. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +505 -45
  51. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +2 -2
  52. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +9 -1
  53. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +4 -4
  54. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +7 -9
  55. package/deps/rocksdb/rocksdb/db/convenience.cc +4 -4
  56. package/deps/rocksdb/rocksdb/db/convenience_impl.h +2 -1
  57. package/deps/rocksdb/rocksdb/db/corruption_test.cc +60 -88
  58. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +10 -12
  59. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +471 -40
  60. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +116 -2
  61. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +5 -15
  62. package/deps/rocksdb/rocksdb/db/db_compaction_abort_test.cc +993 -0
  63. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +329 -29
  64. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +155 -13
  65. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +54 -31
  66. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +1 -0
  67. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +232 -70
  68. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +57 -9
  69. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +224 -31
  70. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +5 -0
  71. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +4 -2
  72. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +1 -1
  73. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +1 -0
  74. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +164 -8
  75. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +6 -0
  76. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +5 -0
  77. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +47 -35
  78. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +22 -9
  79. package/deps/rocksdb/rocksdb/db/db_iter.cc +9 -0
  80. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +371 -6
  81. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +7 -5
  82. package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +22 -23
  83. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +0 -2
  84. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +4 -4
  85. package/deps/rocksdb/rocksdb/db/db_options_test.cc +40 -0
  86. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +32 -13
  87. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +1 -1
  88. package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +4 -4
  89. package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +68 -15
  90. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +1 -1
  91. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +2 -3
  92. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +6 -21
  93. package/deps/rocksdb/rocksdb/db/db_test.cc +644 -128
  94. package/deps/rocksdb/rocksdb/db/db_test2.cc +198 -81
  95. package/deps/rocksdb/rocksdb/db/db_test_util.cc +35 -10
  96. package/deps/rocksdb/rocksdb/db/db_test_util.h +8 -2
  97. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +36 -32
  98. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +11 -7
  99. package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +499 -0
  100. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +284 -20
  101. package/deps/rocksdb/rocksdb/db/db_write_test.cc +3 -3
  102. package/deps/rocksdb/rocksdb/db/dbformat.h +0 -5
  103. package/deps/rocksdb/rocksdb/db/error_handler.cc +24 -0
  104. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +12 -14
  105. package/deps/rocksdb/rocksdb/db/experimental.cc +13 -10
  106. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +1 -1
  107. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +22 -3
  108. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +21 -15
  109. package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +4 -6
  110. package/deps/rocksdb/rocksdb/db/flush_job.cc +11 -3
  111. package/deps/rocksdb/rocksdb/db/forward_iterator_bench.cc +5 -6
  112. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +4 -2
  113. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +17 -17
  114. package/deps/rocksdb/rocksdb/db/internal_stats.cc +13 -0
  115. package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -0
  116. package/deps/rocksdb/rocksdb/db/listener_test.cc +154 -27
  117. package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +6 -6
  118. package/deps/rocksdb/rocksdb/db/memtable.cc +197 -51
  119. package/deps/rocksdb/rocksdb/db/memtable.h +6 -0
  120. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +3 -4
  121. package/deps/rocksdb/rocksdb/db/merge_test.cc +37 -35
  122. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +2 -1
  123. package/deps/rocksdb/rocksdb/db/options_file_test.cc +4 -4
  124. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +9 -11
  125. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +10 -1
  126. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +292 -15
  127. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +10 -17
  128. package/deps/rocksdb/rocksdb/db/prefix_test.cc +6 -8
  129. package/deps/rocksdb/rocksdb/db/repair.cc +10 -10
  130. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +5 -5
  131. package/deps/rocksdb/rocksdb/db/table_cache.cc +142 -135
  132. package/deps/rocksdb/rocksdb/db/table_cache.h +30 -6
  133. package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +7 -7
  134. package/deps/rocksdb/rocksdb/db/version_builder.cc +11 -50
  135. package/deps/rocksdb/rocksdb/db/version_builder.h +2 -1
  136. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +2 -1
  137. package/deps/rocksdb/rocksdb/db/version_edit.cc +51 -2
  138. package/deps/rocksdb/rocksdb/db/version_edit.h +91 -29
  139. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +7 -7
  140. package/deps/rocksdb/rocksdb/db/version_set.cc +211 -50
  141. package/deps/rocksdb/rocksdb/db/version_set.h +40 -3
  142. package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +5 -0
  143. package/deps/rocksdb/rocksdb/db/version_set_test.cc +294 -21
  144. package/deps/rocksdb/rocksdb/db/version_util.cc +96 -0
  145. package/deps/rocksdb/rocksdb/db/version_util.h +24 -0
  146. package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +5 -5
  147. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +647 -31
  148. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +219 -1
  149. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +549 -12
  150. package/deps/rocksdb/rocksdb/db/write_callback_test.cc +3 -3
  151. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +1 -1
  152. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +19 -0
  153. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +21 -4
  154. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +32 -0
  155. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +74 -22
  156. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +9 -0
  157. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +143 -61
  158. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +15 -2
  159. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +76 -2
  160. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +92 -72
  161. package/deps/rocksdb/rocksdb/env/env.cc +1 -0
  162. package/deps/rocksdb/rocksdb/env/env_test.cc +365 -2
  163. package/deps/rocksdb/rocksdb/env/fs_posix.cc +31 -30
  164. package/deps/rocksdb/rocksdb/env/io_posix.cc +8 -11
  165. package/deps/rocksdb/rocksdb/env/io_posix.h +30 -1
  166. package/deps/rocksdb/rocksdb/env/io_posix_test.cc +43 -0
  167. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +1 -1
  168. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +108 -0
  169. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +32 -4
  170. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +4 -4
  171. package/deps/rocksdb/rocksdb/file/file_util.cc +8 -2
  172. package/deps/rocksdb/rocksdb/file/file_util.h +2 -1
  173. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +331 -12
  174. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +52 -35
  175. package/deps/rocksdb/rocksdb/folly.mk +22 -5
  176. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +1 -1
  177. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +100 -54
  178. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +67 -2
  179. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +149 -13
  180. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +1 -12
  181. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +78 -97
  182. package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +3 -3
  183. package/deps/rocksdb/rocksdb/include/rocksdb/external_table.h +2 -2
  184. package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +5 -0
  185. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +17 -2
  186. package/deps/rocksdb/rocksdb/include/rocksdb/functor_wrapper.h +1 -1
  187. package/deps/rocksdb/rocksdb/include/rocksdb/io_dispatcher.h +358 -0
  188. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +13 -0
  189. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +43 -0
  190. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +20 -0
  191. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +63 -21
  192. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +10 -1
  193. package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +1 -1
  194. package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +2 -7
  195. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +13 -0
  196. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +3 -14
  197. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +49 -9
  198. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +8 -0
  199. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +77 -6
  200. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +15 -0
  201. package/deps/rocksdb/rocksdb/include/rocksdb/tool_hooks.h +16 -10
  202. package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +5 -5
  203. package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +2 -4
  204. package/deps/rocksdb/rocksdb/include/rocksdb/user_defined_index.h +106 -46
  205. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/db_ttl.h +1 -1
  206. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +14 -1
  207. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/memory_util.h +5 -1
  208. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +2 -1
  209. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +7 -9
  210. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  211. package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +1 -2
  212. package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +2 -2
  213. package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +226 -8
  214. package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +490 -0
  215. package/deps/rocksdb/rocksdb/memtable/skiplist.h +3 -3
  216. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +11 -0
  217. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +4 -12
  218. package/deps/rocksdb/rocksdb/microbench/ribbon_bench.cc +5 -5
  219. package/deps/rocksdb/rocksdb/monitoring/file_read_sample.h +21 -4
  220. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +9 -3
  221. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +21 -2
  222. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +2 -2
  223. package/deps/rocksdb/rocksdb/options/cf_options.cc +21 -1
  224. package/deps/rocksdb/rocksdb/options/cf_options.h +2 -0
  225. package/deps/rocksdb/rocksdb/options/customizable_test.cc +0 -2
  226. package/deps/rocksdb/rocksdb/options/db_options.cc +26 -5
  227. package/deps/rocksdb/rocksdb/options/db_options.h +3 -1
  228. package/deps/rocksdb/rocksdb/options/options.cc +5 -1
  229. package/deps/rocksdb/rocksdb/options/options_helper.cc +7 -2
  230. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +109 -103
  231. package/deps/rocksdb/rocksdb/options/options_test.cc +14 -0
  232. package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +15 -17
  233. package/deps/rocksdb/rocksdb/port/lang.h +4 -0
  234. package/deps/rocksdb/rocksdb/port/port_example.h +0 -23
  235. package/deps/rocksdb/rocksdb/port/stack_trace.cc +36 -0
  236. package/deps/rocksdb/rocksdb/port/stack_trace.h +9 -0
  237. package/deps/rocksdb/rocksdb/src.mk +12 -0
  238. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +1 -2
  239. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
  240. package/deps/rocksdb/rocksdb/table/block_based/block.cc +571 -292
  241. package/deps/rocksdb/rocksdb/table/block_based/block.h +143 -53
  242. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +154 -90
  243. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +5 -1
  244. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +51 -14
  245. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +0 -2
  246. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +147 -734
  247. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +30 -233
  248. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +178 -108
  249. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +13 -0
  250. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +17 -4
  251. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +5 -2
  252. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +70 -0
  253. package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +168 -24
  254. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +25 -9
  255. package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +7 -4
  256. package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +9 -2
  257. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +548 -169
  258. package/deps/rocksdb/rocksdb/table/block_based/block_type.h +30 -0
  259. package/deps/rocksdb/rocksdb/table/block_based/block_util.h +156 -0
  260. package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.cc +73 -30
  261. package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.h +74 -7
  262. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index.h +1 -1
  263. package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +20 -14
  264. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +22 -12
  265. package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +1 -1
  266. package/deps/rocksdb/rocksdb/table/block_based/multi_scan_index_iterator.cc +332 -0
  267. package/deps/rocksdb/rocksdb/table/block_based/multi_scan_index_iterator.h +133 -0
  268. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +4 -2
  269. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +1 -1
  270. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +3 -2
  271. package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +4 -1
  272. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +0 -1
  273. package/deps/rocksdb/rocksdb/table/block_based/user_defined_index_wrapper.h +126 -46
  274. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +31 -3
  275. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +1 -2
  276. package/deps/rocksdb/rocksdb/table/cleanable_test.cc +3 -1
  277. package/deps/rocksdb/rocksdb/table/external_table.cc +25 -4
  278. package/deps/rocksdb/rocksdb/table/format.cc +27 -15
  279. package/deps/rocksdb/rocksdb/table/format.h +41 -15
  280. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +1 -0
  281. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +22 -12
  282. package/deps/rocksdb/rocksdb/table/meta_blocks.h +0 -1
  283. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +7 -21
  284. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +0 -1
  285. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +88 -13
  286. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +53 -42
  287. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +3 -12
  288. package/deps/rocksdb/rocksdb/table/table_builder.h +0 -4
  289. package/deps/rocksdb/rocksdb/table/table_properties.cc +18 -0
  290. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +2 -3
  291. package/deps/rocksdb/rocksdb/table/table_test.cc +848 -172
  292. package/deps/rocksdb/rocksdb/table/unique_id.cc +24 -20
  293. package/deps/rocksdb/rocksdb/table/unique_id_impl.h +8 -8
  294. package/deps/rocksdb/rocksdb/test_util/sync_point.h +5 -4
  295. package/deps/rocksdb/rocksdb/test_util/testutil.cc +2 -1
  296. package/deps/rocksdb/rocksdb/test_util/testutil.h +2 -2
  297. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +2 -1
  298. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +238 -120
  299. package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +2 -2
  300. package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +2 -4
  301. package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +4 -8
  302. package/deps/rocksdb/rocksdb/tools/dump/rocksdb_undump.cc +1 -1
  303. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +2 -3
  304. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +82 -20
  305. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +41 -47
  306. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +9 -0
  307. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +5 -6
  308. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +1 -1
  309. package/deps/rocksdb/rocksdb/tools/tool_hooks.cc +6 -5
  310. package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +4 -4
  311. package/deps/rocksdb/rocksdb/tools/write_stress.cc +1 -3
  312. package/deps/rocksdb/rocksdb/util/atomic.h +30 -23
  313. package/deps/rocksdb/rocksdb/util/auto_tune_compressor.cc +6 -7
  314. package/deps/rocksdb/rocksdb/util/auto_tune_compressor.h +3 -3
  315. package/deps/rocksdb/rocksdb/util/bit_fields.h +68 -46
  316. package/deps/rocksdb/rocksdb/util/bloom_impl.h +16 -16
  317. package/deps/rocksdb/rocksdb/util/coding.h +14 -27
  318. package/deps/rocksdb/rocksdb/util/compression.cc +365 -207
  319. package/deps/rocksdb/rocksdb/util/compression.h +16 -1298
  320. package/deps/rocksdb/rocksdb/util/compression_test.cc +347 -61
  321. package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +8 -9
  322. package/deps/rocksdb/rocksdb/util/crc32c_arm64.h +1 -1
  323. package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +1 -1
  324. package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +3 -3
  325. package/deps/rocksdb/rocksdb/util/filter_bench.cc +18 -18
  326. package/deps/rocksdb/rocksdb/util/gflags_compat.h +3 -3
  327. package/deps/rocksdb/rocksdb/util/hash_test.cc +19 -7
  328. package/deps/rocksdb/rocksdb/util/io_dispatcher_imp.cc +1099 -0
  329. package/deps/rocksdb/rocksdb/util/io_dispatcher_imp.h +36 -0
  330. package/deps/rocksdb/rocksdb/util/io_dispatcher_test.cc +1919 -0
  331. package/deps/rocksdb/rocksdb/util/math.h +3 -1
  332. package/deps/rocksdb/rocksdb/util/mutexlock.h +19 -19
  333. package/deps/rocksdb/rocksdb/util/ribbon_alg.h +25 -25
  334. package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +5 -7
  335. package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +4 -5
  336. package/deps/rocksdb/rocksdb/util/slice.cc +0 -10
  337. package/deps/rocksdb/rocksdb/util/slice_test.cc +35 -1
  338. package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +5 -7
  339. package/deps/rocksdb/rocksdb/util/status.cc +3 -1
  340. package/deps/rocksdb/rocksdb/util/stop_watch.h +2 -0
  341. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +4 -1
  342. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +123 -78
  343. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +12 -93
  344. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +1 -4
  345. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +0 -21
  346. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +6 -48
  347. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +94 -307
  348. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +12 -58
  349. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +2 -8
  350. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +2 -3
  351. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +205 -811
  352. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +18 -9
  353. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +2 -7
  354. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +1 -9
  355. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +17 -11
  356. package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.cc +1 -1
  357. package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.h +1 -1
  358. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +1 -1
  359. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +68 -61
  360. package/deps/rocksdb/rocksdb/utilities/debug.cc +2 -1
  361. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +105 -59
  362. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +274 -7
  363. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs_test.cc +94 -0
  364. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +13 -17
  365. package/deps/rocksdb/rocksdb/utilities/memory/memory_util.cc +16 -3
  366. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +25 -25
  367. package/deps/rocksdb/rocksdb/utilities/object_registry.cc +40 -40
  368. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +2 -5
  369. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +17 -19
  370. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +2 -2
  371. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +2 -2
  372. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +1 -1
  373. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +2 -2
  374. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +4 -13
  375. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +3 -3
  376. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +6 -0
  377. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_seqno_test.cc +431 -0
  378. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +1 -2
  379. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +91 -0
  380. package/deps/rocksdb/rocksdb/utilities/trie_index/bitvector.cc +562 -0
  381. package/deps/rocksdb/rocksdb/utilities/trie_index/bitvector.h +615 -0
  382. package/deps/rocksdb/rocksdb/utilities/trie_index/louds_trie.cc +2575 -0
  383. package/deps/rocksdb/rocksdb/utilities/trie_index/louds_trie.h +685 -0
  384. package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_db_test.cc +2843 -0
  385. package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_factory.cc +567 -0
  386. package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_factory.h +275 -0
  387. package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_test.cc +5183 -0
  388. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +4 -3
  389. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +1 -1
  390. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +2 -2
  391. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +3 -3
  392. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +93 -88
  393. package/deps/rocksdb/rocksdb.gyp +7 -0
  394. package/index.js +70 -10
  395. package/iterator.js +25 -3
  396. package/max_rev_operator.h +9 -5
  397. package/package.json +1 -1
  398. package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
  399. package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
  400. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_custom_library.h +0 -43
  401. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_util.h +0 -55
package/binding.cc CHANGED
@@ -20,6 +20,7 @@
20
20
 
21
21
  #include <re2/re2.h>
22
22
 
23
+ #include <cmath>
23
24
  #include <iostream>
24
25
  #include <memory>
25
26
  #include <optional>
@@ -550,10 +551,10 @@ class Iterator final : public BaseIterator {
550
551
  rocksdb::ColumnFamilyHandle* column = database->db->DefaultColumnFamily();
551
552
  NAPI_STATUS_THROWS(GetProperty(env, options, "column", column));
552
553
 
553
- Encoding keyEncoding;
554
+ Encoding keyEncoding = Encoding::Buffer;
554
555
  NAPI_STATUS_THROWS(GetProperty(env, options, "keyEncoding", keyEncoding));
555
556
 
556
- Encoding valueEncoding;
557
+ Encoding valueEncoding = Encoding::Buffer;
557
558
  NAPI_STATUS_THROWS(GetProperty(env, options, "valueEncoding", valueEncoding));
558
559
 
559
560
  rocksdb::ReadOptions readOptions;
@@ -600,7 +601,9 @@ class Iterator final : public BaseIterator {
600
601
  std::vector<rocksdb::PinnableSlice> keys;
601
602
  std::vector<rocksdb::PinnableSlice> values;
602
603
  size_t count = 0;
604
+ size_t bytes = 0;
603
605
  bool finished = false;
606
+ bool limited = false;
604
607
  };
605
608
 
606
609
  napi_value resourceName;
@@ -614,13 +617,16 @@ class Iterator final : public BaseIterator {
614
617
 
615
618
  const auto deadline = timeout ? database_->db->GetEnv()->NowMicros() + timeout * 1000 : 0;
616
619
 
617
- size_t bytesRead = 0;
618
- while (state.count < count) {
619
- if (bytesRead > highWaterMarkBytes_) {
620
+ while (true) {
621
+ if (state.count >= count || state.bytes > highWaterMarkBytes_) {
622
+ // Batch cap (size/bytes) reached: more data may exist, so this is
623
+ // "limited", not "finished".
624
+ state.limited = true;
620
625
  break;
621
626
  }
622
627
 
623
628
  if (deadline > 0 && database_->db->GetEnv()->NowMicros() > deadline) {
629
+ // Timed out: neither finished nor limited; the caller may retry.
624
630
  break;
625
631
  }
626
632
 
@@ -632,12 +638,19 @@ class Iterator final : public BaseIterator {
632
638
 
633
639
  ROCKS_STATUS_RETURN(Status());
634
640
 
635
- if (!Valid() || !Increment()) {
641
+ if (!Valid()) {
642
+ // Iterator naturally exhausted.
636
643
  state.finished = true;
637
644
  break;
638
645
  }
639
646
 
640
- bytesRead += CurrentKey().size() + CurrentValue().size();
647
+ if (!Increment()) {
648
+ // Hit the user's `limit` option: terminal, and flag that it was a
649
+ // limit rather than natural exhaustion.
650
+ state.finished = true;
651
+ state.limited = true;
652
+ break;
653
+ }
641
654
 
642
655
  if (keyFilter_ && !re2::RE2::PartialMatch(CurrentKey().ToStringView(), *keyFilter_)) {
643
656
  continue;
@@ -650,18 +663,22 @@ class Iterator final : public BaseIterator {
650
663
  if (keys_ && values_) {
651
664
  rocksdb::PinnableSlice k;
652
665
  k.PinSelf(CurrentKey());
666
+ state.bytes += k.size();
653
667
  state.keys.push_back(std::move(k));
654
668
 
655
669
  rocksdb::PinnableSlice v;
656
670
  v.PinSelf(CurrentValue());
671
+ state.bytes += v.size();
657
672
  state.values.push_back(std::move(v));
658
673
  } else if (keys_) {
659
674
  rocksdb::PinnableSlice k;
660
675
  k.PinSelf(CurrentKey());
676
+ state.bytes += k.size();
661
677
  state.keys.push_back(std::move(k));
662
678
  } else if (values_) {
663
679
  rocksdb::PinnableSlice v;
664
680
  v.PinSelf(CurrentValue());
681
+ state.bytes += v.size();
665
682
  state.values.push_back(std::move(v));
666
683
  } else {
667
684
  assert(false);
@@ -675,6 +692,9 @@ class Iterator final : public BaseIterator {
675
692
  napi_value finished;
676
693
  NAPI_STATUS_RETURN(napi_get_boolean(env, state.finished, &finished));
677
694
 
695
+ napi_value limited;
696
+ NAPI_STATUS_RETURN(napi_get_boolean(env, state.limited, &limited));
697
+
678
698
  napi_value rows;
679
699
  NAPI_STATUS_RETURN(napi_create_array(env, &rows));
680
700
 
@@ -702,6 +722,7 @@ class Iterator final : public BaseIterator {
702
722
  NAPI_STATUS_RETURN(napi_create_object(env, result));
703
723
  NAPI_STATUS_RETURN(napi_set_named_property(env, *result, "rows", rows));
704
724
  NAPI_STATUS_RETURN(napi_set_named_property(env, *result, "finished", finished));
725
+ NAPI_STATUS_RETURN(napi_set_named_property(env, *result, "limited", limited));
705
726
 
706
727
  return napi_ok;
707
728
  }));
@@ -713,19 +734,27 @@ class Iterator final : public BaseIterator {
713
734
  napi_value finished;
714
735
  NAPI_STATUS_THROWS(napi_get_boolean(env, false, &finished));
715
736
 
737
+ napi_value limited;
738
+ NAPI_STATUS_THROWS(napi_get_boolean(env, false, &limited));
739
+
716
740
  napi_value rows;
717
741
  NAPI_STATUS_THROWS(napi_create_array(env, &rows));
718
742
 
719
743
  const auto deadline = timeout ? database_->db->GetEnv()->NowMicros() + timeout * 1000 : 0;
720
744
 
721
745
  size_t idx = 0;
722
- size_t bytesRead = 0;
723
- while (idx < count * 2) {
724
- if (bytesRead > highWaterMarkBytes_) {
746
+ size_t bytes = 0;
747
+ while (true) {
748
+ if (idx >= static_cast<size_t>(count) * 2 || bytes > highWaterMarkBytes_) {
749
+ // Batch cap (size/bytes) reached: more data may exist, so this is
750
+ // "limited", not "finished". (count is uint32_t; widen before *2 so
751
+ // query()'s UINT32_MAX count doesn't overflow to a small cap.)
752
+ NAPI_STATUS_THROWS(napi_get_boolean(env, true, &limited));
725
753
  break;
726
754
  }
727
755
 
728
756
  if (deadline > 0 && database_->db->GetEnv()->NowMicros() > deadline) {
757
+ // Timed out: neither finished nor limited; the caller may retry.
729
758
  break;
730
759
  }
731
760
 
@@ -737,12 +766,19 @@ class Iterator final : public BaseIterator {
737
766
 
738
767
  ROCKS_STATUS_THROWS_NAPI(Status());
739
768
 
740
- if (!Valid() || !Increment()) {
769
+ if (!Valid()) {
770
+ // Iterator naturally exhausted.
741
771
  NAPI_STATUS_THROWS(napi_get_boolean(env, true, &finished));
742
772
  break;
743
773
  }
744
774
 
745
- bytesRead += CurrentKey().size() + CurrentValue().size();
775
+ if (!Increment()) {
776
+ // Hit the user's `limit` option: terminal, and flag that it was a limit
777
+ // rather than natural exhaustion.
778
+ NAPI_STATUS_THROWS(napi_get_boolean(env, true, &finished));
779
+ NAPI_STATUS_THROWS(napi_get_boolean(env, true, &limited));
780
+ break;
781
+ }
746
782
 
747
783
  if (keyFilter_ && !re2::RE2::PartialMatch(CurrentKey().ToStringView(), *keyFilter_)) {
748
784
  continue;
@@ -756,12 +792,15 @@ class Iterator final : public BaseIterator {
756
792
  napi_value val;
757
793
 
758
794
  if (keys_ && values_) {
795
+ bytes += CurrentKey().size() + CurrentValue().size();
759
796
  NAPI_STATUS_THROWS(Convert(env, CurrentKey(), keyEncoding_, key, unsafe_));
760
797
  NAPI_STATUS_THROWS(Convert(env, CurrentValue(), valueEncoding_, val, unsafe_));
761
798
  } else if (keys_) {
799
+ bytes += CurrentKey().size();
762
800
  NAPI_STATUS_THROWS(Convert(env, CurrentKey(), keyEncoding_, key, unsafe_));
763
801
  NAPI_STATUS_THROWS(napi_get_undefined(env, &val));
764
802
  } else if (values_) {
803
+ bytes += CurrentValue().size();
765
804
  NAPI_STATUS_THROWS(napi_get_undefined(env, &key));
766
805
  NAPI_STATUS_THROWS(Convert(env, CurrentValue(), valueEncoding_, val, unsafe_));
767
806
  } else {
@@ -776,6 +815,7 @@ class Iterator final : public BaseIterator {
776
815
  NAPI_STATUS_THROWS(napi_create_object(env, &ret));
777
816
  NAPI_STATUS_THROWS(napi_set_named_property(env, ret, "rows", rows));
778
817
  NAPI_STATUS_THROWS(napi_set_named_property(env, ret, "finished", finished));
818
+ NAPI_STATUS_THROWS(napi_set_named_property(env, ret, "limited", limited));
779
819
  return ret;
780
820
  }
781
821
  };
@@ -1203,7 +1243,7 @@ napi_status InitOptions(napi_env env, T& columnOptions, const U& options) {
1203
1243
  GetProperty(env, options, "cacheIndexAndFilterBlocks", tableOptions.cache_index_and_filter_blocks));
1204
1244
  NAPI_STATUS_RETURN(GetProperty(env, options, "cacheIndexAndFilterBlocksWithHighPriority",
1205
1245
  tableOptions.cache_index_and_filter_blocks_with_high_priority));
1206
- NAPI_STATUS_RETURN(GetProperty(env, options, "decouplePartitionedFilters", tableOptions.block_restart_interval));
1246
+ NAPI_STATUS_RETURN(GetProperty(env, options, "decouplePartitionedFilters", tableOptions.decouple_partitioned_filters));
1207
1247
  NAPI_STATUS_RETURN(GetProperty(env, options, "optimizeFiltersForMemory", tableOptions.optimize_filters_for_memory));
1208
1248
  NAPI_STATUS_RETURN(GetProperty(env, options, "maxAutoReadaheadSize", tableOptions.max_auto_readahead_size));
1209
1249
  NAPI_STATUS_RETURN(GetProperty(env, options, "initialAutoReadaheadSize", tableOptions.initial_auto_readahead_size));
@@ -1221,6 +1261,11 @@ NAPI_METHOD(db_get_identity) {
1221
1261
  Database* database;
1222
1262
  NAPI_STATUS_THROWS(napi_get_value_external(env, argv[0], reinterpret_cast<void**>(&database)));
1223
1263
 
1264
+ if (!database->db) {
1265
+ napi_throw_error(env, "LEVEL_DATABASE_NOT_OPEN", "Database is not open");
1266
+ return NULL;
1267
+ }
1268
+
1224
1269
  std::string identity;
1225
1270
  ROCKS_STATUS_THROWS_NAPI(database->db->GetDbIdentity(identity));
1226
1271
 
@@ -1258,11 +1303,11 @@ NAPI_METHOD(db_open) {
1258
1303
 
1259
1304
  uint32_t walTTL = 0;
1260
1305
  NAPI_STATUS_THROWS(GetProperty(env, options, "walTTL", walTTL));
1261
- dbOptions.WAL_ttl_seconds = walTTL / 1e3;
1306
+ dbOptions.WAL_ttl_seconds = static_cast<uint32_t>(std::ceil(walTTL / 1e3));
1262
1307
 
1263
1308
  uint32_t walSizeLimit = 0;
1264
1309
  NAPI_STATUS_THROWS(GetProperty(env, options, "walSizeLimit", walSizeLimit));
1265
- dbOptions.WAL_size_limit_MB = walSizeLimit / 1e6;
1310
+ dbOptions.WAL_size_limit_MB = static_cast<uint32_t>(std::ceil(walSizeLimit / 1e6));
1266
1311
 
1267
1312
  NAPI_STATUS_THROWS(GetProperty(env, options, "maxTotalWalSize", dbOptions.max_total_wal_size));
1268
1313
 
@@ -1392,13 +1437,10 @@ NAPI_METHOD(db_open) {
1392
1437
  [=](auto& handles) {
1393
1438
  assert(!database->db);
1394
1439
 
1395
- rocksdb::DB* db = nullptr;
1396
-
1397
- const auto status = descriptors.empty()
1398
- ? rocksdb::DB::Open(dbOptions, database->location, &db)
1399
- : rocksdb::DB::Open(dbOptions, database->location, descriptors, &handles, &db);
1400
-
1401
- database->db.reset(db);
1440
+ const auto status =
1441
+ descriptors.empty()
1442
+ ? rocksdb::DB::Open(dbOptions, database->location, &database->db)
1443
+ : rocksdb::DB::Open(dbOptions, database->location, descriptors, &handles, &database->db);
1402
1444
 
1403
1445
  return status;
1404
1446
  },
@@ -1724,6 +1766,11 @@ NAPI_METHOD(db_get_latest_sequence) {
1724
1766
  Database* database;
1725
1767
  NAPI_STATUS_THROWS(napi_get_value_external(env, argv[0], reinterpret_cast<void**>(&database)));
1726
1768
 
1769
+ if (!database->db) {
1770
+ napi_throw_error(env, "LEVEL_DATABASE_NOT_OPEN", "Database is not open");
1771
+ return NULL;
1772
+ }
1773
+
1727
1774
  const auto seq = database->db->GetLatestSequenceNumber();
1728
1775
 
1729
1776
  napi_value result;
@@ -1907,7 +1954,7 @@ NAPI_METHOD(batch_put) {
1907
1954
  }
1908
1955
 
1909
1956
  NAPI_METHOD(batch_put_log_data) {
1910
- NAPI_ARGV(3);
1957
+ NAPI_ARGV(2);
1911
1958
 
1912
1959
  rocksdb::WriteBatch* batch;
1913
1960
  NAPI_STATUS_THROWS(napi_get_value_external(env, argv[0], reinterpret_cast<void**>(&batch)));
@@ -0,0 +1,86 @@
1
+ # When making changes, verify the output of:
2
+ # clang-tidy -list-checks
3
+ ---
4
+ Checks: "-*,\
5
+ bugprone-argument-comment,\
6
+ bugprone-dangling-handle,\
7
+ bugprone-fold-init-type,\
8
+ bugprone-forward-declaration-namespace,\
9
+ bugprone-forwarding-reference-overload,\
10
+ bugprone-shadow,\
11
+ bugprone-sizeof-*,\
12
+ bugprone-string-constructor,\
13
+ bugprone-undefined-memory-manipulation,\
14
+ bugprone-unused-return-value,\
15
+ bugprone-use-after-move,\
16
+ cert-env33-c,\
17
+ cert-err58-cpp,\
18
+ cert-msc30-c,\
19
+ cert-msc50-cpp,\
20
+ clang-analyzer-*,\
21
+ clang-diagnostic-*,\
22
+ -clang-diagnostic-missing-designated-field-initializers,\
23
+ concurrency-mt-unsafe,\
24
+ cppcoreguidelines-avoid-non-const-global-variables,\
25
+ cppcoreguidelines-missing-std-forward,\
26
+ cppcoreguidelines-pro-type-member-init,\
27
+ cppcoreguidelines-special-member-functions,\
28
+ cppcoreguidelines-virtual-class-destructor,\
29
+ google-build-using-namespace,\
30
+ google-explicit-constructor,\
31
+ google-readability-avoid-underscore-in-googletest-name,\
32
+ misc-definitions-in-headers,\
33
+ misc-redundant-expression,\
34
+ modernize-make-shared,\
35
+ modernize-use-emplace,\
36
+ modernize-use-noexcept,\
37
+ modernize-use-override,\
38
+ modernize-use-using,\
39
+ performance-faster-string-find,\
40
+ performance-for-range-copy,\
41
+ performance-implicit-conversion-in-loop,\
42
+ performance-inefficient-algorithm,\
43
+ performance-inefficient-string-concatenation,\
44
+ performance-inefficient-vector-operation,\
45
+ performance-move-const-arg,\
46
+ performance-move-constructor-init,\
47
+ performance-no-automatic-move,\
48
+ performance-no-int-to-ptr,\
49
+ performance-noexcept-move-constructor,\
50
+ performance-noexcept-swap,\
51
+ performance-trivially-destructible,\
52
+ performance-type-promotion-in-math-fn,\
53
+ performance-unnecessary-copy-initialization,\
54
+ performance-unnecessary-value-param,\
55
+ readability-braces-around-statements,\
56
+ readability-duplicate-include,\
57
+ readability-isolate-declaration,\
58
+ readability-operators-representation,\
59
+ readability-redundant-string-init"
60
+
61
+ WarningsAsErrors: "bugprone-use-after-move"
62
+
63
+ CheckOptions:
64
+ - key: bugprone-easily-swappable-parameters.MinimumLength
65
+ value: 4
66
+ - key: cppcoreguidelines-avoid-non-const-global-variables.AllowThreadLocal
67
+ value: true
68
+ - key: cppcoreguidelines-special-member-functions.AllowSoleDefaultDtor
69
+ value: true
70
+ - key: cppcoreguidelines-special-member-functions.AllowImplicitlyDeletedCopyOrMove
71
+ value: true
72
+ - key: modernize-use-using.IgnoreExternC
73
+ value: true
74
+ - key: performance-move-const-arg.CheckTriviallyCopyableMove
75
+ value: false
76
+ - key: performance-unnecessary-value-param.AllowedTypes
77
+ value: '[Pp]ointer$;[Pp]tr$;[Rr]ef(erence)?$'
78
+ - key: performance-unnecessary-copy-initialization.AllowedTypes
79
+ value: '[Pp]ointer$;[Pp]tr$;[Rr]ef(erence)?$'
80
+ - key: readability-operators-representation.BinaryOperators
81
+ value: '&&;&=;&;|;~;!;!=;||;|=;^;^='
82
+ - key: readability-redundant-string-init.StringNames
83
+ value: '::std::basic_string'
84
+ - key: readability-named-parameter.InsertPlainNamesInForwardDecls
85
+ value: true
86
+ ...
@@ -106,6 +106,7 @@ cpp_library_wrapper(name="rocksdb_lib", srcs=[
106
106
  "db/version_edit.cc",
107
107
  "db/version_edit_handler.cc",
108
108
  "db/version_set.cc",
109
+ "db/version_util.cc",
109
110
  "db/wal_edit.cc",
110
111
  "db/wal_manager.cc",
111
112
  "db/wide/wide_column_serialization.cc",
@@ -207,6 +208,7 @@ cpp_library_wrapper(name="rocksdb_lib", srcs=[
207
208
  "table/block_based/hash_index_reader.cc",
208
209
  "table/block_based/index_builder.cc",
209
210
  "table/block_based/index_reader_common.cc",
211
+ "table/block_based/multi_scan_index_iterator.cc",
210
212
  "table/block_based/parsed_full_filter_block.cc",
211
213
  "table/block_based/partitioned_filter_block.cc",
212
214
  "table/block_based/partitioned_index_iterator.cc",
@@ -268,6 +270,7 @@ cpp_library_wrapper(name="rocksdb_lib", srcs=[
268
270
  "util/dynamic_bloom.cc",
269
271
  "util/file_checksum_helper.cc",
270
272
  "util/hash.cc",
273
+ "util/io_dispatcher_imp.cc",
271
274
  "util/murmurhash.cc",
272
275
  "util/random.cc",
273
276
  "util/rate_limiter.cc",
@@ -361,6 +364,9 @@ cpp_library_wrapper(name="rocksdb_lib", srcs=[
361
364
  "utilities/transactions/write_prepared_txn_db.cc",
362
365
  "utilities/transactions/write_unprepared_txn.cc",
363
366
  "utilities/transactions/write_unprepared_txn_db.cc",
367
+ "utilities/trie_index/bitvector.cc",
368
+ "utilities/trie_index/louds_trie.cc",
369
+ "utilities/trie_index/trie_index_factory.cc",
364
370
  "utilities/ttl/db_ttl_impl.cc",
365
371
  "utilities/types_util.cc",
366
372
  "utilities/wal_filter.cc",
@@ -4822,6 +4828,12 @@ cpp_unittest_wrapper(name="db_clip_test",
4822
4828
  extra_compiler_flags=[])
4823
4829
 
4824
4830
 
4831
+ cpp_unittest_wrapper(name="db_compaction_abort_test",
4832
+ srcs=["db/db_compaction_abort_test.cc"],
4833
+ deps=[":rocksdb_test_lib"],
4834
+ extra_compiler_flags=[])
4835
+
4836
+
4825
4837
  cpp_unittest_wrapper(name="db_compaction_filter_test",
4826
4838
  srcs=["db/db_compaction_filter_test.cc"],
4827
4839
  deps=[":rocksdb_test_lib"],
@@ -5130,6 +5142,12 @@ cpp_unittest_wrapper(name="faiss_ivf_index_test",
5130
5142
  extra_compiler_flags=[])
5131
5143
 
5132
5144
 
5145
+ cpp_unittest_wrapper(name="fault_injection_fs_test",
5146
+ srcs=["utilities/fault_injection_fs_test.cc"],
5147
+ deps=[":rocksdb_test_lib"],
5148
+ extra_compiler_flags=[])
5149
+
5150
+
5133
5151
  cpp_unittest_wrapper(name="fault_injection_test",
5134
5152
  srcs=["db/fault_injection_test.cc"],
5135
5153
  deps=[":rocksdb_test_lib"],
@@ -5214,6 +5232,12 @@ cpp_unittest_wrapper(name="interval_test",
5214
5232
  extra_compiler_flags=[])
5215
5233
 
5216
5234
 
5235
+ cpp_unittest_wrapper(name="io_dispatcher_test",
5236
+ srcs=["util/io_dispatcher_test.cc"],
5237
+ deps=[":rocksdb_test_lib"],
5238
+ extra_compiler_flags=[])
5239
+
5240
+
5217
5241
  cpp_unittest_wrapper(name="io_posix_test",
5218
5242
  srcs=["env/io_posix_test.cc"],
5219
5243
  deps=[":rocksdb_test_lib"],
@@ -5610,6 +5634,18 @@ cpp_unittest_wrapper(name="transaction_test",
5610
5634
  extra_compiler_flags=[])
5611
5635
 
5612
5636
 
5637
+ cpp_unittest_wrapper(name="trie_index_db_test",
5638
+ srcs=["utilities/trie_index/trie_index_db_test.cc"],
5639
+ deps=[":rocksdb_test_lib"],
5640
+ extra_compiler_flags=[])
5641
+
5642
+
5643
+ cpp_unittest_wrapper(name="trie_index_test",
5644
+ srcs=["utilities/trie_index/trie_index_test.cc"],
5645
+ deps=[":rocksdb_test_lib"],
5646
+ extra_compiler_flags=[])
5647
+
5648
+
5613
5649
  cpp_unittest_wrapper(name="ttl_test",
5614
5650
  srcs=["utilities/ttl/ttl_test.cc"],
5615
5651
  deps=[":rocksdb_test_lib"],
@@ -5712,6 +5748,12 @@ cpp_unittest_wrapper(name="write_controller_test",
5712
5748
  extra_compiler_flags=[])
5713
5749
 
5714
5750
 
5751
+ cpp_unittest_wrapper(name="write_prepared_transaction_seqno_test",
5752
+ srcs=["utilities/transactions/write_prepared_transaction_seqno_test.cc"],
5753
+ deps=[":rocksdb_test_lib"],
5754
+ extra_compiler_flags=[])
5755
+
5756
+
5715
5757
  cpp_unittest_wrapper(name="write_prepared_transaction_test",
5716
5758
  srcs=["utilities/transactions/write_prepared_transaction_test.cc"],
5717
5759
  deps=[":rocksdb_test_lib"],
@@ -766,6 +766,7 @@ set(SOURCES
766
766
  db/version_edit.cc
767
767
  db/version_edit_handler.cc
768
768
  db/version_set.cc
769
+ db/version_util.cc
769
770
  db/wal_edit.cc
770
771
  db/wal_manager.cc
771
772
  db/wide/wide_column_serialization.cc
@@ -842,6 +843,7 @@ set(SOURCES
842
843
  table/block_based/block_based_table_builder.cc
843
844
  table/block_based/block_based_table_factory.cc
844
845
  table/block_based/block_based_table_iterator.cc
846
+ table/block_based/multi_scan_index_iterator.cc
845
847
  table/block_based/block_based_table_reader.cc
846
848
  table/block_based/block_builder.cc
847
849
  table/block_based/block_cache.cc
@@ -918,6 +920,7 @@ set(SOURCES
918
920
  util/data_structure.cc
919
921
  util/dynamic_bloom.cc
920
922
  util/hash.cc
923
+ util/io_dispatcher_imp.cc
921
924
  util/murmurhash.cc
922
925
  util/random.cc
923
926
  util/rate_limiter.cc
@@ -998,6 +1001,9 @@ set(SOURCES
998
1001
  utilities/transactions/write_prepared_txn_db.cc
999
1002
  utilities/transactions/write_unprepared_txn.cc
1000
1003
  utilities/transactions/write_unprepared_txn_db.cc
1004
+ utilities/trie_index/bitvector.cc
1005
+ utilities/trie_index/louds_trie.cc
1006
+ utilities/trie_index/trie_index_factory.cc
1001
1007
  utilities/types_util.cc
1002
1008
  utilities/ttl/db_ttl_impl.cc
1003
1009
  utilities/wal_filter.cc
@@ -1381,6 +1387,7 @@ if(WITH_TESTS)
1381
1387
  db/db_bloom_filter_test.cc
1382
1388
  db/db_compaction_filter_test.cc
1383
1389
  db/db_compaction_test.cc
1390
+ db/db_compaction_abort_test.cc
1384
1391
  db/db_clip_test.cc
1385
1392
  db/db_dynamic_level_test.cc
1386
1393
  db/db_encryption_test.cc
@@ -1529,6 +1536,7 @@ if(WITH_TESTS)
1529
1536
  utilities/cassandra/cassandra_serialize_test.cc
1530
1537
  utilities/checkpoint/checkpoint_test.cc
1531
1538
  utilities/env_timed_test.cc
1539
+ utilities/fault_injection_fs_test.cc
1532
1540
  utilities/memory/memory_test.cc
1533
1541
  utilities/merge_operators/string_append/stringappend_test.cc
1534
1542
  utilities/object_registry_test.cc
@@ -1546,9 +1554,12 @@ if(WITH_TESTS)
1546
1554
  utilities/transactions/lock/point/point_lock_manager_stress_test.cc
1547
1555
  utilities/transactions/write_committed_transaction_ts_test.cc
1548
1556
  utilities/transactions/write_prepared_transaction_test.cc
1557
+ utilities/transactions/write_prepared_transaction_seqno_test.cc
1549
1558
  utilities/transactions/write_unprepared_transaction_test.cc
1550
1559
  utilities/transactions/lock/range/range_locking_test.cc
1551
1560
  utilities/transactions/timestamped_snapshot_test.cc
1561
+ utilities/trie_index/trie_index_db_test.cc
1562
+ utilities/trie_index/trie_index_test.cc
1552
1563
  utilities/ttl/ttl_test.cc
1553
1564
  utilities/types_util_test.cc
1554
1565
  utilities/util_merge_operators_test.cc