@nxtedition/rocksdb 13.5.7 → 13.5.9

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 (509) hide show
  1. package/binding.cc +248 -70
  2. package/binding.gyp +2 -2
  3. package/deps/rocksdb/rocksdb/BUCK +12 -0
  4. package/deps/rocksdb/rocksdb/CMakeLists.txt +7 -0
  5. package/deps/rocksdb/rocksdb/Makefile +28 -23
  6. package/deps/rocksdb/rocksdb/cache/cache.cc +0 -1
  7. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +1 -2
  8. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +43 -39
  9. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +2 -0
  10. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +0 -1
  11. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +2 -3
  12. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +2 -2
  13. package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +1 -3
  14. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +11 -1
  15. package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache_test.cc +13 -5
  16. package/deps/rocksdb/rocksdb/crash_test.mk +61 -15
  17. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +136 -45
  18. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +34 -16
  19. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +10 -7
  20. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +1 -2
  21. package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.h +1 -0
  22. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +12 -9
  23. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +3 -4
  24. package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +2 -2
  25. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +3 -4
  26. package/deps/rocksdb/rocksdb/db/builder.cc +22 -8
  27. package/deps/rocksdb/rocksdb/db/builder.h +5 -4
  28. package/deps/rocksdb/rocksdb/db/c.cc +556 -15
  29. package/deps/rocksdb/rocksdb/db/c_test.c +133 -12
  30. package/deps/rocksdb/rocksdb/db/column_family.cc +114 -50
  31. package/deps/rocksdb/rocksdb/db/column_family.h +53 -36
  32. package/deps/rocksdb/rocksdb/db/column_family_test.cc +6 -6
  33. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +0 -1
  34. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +95 -70
  35. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +71 -51
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +7 -86
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +26 -68
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +0 -122
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +453 -258
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +117 -92
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +0 -1
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +38 -38
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +24 -17
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +34 -45
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +32 -31
  46. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +12 -3
  47. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +1 -1
  48. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +2 -1
  49. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +10 -10
  50. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +2 -1
  51. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +82 -34
  52. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +267 -179
  53. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +4 -1
  54. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +273 -89
  55. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +300 -14
  56. package/deps/rocksdb/rocksdb/db/compaction/compaction_state.cc +4 -4
  57. package/deps/rocksdb/rocksdb/db/compaction/compaction_state.h +2 -2
  58. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +28 -23
  59. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +69 -51
  60. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +522 -245
  61. package/deps/rocksdb/rocksdb/db/convenience.cc +15 -4
  62. package/deps/rocksdb/rocksdb/db/corruption_test.cc +1 -3
  63. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +0 -2
  64. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +196 -17
  65. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +74 -62
  66. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +48 -0
  67. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +682 -250
  68. package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +0 -1
  69. package/deps/rocksdb/rocksdb/db/db_encryption_test.cc +3 -4
  70. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +11 -16
  71. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +57 -0
  72. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +2 -2
  73. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +1 -1
  74. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +540 -490
  75. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +347 -188
  76. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +584 -217
  77. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +13 -9
  78. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +5 -7
  79. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +40 -36
  80. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +1 -3
  81. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +751 -372
  82. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +35 -32
  83. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +24 -2
  84. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +125 -63
  85. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +2 -2
  86. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +311 -196
  87. package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +15 -5
  88. package/deps/rocksdb/rocksdb/db/db_iter.cc +42 -29
  89. package/deps/rocksdb/rocksdb/db/db_iter.h +96 -31
  90. package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +3 -4
  91. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +168 -228
  92. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +454 -0
  93. package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +8 -8
  94. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +0 -1
  95. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +90 -0
  96. package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +60 -2
  97. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +7 -3
  98. package/deps/rocksdb/rocksdb/db/db_options_test.cc +85 -27
  99. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +3 -1
  100. package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +0 -2
  101. package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +114 -2
  102. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +0 -1
  103. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +0 -1
  104. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +51 -3
  105. package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +0 -1
  106. package/deps/rocksdb/rocksdb/db/db_test.cc +325 -18
  107. package/deps/rocksdb/rocksdb/db/db_test2.cc +644 -20
  108. package/deps/rocksdb/rocksdb/db/db_test_util.cc +14 -6
  109. package/deps/rocksdb/rocksdb/db/db_test_util.h +9 -0
  110. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +64 -45
  111. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +203 -14
  112. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +259 -30
  113. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +0 -1
  114. package/deps/rocksdb/rocksdb/db/db_write_test.cc +75 -1
  115. package/deps/rocksdb/rocksdb/db/dbformat.h +70 -6
  116. package/deps/rocksdb/rocksdb/db/deletefile_test.cc +0 -190
  117. package/deps/rocksdb/rocksdb/db/error_handler.cc +22 -7
  118. package/deps/rocksdb/rocksdb/db/error_handler.h +16 -1
  119. package/deps/rocksdb/rocksdb/db/event_helpers.cc +41 -26
  120. package/deps/rocksdb/rocksdb/db/experimental.cc +4 -3
  121. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +464 -78
  122. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +166 -69
  123. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +54 -25
  124. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +1 -3
  125. package/deps/rocksdb/rocksdb/db/flush_job.cc +98 -81
  126. package/deps/rocksdb/rocksdb/db/flush_job.h +4 -9
  127. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +80 -84
  128. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +1 -1
  129. package/deps/rocksdb/rocksdb/db/forward_iterator.h +2 -2
  130. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +12 -19
  131. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +0 -2
  132. package/deps/rocksdb/rocksdb/db/internal_stats.cc +41 -15
  133. package/deps/rocksdb/rocksdb/db/internal_stats.h +63 -52
  134. package/deps/rocksdb/rocksdb/db/job_context.h +59 -24
  135. package/deps/rocksdb/rocksdb/db/listener_test.cc +69 -10
  136. package/deps/rocksdb/rocksdb/db/log_format.h +11 -2
  137. package/deps/rocksdb/rocksdb/db/log_reader.cc +147 -34
  138. package/deps/rocksdb/rocksdb/db/log_reader.h +40 -11
  139. package/deps/rocksdb/rocksdb/db/log_test.cc +16 -3
  140. package/deps/rocksdb/rocksdb/db/log_writer.cc +102 -55
  141. package/deps/rocksdb/rocksdb/db/log_writer.h +21 -2
  142. package/deps/rocksdb/rocksdb/db/malloc_stats.h +0 -2
  143. package/deps/rocksdb/rocksdb/db/memtable.cc +16 -47
  144. package/deps/rocksdb/rocksdb/db/memtable.h +76 -12
  145. package/deps/rocksdb/rocksdb/db/memtable_list.cc +23 -20
  146. package/deps/rocksdb/rocksdb/db/memtable_list.h +9 -11
  147. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +18 -37
  148. package/deps/rocksdb/rocksdb/db/merge_context.h +2 -1
  149. package/deps/rocksdb/rocksdb/db/merge_test.cc +8 -0
  150. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +3 -5
  151. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +15 -7
  152. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.h +6 -3
  153. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +22 -4
  154. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +41 -1
  155. package/deps/rocksdb/rocksdb/db/prefix_test.cc +0 -1
  156. package/deps/rocksdb/rocksdb/db/repair.cc +29 -34
  157. package/deps/rocksdb/rocksdb/db/repair_test.cc +0 -1
  158. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +14 -15
  159. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +1 -3
  160. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +47 -1
  161. package/deps/rocksdb/rocksdb/db/table_cache.cc +3 -3
  162. package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +1 -3
  163. package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +2 -1
  164. package/deps/rocksdb/rocksdb/db/version_builder.cc +2 -2
  165. package/deps/rocksdb/rocksdb/db/version_edit.cc +8 -37
  166. package/deps/rocksdb/rocksdb/db/version_edit.h +32 -1
  167. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +26 -18
  168. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +7 -5
  169. package/deps/rocksdb/rocksdb/db/version_set.cc +282 -197
  170. package/deps/rocksdb/rocksdb/db/version_set.h +54 -57
  171. package/deps/rocksdb/rocksdb/db/version_set_test.cc +28 -35
  172. package/deps/rocksdb/rocksdb/db/version_util.h +2 -3
  173. package/deps/rocksdb/rocksdb/db/wal_manager.cc +3 -2
  174. package/deps/rocksdb/rocksdb/db/wal_manager.h +0 -1
  175. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +0 -1
  176. package/deps/rocksdb/rocksdb/db/wide/wide_columns.cc +1 -0
  177. package/deps/rocksdb/rocksdb/db/write_batch.cc +22 -8
  178. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +5 -4
  179. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +7 -6
  180. package/deps/rocksdb/rocksdb/db/write_callback_test.cc +3 -4
  181. package/deps/rocksdb/rocksdb/db/write_thread.h +3 -3
  182. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +13 -5
  183. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +9 -2
  184. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_service.h +39 -0
  185. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compression_manager.h +65 -0
  186. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +45 -22
  187. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +7 -4
  188. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +22 -5
  189. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +28 -3
  190. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +143 -38
  191. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +4 -3
  192. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +80 -32
  193. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.h +51 -2
  194. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +23 -1
  195. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +305 -15
  196. package/deps/rocksdb/rocksdb/env/env.cc +32 -2
  197. package/deps/rocksdb/rocksdb/env/env_encryption.cc +0 -2
  198. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +2 -4
  199. package/deps/rocksdb/rocksdb/env/env_posix.cc +4 -2
  200. package/deps/rocksdb/rocksdb/env/env_test.cc +0 -1
  201. package/deps/rocksdb/rocksdb/env/fs_posix.cc +20 -11
  202. package/deps/rocksdb/rocksdb/env/fs_readonly.h +0 -2
  203. package/deps/rocksdb/rocksdb/env/fs_remap.cc +0 -2
  204. package/deps/rocksdb/rocksdb/env/fs_remap.h +0 -2
  205. package/deps/rocksdb/rocksdb/env/io_posix.cc +6 -4
  206. package/deps/rocksdb/rocksdb/env/io_posix.h +3 -2
  207. package/deps/rocksdb/rocksdb/env/mock_env.cc +0 -1
  208. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +2 -2
  209. package/deps/rocksdb/rocksdb/file/delete_scheduler.h +0 -2
  210. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +0 -2
  211. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +30 -21
  212. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +16 -0
  213. package/deps/rocksdb/rocksdb/file/file_util.cc +32 -14
  214. package/deps/rocksdb/rocksdb/file/file_util.h +22 -5
  215. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +229 -76
  216. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +21 -12
  217. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +10 -7
  218. package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +12 -8
  219. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +1 -2
  220. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +0 -2
  221. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +3 -3
  222. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +598 -0
  223. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_iterator.h +36 -0
  224. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +70 -11
  225. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +232 -11
  226. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +1 -1
  227. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +3 -1
  228. package/deps/rocksdb/rocksdb/include/rocksdb/compression_type.h +149 -15
  229. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +17 -2
  230. package/deps/rocksdb/rocksdb/include/rocksdb/data_structure.h +132 -34
  231. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +158 -79
  232. package/deps/rocksdb/rocksdb/include/rocksdb/db_bench_tool.h +2 -1
  233. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +4 -5
  234. package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +1 -3
  235. package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +5 -0
  236. package/deps/rocksdb/rocksdb/include/rocksdb/external_table.h +275 -0
  237. package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +2 -1
  238. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +50 -5
  239. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +10 -0
  240. package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +13 -0
  241. package/deps/rocksdb/rocksdb/include/rocksdb/ldb_tool.h +0 -1
  242. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +5 -2
  243. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +13 -0
  244. package/deps/rocksdb/rocksdb/include/rocksdb/multi_scan.h +237 -0
  245. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +230 -39
  246. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +15 -0
  247. package/deps/rocksdb/rocksdb/include/rocksdb/perf_level.h +31 -11
  248. package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +41 -0
  249. package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +1 -1
  250. package/deps/rocksdb/rocksdb/include/rocksdb/sst_dump_tool.h +0 -1
  251. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +5 -1
  252. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +0 -1
  253. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +18 -3
  254. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +2 -0
  255. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +20 -8
  256. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +19 -2
  257. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -1
  258. package/deps/rocksdb/rocksdb/include/rocksdb/tool_hooks.h +124 -0
  259. package/deps/rocksdb/rocksdb/include/rocksdb/trace_record.h +1 -0
  260. package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +26 -1
  261. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backup_engine.h +55 -6
  262. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/debug.h +3 -5
  263. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_mirror.h +0 -2
  264. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +1 -2
  265. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/memory_util.h +0 -1
  266. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +1 -2
  267. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +0 -1
  268. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/secondary_index.h +96 -8
  269. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/secondary_index_faiss.h +117 -0
  270. package/deps/rocksdb/rocksdb/{utilities/secondary_index/faiss_ivf_index.h → include/rocksdb/utilities/secondary_index_simple.h} +11 -14
  271. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +26 -11
  272. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +16 -3
  273. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +0 -2
  274. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +63 -7
  275. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db_mutex.h +0 -1
  276. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +28 -12
  277. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +3 -3
  278. package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +0 -2
  279. package/deps/rocksdb/rocksdb/logging/event_logger_test.cc +1 -2
  280. package/deps/rocksdb/rocksdb/memory/memory_allocator_impl.h +1 -1
  281. package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +0 -1
  282. package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +0 -1
  283. package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +3 -1
  284. package/deps/rocksdb/rocksdb/memtable/skiplist.h +2 -2
  285. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +2 -4
  286. package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +69 -8
  287. package/deps/rocksdb/rocksdb/memtable/wbwi_memtable.cc +32 -9
  288. package/deps/rocksdb/rocksdb/memtable/wbwi_memtable.h +58 -45
  289. package/deps/rocksdb/rocksdb/monitoring/histogram.h +1 -1
  290. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +5 -3
  291. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +5 -0
  292. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +1 -1
  293. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +3 -2
  294. package/deps/rocksdb/rocksdb/options/cf_options.cc +44 -13
  295. package/deps/rocksdb/rocksdb/options/cf_options.h +21 -7
  296. package/deps/rocksdb/rocksdb/options/configurable.cc +5 -5
  297. package/deps/rocksdb/rocksdb/options/configurable_test.h +1 -2
  298. package/deps/rocksdb/rocksdb/options/customizable.cc +0 -1
  299. package/deps/rocksdb/rocksdb/options/customizable_test.cc +4 -11
  300. package/deps/rocksdb/rocksdb/options/db_options.cc +18 -15
  301. package/deps/rocksdb/rocksdb/options/db_options.h +2 -2
  302. package/deps/rocksdb/rocksdb/options/options.cc +296 -305
  303. package/deps/rocksdb/rocksdb/options/options_helper.cc +188 -62
  304. package/deps/rocksdb/rocksdb/options/options_helper.h +3 -3
  305. package/deps/rocksdb/rocksdb/options/options_parser.cc +2 -4
  306. package/deps/rocksdb/rocksdb/options/options_parser.h +0 -1
  307. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +17 -4
  308. package/deps/rocksdb/rocksdb/options/options_test.cc +101 -76
  309. package/deps/rocksdb/rocksdb/port/lang.h +2 -1
  310. package/deps/rocksdb/rocksdb/port/port_posix.cc +2 -1
  311. package/deps/rocksdb/rocksdb/port/stack_trace.cc +5 -4
  312. package/deps/rocksdb/rocksdb/port/win/env_win.cc +3 -2
  313. package/deps/rocksdb/rocksdb/port/win/xpress_win.cc +99 -1
  314. package/deps/rocksdb/rocksdb/port/win/xpress_win.h +6 -0
  315. package/deps/rocksdb/rocksdb/src.mk +17 -11
  316. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +0 -1
  317. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +1094 -929
  318. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +6 -19
  319. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +76 -22
  320. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +2 -0
  321. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +221 -131
  322. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +12 -9
  323. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +23 -24
  324. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +38 -38
  325. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +7 -4
  326. package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +5 -5
  327. package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +10 -12
  328. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +6 -4
  329. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +35 -43
  330. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +2 -1
  331. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +1 -1
  332. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +1 -2
  333. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +0 -4
  334. package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +0 -1
  335. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +3 -3
  336. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +3 -3
  337. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +4 -4
  338. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +1 -1
  339. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +4 -5
  340. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +4 -4
  341. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +37 -35
  342. package/deps/rocksdb/rocksdb/table/block_fetcher.h +11 -7
  343. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +4 -3
  344. package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +31 -5
  345. package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.h +2 -1
  346. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +0 -1
  347. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +0 -1
  348. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +0 -1
  349. package/deps/rocksdb/rocksdb/table/external_table.cc +483 -0
  350. package/deps/rocksdb/rocksdb/table/format.cc +62 -44
  351. package/deps/rocksdb/rocksdb/table/format.h +35 -12
  352. package/deps/rocksdb/rocksdb/table/internal_iterator.h +3 -13
  353. package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +8 -0
  354. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +6 -0
  355. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +150 -141
  356. package/deps/rocksdb/rocksdb/table/meta_blocks.h +5 -0
  357. package/deps/rocksdb/rocksdb/table/multiget_context.h +3 -2
  358. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +8 -0
  359. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +0 -1
  360. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +0 -2
  361. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.h +0 -2
  362. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +0 -1
  363. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +6 -6
  364. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +0 -1
  365. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +86 -7
  366. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +88 -2
  367. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +0 -1
  368. package/deps/rocksdb/rocksdb/table/table_builder.h +10 -1
  369. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +3 -2
  370. package/deps/rocksdb/rocksdb/table/table_test.cc +899 -22
  371. package/deps/rocksdb/rocksdb/test_util/testutil.cc +3 -4
  372. package/deps/rocksdb/rocksdb/test_util/testutil.h +132 -1
  373. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +0 -1
  374. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +0 -2
  375. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +163 -77
  376. package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +0 -2
  377. package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +0 -1
  378. package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +0 -1
  379. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +120 -52
  380. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +1 -0
  381. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -1
  382. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +0 -2
  383. package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.cc +2 -2
  384. package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.h +0 -2
  385. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +2 -1
  386. package/deps/rocksdb/rocksdb/tools/tool_hooks.cc +94 -0
  387. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +0 -1
  388. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.h +0 -1
  389. package/deps/rocksdb/rocksdb/trace_replay/io_tracer.cc +1 -1
  390. package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +2 -1
  391. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +3 -5
  392. package/deps/rocksdb/rocksdb/util/async_file_reader.cc +1 -1
  393. package/deps/rocksdb/rocksdb/util/async_file_reader.h +15 -8
  394. package/deps/rocksdb/rocksdb/util/auto_skip_compressor.cc +131 -0
  395. package/deps/rocksdb/rocksdb/util/auto_skip_compressor.h +90 -0
  396. package/deps/rocksdb/rocksdb/util/autovector.h +1 -1
  397. package/deps/rocksdb/rocksdb/util/autovector_test.cc +2 -2
  398. package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +0 -2
  399. package/deps/rocksdb/rocksdb/util/compression.cc +936 -4
  400. package/deps/rocksdb/rocksdb/util/compression.h +348 -232
  401. package/deps/rocksdb/rocksdb/util/compression_test.cc +229 -0
  402. package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +10 -10
  403. package/deps/rocksdb/rocksdb/util/crc32c_ppc.c +1 -0
  404. package/deps/rocksdb/rocksdb/util/data_structure.cc +2 -0
  405. package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +1 -3
  406. package/deps/rocksdb/rocksdb/util/ppc-opcode.h +5 -5
  407. package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +108 -0
  408. package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +67 -0
  409. package/deps/rocksdb/rocksdb/util/slice_test.cc +83 -0
  410. package/deps/rocksdb/rocksdb/util/string_util.cc +0 -2
  411. package/deps/rocksdb/rocksdb/util/string_util.h +10 -0
  412. package/deps/rocksdb/rocksdb/util/thread_operation.h +2 -1
  413. package/deps/rocksdb/rocksdb/util/udt_util.cc +18 -5
  414. package/deps/rocksdb/rocksdb/util/udt_util.h +10 -7
  415. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +650 -154
  416. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +438 -144
  417. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +0 -1
  418. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +0 -1
  419. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_gc_stats.h +0 -1
  420. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +16 -17
  421. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +2 -1
  422. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +0 -1
  423. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +0 -1
  424. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +7 -8
  425. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +4 -3
  426. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.h +0 -1
  427. package/deps/rocksdb/rocksdb/utilities/cache_dump_load.cc +0 -1
  428. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +2 -2
  429. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +1 -1
  430. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +0 -48
  431. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +0 -1
  432. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.h +0 -1
  433. package/deps/rocksdb/rocksdb/utilities/debug.cc +7 -14
  434. package/deps/rocksdb/rocksdb/utilities/env_mirror.cc +0 -1
  435. package/deps/rocksdb/rocksdb/utilities/env_mirror_test.cc +0 -2
  436. package/deps/rocksdb/rocksdb/utilities/env_timed.cc +0 -1
  437. package/deps/rocksdb/rocksdb/utilities/env_timed_test.cc +0 -2
  438. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +5 -3
  439. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +10 -9
  440. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +0 -1
  441. package/deps/rocksdb/rocksdb/utilities/memory/memory_util.cc +0 -1
  442. package/deps/rocksdb/rocksdb/utilities/memory_allocators.h +1 -0
  443. package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +0 -2
  444. package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +0 -1
  445. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +0 -1
  446. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +0 -1
  447. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +0 -2
  448. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +0 -2
  449. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.cc +0 -1
  450. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +0 -2
  451. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table.h +0 -2
  452. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_evictable.h +0 -2
  453. package/deps/rocksdb/rocksdb/utilities/persistent_cache/lrulist.h +0 -2
  454. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.h +0 -2
  455. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.cc +0 -1
  456. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +0 -2
  457. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +0 -1
  458. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +0 -2
  459. package/deps/rocksdb/rocksdb/utilities/secondary_index/faiss_ivf_index.cc +183 -32
  460. package/deps/rocksdb/rocksdb/utilities/secondary_index/faiss_ivf_index_test.cc +258 -12
  461. package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_helper.h +33 -0
  462. package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_iterator.cc +99 -0
  463. package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_mixin.h +280 -120
  464. package/deps/rocksdb/rocksdb/utilities/secondary_index/simple_secondary_index.cc +79 -0
  465. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +52 -16
  466. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.h +10 -6
  467. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector_test.cc +55 -0
  468. package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.cc +0 -1
  469. package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.cc +0 -2
  470. package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.h +0 -1
  471. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +37 -12
  472. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +2 -0
  473. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +0 -2
  474. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +0 -2
  475. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +1 -1
  476. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/db.h +1 -1
  477. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +1 -1
  478. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc +2 -1
  479. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +2 -2
  480. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +0 -1
  481. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.h +0 -2
  482. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +1 -3
  483. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +36 -10
  484. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +5 -7
  485. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +4 -5
  486. package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +1 -4
  487. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +1 -2
  488. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.cc +0 -2
  489. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.h +0 -1
  490. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +1118 -37
  491. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +4 -7
  492. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +0 -2
  493. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.h +0 -2
  494. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +3 -3
  495. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +0 -1
  496. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +0 -2
  497. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +1 -2
  498. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +1 -2
  499. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +0 -1
  500. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +0 -3
  501. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +125 -127
  502. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +45 -23
  503. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +54 -22
  504. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +477 -58
  505. package/deps/rocksdb/rocksdb.gyp +9 -4
  506. package/index.js +50 -9
  507. package/package.json +8 -1
  508. package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
  509. package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
@@ -22,7 +22,7 @@ namespace ROCKSDB_NAMESPACE::log {
22
22
 
23
23
  Writer::Writer(std::unique_ptr<WritableFileWriter>&& dest, uint64_t log_number,
24
24
  bool recycle_log_files, bool manual_flush,
25
- CompressionType compression_type)
25
+ CompressionType compression_type, bool track_and_verify_wals)
26
26
  : dest_(std::move(dest)),
27
27
  block_offset_(0),
28
28
  log_number_(log_number),
@@ -31,8 +31,10 @@ Writer::Writer(std::unique_ptr<WritableFileWriter>&& dest, uint64_t log_number,
31
31
  header_size_(recycle_log_files ? kRecyclableHeaderSize : kHeaderSize),
32
32
  manual_flush_(manual_flush),
33
33
  compression_type_(compression_type),
34
- compress_(nullptr) {
35
- for (int i = 0; i <= kMaxRecordType; i++) {
34
+ compress_(nullptr),
35
+ track_and_verify_wals_(track_and_verify_wals),
36
+ last_seqno_recorded_(0) {
37
+ for (uint8_t i = 0; i <= kMaxRecordType; i++) {
36
38
  char t = static_cast<char>(i);
37
39
  type_crc_[i] = crc32c::Value(&t, 1);
38
40
  }
@@ -52,19 +54,12 @@ Writer::~Writer() {
52
54
  }
53
55
 
54
56
  IOStatus Writer::WriteBuffer(const WriteOptions& write_options) {
55
- if (dest_->seen_error()) {
56
- #ifndef NDEBUG
57
- if (dest_->seen_injected_error()) {
58
- std::stringstream msg;
59
- msg << "Seen " << FaultInjectionTestFS::kInjected
60
- << " error. Skip writing buffer.";
61
- return IOStatus::IOError(msg.str());
62
- }
63
- #endif // NDEBUG
64
- return IOStatus::IOError("Seen error. Skip writing buffer.");
57
+ IOStatus s = MaybeHandleSeenFileWriterError();
58
+ if (!s.ok()) {
59
+ return s;
65
60
  }
66
61
  IOOptions opts;
67
- IOStatus s = WritableFileWriter::PrepareIOOptions(write_options, opts);
62
+ s = WritableFileWriter::PrepareIOOptions(write_options, opts);
68
63
  if (!s.ok()) {
69
64
  return s;
70
65
  }
@@ -92,17 +87,10 @@ bool Writer::PublishIfClosed() {
92
87
  }
93
88
 
94
89
  IOStatus Writer::AddRecord(const WriteOptions& write_options,
95
- const Slice& slice) {
96
- if (dest_->seen_error()) {
97
- #ifndef NDEBUG
98
- if (dest_->seen_injected_error()) {
99
- std::stringstream msg;
100
- msg << "Seen " << FaultInjectionTestFS::kInjected
101
- << " error. Skip writing buffer.";
102
- return IOStatus::IOError(msg.str());
103
- }
104
- #endif // NDEBUG
105
- return IOStatus::IOError("Seen error. Skip writing buffer.");
90
+ const Slice& slice, const SequenceNumber& seqno) {
91
+ IOStatus s = MaybeHandleSeenFileWriterError();
92
+ if (!s.ok()) {
93
+ return s;
106
94
  }
107
95
  const char* ptr = slice.data();
108
96
  size_t left = slice.size();
@@ -118,7 +106,6 @@ IOStatus Writer::AddRecord(const WriteOptions& write_options,
118
106
  compress_start = true;
119
107
  }
120
108
 
121
- IOStatus s;
122
109
  IOOptions opts;
123
110
  s = WritableFileWriter::PrepareIOOptions(write_options, opts);
124
111
  if (s.ok()) {
@@ -196,6 +183,10 @@ IOStatus Writer::AddRecord(const WriteOptions& write_options,
196
183
  }
197
184
  }
198
185
 
186
+ if (s.ok()) {
187
+ last_seqno_recorded_ = std::max(last_seqno_recorded_, seqno);
188
+ }
189
+
199
190
  return s;
200
191
  }
201
192
 
@@ -208,23 +199,16 @@ IOStatus Writer::AddCompressionTypeRecord(const WriteOptions& write_options) {
208
199
  return IOStatus::OK();
209
200
  }
210
201
 
211
- if (dest_->seen_error()) {
212
- #ifndef NDEBUG
213
- if (dest_->seen_injected_error()) {
214
- std::stringstream msg;
215
- msg << "Seen " << FaultInjectionTestFS::kInjected
216
- << " error. Skip writing buffer.";
217
- return IOStatus::IOError(msg.str());
218
- }
219
- #endif // NDEBUG
220
- return IOStatus::IOError("Seen error. Skip writing buffer.");
202
+ IOStatus s = MaybeHandleSeenFileWriterError();
203
+ if (!s.ok()) {
204
+ return s;
221
205
  }
222
206
 
223
207
  CompressionTypeRecord record(compression_type_);
224
208
  std::string encode;
225
209
  record.EncodeTo(&encode);
226
- IOStatus s = EmitPhysicalRecord(write_options, kSetCompressionType,
227
- encode.data(), encode.size());
210
+ s = EmitPhysicalRecord(write_options, kSetCompressionType, encode.data(),
211
+ encode.size());
228
212
  if (s.ok()) {
229
213
  if (!manual_flush_) {
230
214
  IOOptions io_opts;
@@ -251,6 +235,44 @@ IOStatus Writer::AddCompressionTypeRecord(const WriteOptions& write_options) {
251
235
  return s;
252
236
  }
253
237
 
238
+ IOStatus Writer::MaybeAddPredecessorWALInfo(const WriteOptions& write_options,
239
+ const PredecessorWALInfo& info) {
240
+ IOStatus s = MaybeHandleSeenFileWriterError();
241
+
242
+ if (!s.ok()) {
243
+ return s;
244
+ }
245
+
246
+ if (!track_and_verify_wals_ || !info.IsInitialized()) {
247
+ return IOStatus::OK();
248
+ }
249
+
250
+ std::string encode;
251
+ info.EncodeTo(&encode);
252
+
253
+ s = MaybeSwitchToNewBlock(write_options, encode);
254
+ if (!s.ok()) {
255
+ return s;
256
+ }
257
+
258
+ RecordType type = recycle_log_files_ ? kRecyclePredecessorWALInfoType
259
+ : kPredecessorWALInfoType;
260
+ s = EmitPhysicalRecord(write_options, type, encode.data(), encode.size());
261
+
262
+ if (!s.ok()) {
263
+ return s;
264
+ }
265
+
266
+ if (!manual_flush_) {
267
+ IOOptions io_opts;
268
+ s = WritableFileWriter::PrepareIOOptions(write_options, io_opts);
269
+ if (s.ok()) {
270
+ s = dest_->Flush(io_opts);
271
+ }
272
+ }
273
+ return s;
274
+ }
275
+
254
276
  IOStatus Writer::MaybeAddUserDefinedTimestampSizeRecord(
255
277
  const WriteOptions& write_options,
256
278
  const UnorderedMap<uint32_t, size_t>& cf_to_ts_sz) {
@@ -275,22 +297,9 @@ IOStatus Writer::MaybeAddUserDefinedTimestampSizeRecord(
275
297
  RecordType type = recycle_log_files_ ? kRecyclableUserDefinedTimestampSizeType
276
298
  : kUserDefinedTimestampSizeType;
277
299
 
278
- // If there's not enough space for this record, switch to a new block.
279
- const int64_t leftover = kBlockSize - block_offset_;
280
- if (leftover < header_size_ + (int)encoded.size()) {
281
- IOOptions opts;
282
- IOStatus s = WritableFileWriter::PrepareIOOptions(write_options, opts);
283
- if (!s.ok()) {
284
- return s;
285
- }
286
-
287
- std::vector<char> trailer(leftover, '\x00');
288
- s = dest_->Append(opts, Slice(trailer.data(), trailer.size()));
289
- if (!s.ok()) {
290
- return s;
291
- }
292
-
293
- block_offset_ = 0;
300
+ IOStatus s = MaybeSwitchToNewBlock(write_options, encoded);
301
+ if (!s.ok()) {
302
+ return s;
294
303
  }
295
304
 
296
305
  return EmitPhysicalRecord(write_options, type, encoded.data(),
@@ -313,7 +322,7 @@ IOStatus Writer::EmitPhysicalRecord(const WriteOptions& write_options,
313
322
 
314
323
  uint32_t crc = type_crc_[t];
315
324
  if (t < kRecyclableFullType || t == kSetCompressionType ||
316
- t == kUserDefinedTimestampSizeType) {
325
+ t == kPredecessorWALInfoType || t == kUserDefinedTimestampSizeType) {
317
326
  // Legacy record format
318
327
  assert(block_offset_ + kHeaderSize + n <= kBlockSize);
319
328
  header_size = kHeaderSize;
@@ -352,4 +361,42 @@ IOStatus Writer::EmitPhysicalRecord(const WriteOptions& write_options,
352
361
  return s;
353
362
  }
354
363
 
364
+ IOStatus Writer::MaybeHandleSeenFileWriterError() {
365
+ if (dest_->seen_error()) {
366
+ #ifndef NDEBUG
367
+ if (dest_->seen_injected_error()) {
368
+ std::stringstream msg;
369
+ msg << "Seen " << FaultInjectionTestFS::kInjected
370
+ << " error. Skip writing buffer.";
371
+ return IOStatus::IOError(msg.str());
372
+ }
373
+ #endif // NDEBUG
374
+ return IOStatus::IOError("Seen error. Skip writing buffer.");
375
+ }
376
+ return IOStatus::OK();
377
+ }
378
+
379
+ IOStatus Writer::MaybeSwitchToNewBlock(const WriteOptions& write_options,
380
+ const std::string& content_to_write) {
381
+ IOStatus s;
382
+ const int64_t leftover = kBlockSize - block_offset_;
383
+ // If there's not enough space for this record, switch to a new block.
384
+ if (leftover < header_size_ + (int)content_to_write.size()) {
385
+ IOOptions opts;
386
+ s = WritableFileWriter::PrepareIOOptions(write_options, opts);
387
+ if (!s.ok()) {
388
+ return s;
389
+ }
390
+
391
+ std::vector<char> trailer(leftover, '\x00');
392
+ s = dest_->Append(opts, Slice(trailer.data(), trailer.size()));
393
+ if (!s.ok()) {
394
+ return s;
395
+ }
396
+
397
+ block_offset_ = 0;
398
+ }
399
+ return s;
400
+ }
401
+
355
402
  } // namespace ROCKSDB_NAMESPACE::log
@@ -13,6 +13,7 @@
13
13
  #include <unordered_map>
14
14
  #include <vector>
15
15
 
16
+ #include "db/dbformat.h"
16
17
  #include "db/log_format.h"
17
18
  #include "rocksdb/compression_type.h"
18
19
  #include "rocksdb/env.h"
@@ -76,18 +77,24 @@ class Writer {
76
77
  // Create a writer that will append data to "*dest".
77
78
  // "*dest" must be initially empty.
78
79
  // "*dest" must remain live while this Writer is in use.
80
+ // TODO(hx235): seperate WAL related parameters from general `Reader`
81
+ // parameters
79
82
  explicit Writer(std::unique_ptr<WritableFileWriter>&& dest,
80
83
  uint64_t log_number, bool recycle_log_files,
81
84
  bool manual_flush = false,
82
- CompressionType compressionType = kNoCompression);
85
+ CompressionType compressionType = kNoCompression,
86
+ bool track_and_verify_wals = false);
83
87
  // No copying allowed
84
88
  Writer(const Writer&) = delete;
85
89
  void operator=(const Writer&) = delete;
86
90
 
87
91
  ~Writer();
88
92
 
89
- IOStatus AddRecord(const WriteOptions& write_options, const Slice& slice);
93
+ IOStatus AddRecord(const WriteOptions& write_options, const Slice& slice,
94
+ const SequenceNumber& seqno = 0);
90
95
  IOStatus AddCompressionTypeRecord(const WriteOptions& write_options);
96
+ IOStatus MaybeAddPredecessorWALInfo(const WriteOptions& write_options,
97
+ const PredecessorWALInfo& info);
91
98
 
92
99
  // If there are column families in `cf_to_ts_sz` not included in
93
100
  // `recorded_cf_to_ts_sz_` and its user-defined timestamp size is non-zero,
@@ -116,6 +123,8 @@ class Writer {
116
123
 
117
124
  size_t TEST_block_offset() const { return block_offset_; }
118
125
 
126
+ SequenceNumber GetLastSeqnoRecorded() const { return last_seqno_recorded_; };
127
+
119
128
  private:
120
129
  std::unique_ptr<WritableFileWriter> dest_;
121
130
  size_t block_offset_; // Current offset in block
@@ -131,6 +140,11 @@ class Writer {
131
140
  IOStatus EmitPhysicalRecord(const WriteOptions& write_options,
132
141
  RecordType type, const char* ptr, size_t length);
133
142
 
143
+ IOStatus MaybeHandleSeenFileWriterError();
144
+
145
+ IOStatus MaybeSwitchToNewBlock(const WriteOptions& write_options,
146
+ const std::string& content_to_write);
147
+
134
148
  // If true, it does not flush after each write. Instead it relies on the upper
135
149
  // layer to manually does the flush by calling ::WriteBuffer()
136
150
  bool manual_flush_;
@@ -145,6 +159,11 @@ class Writer {
145
159
  // Since the user-defined timestamp size cannot be changed while the DB is
146
160
  // running, existing entry in this map cannot be updated.
147
161
  UnorderedMap<uint32_t, size_t> recorded_cf_to_ts_sz_;
162
+
163
+ // See `Options::track_and_verify_wals`
164
+ bool track_and_verify_wals_;
165
+
166
+ SequenceNumber last_seqno_recorded_;
148
167
  };
149
168
 
150
169
  } // namespace log
@@ -9,7 +9,6 @@
9
9
 
10
10
  #pragma once
11
11
 
12
-
13
12
  #include <string>
14
13
 
15
14
  #include "rocksdb/rocksdb_namespace.h"
@@ -19,4 +18,3 @@ namespace ROCKSDB_NAMESPACE {
19
18
  void DumpMallocStats(std::string*);
20
19
 
21
20
  }
22
-
@@ -147,7 +147,6 @@ MemTable::MemTable(const InternalKeyComparator& cmp,
147
147
  const Comparator* ucmp = cmp.user_comparator();
148
148
  assert(ucmp);
149
149
  ts_sz_ = ucmp->timestamp_size();
150
- persist_user_defined_timestamps_ = ioptions.persist_user_defined_timestamps;
151
150
  }
152
151
 
153
152
  MemTable::~MemTable() {
@@ -175,6 +174,11 @@ size_t MemTable::ApproximateMemoryUsage() {
175
174
  }
176
175
 
177
176
  bool MemTable::ShouldFlushNow() {
177
+ if (IsMarkedForFlush()) {
178
+ // TODO: dedicated flush reason when marked for flush
179
+ return true;
180
+ }
181
+
178
182
  // This is set if memtable_max_range_deletions is > 0,
179
183
  // and that many range deletions are done
180
184
  if (memtable_max_range_deletions_ > 0 &&
@@ -192,10 +196,11 @@ bool MemTable::ShouldFlushNow() {
192
196
  // allocate one more block.
193
197
  const double kAllowOverAllocationRatio = 0.6;
194
198
 
199
+ // range deletion use skip list which allocates all memeory through `arena_`
200
+ assert(range_del_table_->ApproximateMemoryUsage() == 0);
195
201
  // If arena still have room for new block allocation, we can safely say it
196
202
  // shouldn't flush.
197
203
  auto allocated_memory = table_->ApproximateMemoryUsage() +
198
- range_del_table_->ApproximateMemoryUsage() +
199
204
  arena_.MemoryAllocatedBytes();
200
205
 
201
206
  approximate_memory_usage_.store(allocated_memory, std::memory_order_relaxed);
@@ -618,8 +623,8 @@ class TimestampStrippingIterator : public InternalIterator {
618
623
  const SliceTransform* cf_prefix_extractor, size_t ts_sz)
619
624
  : arena_mode_(arena != nullptr), kind_(kind), ts_sz_(ts_sz) {
620
625
  assert(ts_sz_ != 0);
621
- void* mem = arena ? arena->AllocateAligned(sizeof(MemTableIterator)) :
622
- operator new(sizeof(MemTableIterator));
626
+ void* mem = arena ? arena->AllocateAligned(sizeof(MemTableIterator))
627
+ : operator new(sizeof(MemTableIterator));
623
628
  iter_ = new (mem)
624
629
  MemTableIterator(kind, memtable, read_options, seqno_to_time_mapping,
625
630
  arena, cf_prefix_extractor);
@@ -1325,47 +1330,13 @@ static bool SaveValue(void* arg, const char* entry) {
1325
1330
  return false;
1326
1331
  }
1327
1332
  case kTypeMerge: {
1328
- if (!merge_operator) {
1329
- *(s->status) = Status::InvalidArgument(
1330
- "merge_operator is not properly initialized.");
1331
- // Normally we continue the loop (return true) when we see a merge
1332
- // operand. But in case of an error, we should stop the loop
1333
- // immediately and pretend we have found the value to stop further
1334
- // seek. Otherwise, the later call will override this error status.
1335
- *(s->found_final_value) = true;
1336
- return false;
1337
- }
1338
1333
  Slice v = GetLengthPrefixedSlice(key_ptr + key_length);
1339
1334
  *(s->merge_in_progress) = true;
1340
- merge_context->PushOperand(
1341
- v, s->inplace_update_support == false /* operand_pinned */);
1342
- PERF_COUNTER_ADD(internal_merge_point_lookup_count, 1);
1343
-
1344
- if (s->do_merge && merge_operator->ShouldMerge(
1345
- merge_context->GetOperandsDirectionBackward())) {
1346
- if (s->value || s->columns) {
1347
- // `op_failure_scope` (an output parameter) is not provided (set to
1348
- // nullptr) since a failure must be propagated regardless of its
1349
- // value.
1350
- *(s->status) = MergeHelper::TimedFullMerge(
1351
- merge_operator, s->key->user_key(), MergeHelper::kNoBaseValue,
1352
- merge_context->GetOperands(), s->logger, s->statistics,
1353
- s->clock, /* update_num_ops_stats */ true,
1354
- /* op_failure_scope */ nullptr, s->value, s->columns);
1355
- }
1356
-
1357
- *(s->found_final_value) = true;
1358
- return false;
1359
- }
1360
- if (merge_context->get_merge_operands_options != nullptr &&
1361
- merge_context->get_merge_operands_options->continue_cb != nullptr &&
1362
- !merge_context->get_merge_operands_options->continue_cb(v)) {
1363
- // We were told not to continue.
1364
- *(s->found_final_value) = true;
1365
- return false;
1366
- }
1367
-
1368
- return true;
1335
+ *(s->found_final_value) = ReadOnlyMemTable::HandleTypeMerge(
1336
+ s->key->user_key(), v, s->inplace_update_support == false,
1337
+ s->do_merge, merge_context, s->merge_operator, s->clock,
1338
+ s->statistics, s->logger, s->status, s->value, s->columns);
1339
+ return !*(s->found_final_value);
1369
1340
  }
1370
1341
  default: {
1371
1342
  std::string msg("Corrupted value not expected.");
@@ -1835,7 +1806,7 @@ uint64_t MemTable::GetMinLogContainingPrepSection() {
1835
1806
  }
1836
1807
 
1837
1808
  void MemTable::MaybeUpdateNewestUDT(const Slice& user_key) {
1838
- if (ts_sz_ == 0 || persist_user_defined_timestamps_) {
1809
+ if (ts_sz_ == 0) {
1839
1810
  return;
1840
1811
  }
1841
1812
  const Comparator* ucmp = GetInternalKeyComparator().user_comparator();
@@ -1846,9 +1817,7 @@ void MemTable::MaybeUpdateNewestUDT(const Slice& user_key) {
1846
1817
  }
1847
1818
 
1848
1819
  const Slice& MemTable::GetNewestUDT() const {
1849
- // This path should not be invoked for MemTables that does not enable the UDT
1850
- // in Memtable only feature.
1851
- assert(ts_sz_ > 0 && !persist_user_defined_timestamps_);
1820
+ assert(ts_sz_ > 0);
1852
1821
  return newest_udt_;
1853
1822
  }
1854
1823
 
@@ -30,6 +30,7 @@
30
30
  #include "rocksdb/db.h"
31
31
  #include "rocksdb/memtablerep.h"
32
32
  #include "table/multiget_context.h"
33
+ #include "util/atomic.h"
33
34
  #include "util/cast_util.h"
34
35
  #include "util/dynamic_bloom.h"
35
36
  #include "util/hash.h"
@@ -186,10 +187,13 @@ class ReadOnlyMemTable {
186
187
  SequenceNumber read_seq,
187
188
  size_t ts_sz) = 0;
188
189
 
189
- // Used to Get value associated with key or Get Merge Operands associated
190
- // with key.
191
- // Keys are considered if they are no larger than the parameter `key` in
190
+ // Used to get value associated with `key`, or Merge operands associated
191
+ // with key, or get the latest sequence number of `key` (e.g. transaction
192
+ // conflict checking).
193
+ //
194
+ // Keys are considered if they are no smaller than the parameter `key` in
192
195
  // the order defined by comparator and share the save user key with `key`.
196
+ //
193
197
  // If do_merge = true the default behavior which is Get value for key is
194
198
  // executed. Expected behavior is described right below.
195
199
  // If memtable contains a value for key, store it in *value and return true.
@@ -207,6 +211,7 @@ class ReadOnlyMemTable {
207
211
  // returned). Otherwise, *seq will be set to kMaxSequenceNumber.
208
212
  // On success, *s may be set to OK, NotFound, or MergeInProgress. Any other
209
213
  // status returned indicates a corruption or other unexpected error.
214
+ //
210
215
  // If do_merge = false then any Merge Operands encountered for key are simply
211
216
  // stored in merge_context.operands_list and never actually merged to get a
212
217
  // final value. The raw Merge Operands are eventually returned to the user.
@@ -215,6 +220,9 @@ class ReadOnlyMemTable {
215
220
  // @param column If not null and memtable contains a value/WideColumn for key,
216
221
  // `column` will be set to the result value/WideColumn.
217
222
  // Note: only one of `value` and `column` can be non-nullptr.
223
+ // To only query for key existence or the latest sequence number of a key,
224
+ // `value` and `column` can be both nullptr. In this case, returned status can
225
+ // be OK, NotFound or MergeInProgress if a key is found.
218
226
  // @param immutable_memtable Whether this memtable is immutable. Used
219
227
  // internally by NewRangeTombstoneIterator(). See comment above
220
228
  // NewRangeTombstoneIterator() for more detail.
@@ -347,13 +355,13 @@ class ReadOnlyMemTable {
347
355
  // be flushed to storage
348
356
  // REQUIRES: external synchronization to prevent simultaneous
349
357
  // operations on the same MemTable.
350
- uint64_t GetNextLogNumber() const { return mem_next_logfile_number_; }
358
+ uint64_t GetNextLogNumber() const { return mem_next_walfile_number_; }
351
359
 
352
360
  // Sets the next active logfile number when this memtable is about to
353
361
  // be flushed to storage
354
362
  // REQUIRES: external synchronization to prevent simultaneous
355
363
  // operations on the same MemTable.
356
- void SetNextLogNumber(uint64_t num) { mem_next_logfile_number_ = num; }
364
+ void SetNextLogNumber(uint64_t num) { mem_next_walfile_number_ = num; }
357
365
 
358
366
  // REQUIRES: db_mutex held.
359
367
  void SetID(uint64_t id) { id_ = id; }
@@ -394,7 +402,6 @@ class ReadOnlyMemTable {
394
402
  // can also be retained.
395
403
  merge_context->PushOperand(value, value_pinned);
396
404
  } else if (merge_in_progress) {
397
- assert(do_merge);
398
405
  // `op_failure_scope` (an output parameter) is not provided (set to
399
406
  // nullptr) since a failure must be propagated regardless of its
400
407
  // value.
@@ -442,6 +449,58 @@ class ReadOnlyMemTable {
442
449
  }
443
450
  }
444
451
 
452
+ // Returns if a final value is found.
453
+ static bool HandleTypeMerge(const Slice& lookup_user_key, const Slice& value,
454
+ bool value_pinned, bool do_merge,
455
+ MergeContext* merge_context,
456
+ const MergeOperator* merge_operator,
457
+ SystemClock* clock, Statistics* statistics,
458
+ Logger* logger, Status* s, std::string* out_value,
459
+ PinnableWideColumns* out_columns) {
460
+ if (!merge_operator) {
461
+ *s = Status::InvalidArgument(
462
+ "merge_operator is not properly initialized.");
463
+ // Normally we continue the loop (return true) when we see a merge
464
+ // operand. But in case of an error, we should stop the loop
465
+ // immediately and pretend we have found the value to stop further
466
+ // seek. Otherwise, the later call will override this error status.
467
+ return true;
468
+ }
469
+ merge_context->PushOperand(value, value_pinned /* operand_pinned */);
470
+ PERF_COUNTER_ADD(internal_merge_point_lookup_count, 1);
471
+
472
+ if (do_merge && merge_operator->ShouldMerge(
473
+ merge_context->GetOperandsDirectionBackward())) {
474
+ if (out_value || out_columns) {
475
+ // `op_failure_scope` (an output parameter) is not provided (set to
476
+ // nullptr) since a failure must be propagated regardless of its
477
+ // value.
478
+ *s = MergeHelper::TimedFullMerge(
479
+ merge_operator, lookup_user_key, MergeHelper::kNoBaseValue,
480
+ merge_context->GetOperands(), logger, statistics, clock,
481
+ /* update_num_ops_stats */ true,
482
+ /* op_failure_scope */ nullptr, out_value, out_columns);
483
+ }
484
+ return true;
485
+ }
486
+ if (merge_context->get_merge_operands_options != nullptr &&
487
+ merge_context->get_merge_operands_options->continue_cb != nullptr &&
488
+ !merge_context->get_merge_operands_options->continue_cb(value)) {
489
+ // We were told not to continue. `status` may be MergeInProress(),
490
+ // overwrite to signal the end of successful get. This status
491
+ // will be checked at the end of GetImpl().
492
+ *s = Status::OK();
493
+ return true;
494
+ }
495
+
496
+ // no final value found yet
497
+ return false;
498
+ }
499
+
500
+ void MarkForFlush() { marked_for_flush_.StoreRelaxed(true); }
501
+
502
+ bool IsMarkedForFlush() const { return marked_for_flush_.LoadRelaxed(); }
503
+
445
504
  protected:
446
505
  friend class MemTableList;
447
506
 
@@ -457,7 +516,7 @@ class ReadOnlyMemTable {
457
516
  VersionEdit edit_;
458
517
 
459
518
  // The log files earlier than this number can be deleted.
460
- uint64_t mem_next_logfile_number_{0};
519
+ uint64_t mem_next_walfile_number_{0};
461
520
 
462
521
  // Memtable id to track flush.
463
522
  uint64_t id_ = 0;
@@ -470,6 +529,8 @@ class ReadOnlyMemTable {
470
529
 
471
530
  // Flush job info of the current memtable.
472
531
  std::unique_ptr<FlushJobInfo> flush_job_info_;
532
+
533
+ RelaxedAtomic<bool> marked_for_flush_{false};
473
534
  };
474
535
 
475
536
  class MemTable final : public ReadOnlyMemTable {
@@ -627,6 +688,7 @@ class MemTable final : public ReadOnlyMemTable {
627
688
  // Update counters and flush status after inserting a whole write batch
628
689
  // Used in concurrent memtable inserts.
629
690
  void BatchPostProcess(const MemTablePostProcessInfo& update_counters) {
691
+ table_->BatchPostProcess();
630
692
  num_entries_.fetch_add(update_counters.num_entries,
631
693
  std::memory_order_relaxed);
632
694
  data_size_.fetch_add(update_counters.data_size, std::memory_order_relaxed);
@@ -637,6 +699,10 @@ class MemTable final : public ReadOnlyMemTable {
637
699
  if (update_counters.num_range_deletes > 0) {
638
700
  num_range_deletes_.fetch_add(update_counters.num_range_deletes,
639
701
  std::memory_order_relaxed);
702
+ // noop for skip-list memtable
703
+ // Besides correctness test in stress test, memtable flush record count
704
+ // check will catch this if it were not noop.
705
+ // range_del_table_->BatchPostProcess();
640
706
  }
641
707
  UpdateFlushState();
642
708
  }
@@ -764,6 +830,8 @@ class MemTable final : public ReadOnlyMemTable {
764
830
  is_range_del_table_empty_;
765
831
  }
766
832
 
833
+ // Gets the newest user defined timestamps in the memtable. This should only
834
+ // be called when user defined timestamp is enabled.
767
835
  const Slice& GetNewestUDT() const override;
768
836
 
769
837
  // Returns Corruption status if verification fails.
@@ -839,14 +907,10 @@ class MemTable final : public ReadOnlyMemTable {
839
907
  // Size in bytes for the user-defined timestamps.
840
908
  size_t ts_sz_;
841
909
 
842
- // Whether to persist user-defined timestamps
843
- bool persist_user_defined_timestamps_;
844
-
845
910
  // Newest user-defined timestamp contained in this MemTable. For ts1, and ts2
846
911
  // if Comparator::CompareTimestamp(ts1, ts2) > 0, ts1 is considered newer than
847
912
  // ts2. We track this field for a MemTable if its column family has UDT
848
- // feature enabled and the `persist_user_defined_timestamp` flag is false.
849
- // Otherwise, this field just contains an empty Slice.
913
+ // feature enabled.
850
914
  Slice newest_udt_;
851
915
 
852
916
  // Updates flush_state_ using ShouldFlushNow()