@nxtedition/rocksdb 8.2.7 → 9.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 (359) hide show
  1. package/deps/rocksdb/rocksdb/CMakeLists.txt +7 -1
  2. package/deps/rocksdb/rocksdb/Makefile +22 -19
  3. package/deps/rocksdb/rocksdb/TARGETS +8 -0
  4. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +157 -61
  5. package/deps/rocksdb/rocksdb/cache/cache_test.cc +43 -92
  6. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +632 -455
  7. package/deps/rocksdb/rocksdb/cache/clock_cache.h +244 -149
  8. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +41 -13
  9. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +11 -1
  10. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +216 -17
  11. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +7 -5
  12. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +279 -199
  13. package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +2 -1
  14. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +159 -8
  15. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.h +28 -2
  16. package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +1 -1
  17. package/deps/rocksdb/rocksdb/cache/sharded_cache.h +8 -0
  18. package/deps/rocksdb/rocksdb/crash_test.mk +14 -0
  19. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +3 -1
  20. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +1 -1
  21. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +1 -1
  22. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +2 -2
  23. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +1 -1
  24. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +18 -21
  25. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +1 -2
  26. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +1 -1
  27. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +2 -3
  28. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +1 -1
  29. package/deps/rocksdb/rocksdb/db/builder.cc +32 -7
  30. package/deps/rocksdb/rocksdb/db/c.cc +169 -6
  31. package/deps/rocksdb/rocksdb/db/c_test.c +104 -6
  32. package/deps/rocksdb/rocksdb/db/column_family.cc +98 -47
  33. package/deps/rocksdb/rocksdb/db/column_family.h +25 -2
  34. package/deps/rocksdb/rocksdb/db/column_family_test.cc +213 -2
  35. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +4 -1
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +93 -23
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +33 -9
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +7 -6
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +17 -6
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +2 -2
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +107 -43
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +15 -4
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -0
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +4 -2
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +25 -17
  46. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +13 -4
  47. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +11 -11
  48. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +29 -4
  49. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +24 -31
  50. package/deps/rocksdb/rocksdb/db/compaction/file_pri.h +3 -1
  51. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +19 -19
  52. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +2 -1
  53. package/deps/rocksdb/rocksdb/db/convenience.cc +20 -3
  54. package/deps/rocksdb/rocksdb/db/convenience_impl.h +15 -0
  55. package/deps/rocksdb/rocksdb/db/corruption_test.cc +17 -0
  56. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +1 -0
  57. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +17 -3
  58. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +5 -0
  59. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +15 -15
  60. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +666 -44
  61. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +2 -29
  62. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +274 -1
  63. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +40 -19
  64. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +6 -5
  65. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +250 -116
  66. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +51 -23
  67. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +354 -96
  68. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +6 -3
  69. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +2 -1
  70. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +5 -0
  71. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +50 -21
  72. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +26 -13
  73. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +13 -5
  74. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +61 -21
  75. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +8 -87
  76. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +7 -1
  77. package/deps/rocksdb/rocksdb/db/db_iter.cc +2 -2
  78. package/deps/rocksdb/rocksdb/db/db_iter.h +1 -0
  79. package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +4 -11
  80. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +6 -6
  81. package/deps/rocksdb/rocksdb/db/db_options_test.cc +39 -29
  82. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +26 -36
  83. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +106 -0
  84. package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +12 -3
  85. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +1 -1
  86. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +1 -0
  87. package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +279 -166
  88. package/deps/rocksdb/rocksdb/db/db_test.cc +48 -21
  89. package/deps/rocksdb/rocksdb/db/db_test2.cc +81 -12
  90. package/deps/rocksdb/rocksdb/db/db_test_util.cc +14 -6
  91. package/deps/rocksdb/rocksdb/db/db_test_util.h +40 -0
  92. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +13 -1
  93. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +233 -0
  94. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +143 -0
  95. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +6 -6
  96. package/deps/rocksdb/rocksdb/db/db_write_test.cc +2 -2
  97. package/deps/rocksdb/rocksdb/db/dbformat.cc +36 -0
  98. package/deps/rocksdb/rocksdb/db/dbformat.h +169 -20
  99. package/deps/rocksdb/rocksdb/db/dbformat_test.cc +129 -0
  100. package/deps/rocksdb/rocksdb/db/error_handler.cc +16 -0
  101. package/deps/rocksdb/rocksdb/db/error_handler.h +6 -3
  102. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +4 -4
  103. package/deps/rocksdb/rocksdb/db/event_helpers.cc +4 -0
  104. package/deps/rocksdb/rocksdb/db/experimental.cc +2 -1
  105. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +4 -4
  106. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +17 -8
  107. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +86 -4
  108. package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +1 -1
  109. package/deps/rocksdb/rocksdb/db/file_indexer.cc +2 -4
  110. package/deps/rocksdb/rocksdb/db/flush_job.cc +101 -11
  111. package/deps/rocksdb/rocksdb/db/flush_job.h +24 -1
  112. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +88 -11
  113. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +2 -3
  114. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +159 -91
  115. package/deps/rocksdb/rocksdb/db/import_column_family_job.h +19 -10
  116. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +143 -0
  117. package/deps/rocksdb/rocksdb/db/internal_stats.cc +13 -1
  118. package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -0
  119. package/deps/rocksdb/rocksdb/db/listener_test.cc +2 -1
  120. package/deps/rocksdb/rocksdb/db/log_reader.h +3 -2
  121. package/deps/rocksdb/rocksdb/db/log_test.cc +17 -21
  122. package/deps/rocksdb/rocksdb/db/log_writer.cc +1 -1
  123. package/deps/rocksdb/rocksdb/db/log_writer.h +3 -2
  124. package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +4 -3
  125. package/deps/rocksdb/rocksdb/db/memtable.cc +52 -13
  126. package/deps/rocksdb/rocksdb/db/memtable.h +45 -1
  127. package/deps/rocksdb/rocksdb/db/memtable_list.cc +44 -10
  128. package/deps/rocksdb/rocksdb/db/memtable_list.h +32 -1
  129. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +90 -4
  130. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +2 -2
  131. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +1 -0
  132. package/deps/rocksdb/rocksdb/db/repair.cc +21 -4
  133. package/deps/rocksdb/rocksdb/db/repair_test.cc +143 -2
  134. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +5 -4
  135. package/deps/rocksdb/rocksdb/db/table_cache.cc +44 -35
  136. package/deps/rocksdb/rocksdb/db/table_cache.h +6 -6
  137. package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +2 -2
  138. package/deps/rocksdb/rocksdb/db/version_builder.cc +0 -1
  139. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +236 -204
  140. package/deps/rocksdb/rocksdb/db/version_edit.cc +66 -4
  141. package/deps/rocksdb/rocksdb/db/version_edit.h +48 -6
  142. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +80 -8
  143. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +12 -0
  144. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +86 -17
  145. package/deps/rocksdb/rocksdb/db/version_set.cc +136 -41
  146. package/deps/rocksdb/rocksdb/db/version_set.h +28 -7
  147. package/deps/rocksdb/rocksdb/db/version_set_test.cc +25 -15
  148. package/deps/rocksdb/rocksdb/db/write_batch.cc +11 -0
  149. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +3 -0
  150. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +16 -0
  151. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +22 -3
  152. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +2 -0
  153. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +42 -0
  154. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +32 -3
  155. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +7 -0
  156. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +247 -120
  157. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +9 -4
  158. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +13 -6
  159. package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.h +2 -0
  160. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +15 -27
  161. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +264 -69
  162. package/deps/rocksdb/rocksdb/env/env.cc +1 -2
  163. package/deps/rocksdb/rocksdb/env/env_encryption.cc +11 -165
  164. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +0 -17
  165. package/deps/rocksdb/rocksdb/env/env_posix.cc +6 -2
  166. package/deps/rocksdb/rocksdb/env/env_test.cc +86 -2
  167. package/deps/rocksdb/rocksdb/env/fs_posix.cc +6 -4
  168. package/deps/rocksdb/rocksdb/env/unique_id_gen.cc +78 -0
  169. package/deps/rocksdb/rocksdb/env/unique_id_gen.h +34 -0
  170. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +1 -0
  171. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +15 -4
  172. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +52 -43
  173. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +34 -18
  174. package/deps/rocksdb/rocksdb/file/file_util.cc +10 -5
  175. package/deps/rocksdb/rocksdb/file/file_util.h +13 -1
  176. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +724 -79
  177. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +64 -33
  178. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +3 -16
  179. package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +23 -12
  180. package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +3 -0
  181. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +2 -1
  182. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +153 -88
  183. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +70 -2
  184. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +50 -11
  185. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +3 -0
  186. package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +16 -2
  187. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +1 -1
  188. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +55 -8
  189. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +32 -4
  190. package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +9 -109
  191. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +90 -13
  192. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +3 -0
  193. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +85 -17
  194. package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +13 -1
  195. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +2 -1
  196. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +5 -1
  197. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +21 -2
  198. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +7 -1
  199. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +6 -0
  200. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +5 -0
  201. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +33 -2
  202. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +14 -0
  203. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +33 -2
  204. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +0 -3
  205. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  206. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +3 -0
  207. package/deps/rocksdb/rocksdb/memory/arena_test.cc +18 -11
  208. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +2 -1
  209. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +69 -34
  210. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +16 -1
  211. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +10 -0
  212. package/deps/rocksdb/rocksdb/options/cf_options.cc +19 -0
  213. package/deps/rocksdb/rocksdb/options/cf_options.h +10 -2
  214. package/deps/rocksdb/rocksdb/options/customizable_test.cc +2 -1
  215. package/deps/rocksdb/rocksdb/options/db_options.cc +7 -0
  216. package/deps/rocksdb/rocksdb/options/db_options.h +1 -0
  217. package/deps/rocksdb/rocksdb/options/options.cc +15 -1
  218. package/deps/rocksdb/rocksdb/options/options_helper.cc +6 -0
  219. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +11 -3
  220. package/deps/rocksdb/rocksdb/options/options_test.cc +8 -0
  221. package/deps/rocksdb/rocksdb/port/mmap.h +20 -0
  222. package/deps/rocksdb/rocksdb/port/stack_trace.cc +27 -12
  223. package/deps/rocksdb/rocksdb/port/win/env_win.h +1 -1
  224. package/deps/rocksdb/rocksdb/src.mk +3 -0
  225. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
  226. package/deps/rocksdb/rocksdb/table/block_based/block.cc +48 -22
  227. package/deps/rocksdb/rocksdb/table/block_based/block.h +60 -12
  228. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +115 -42
  229. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +6 -5
  230. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +60 -2
  231. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +2 -0
  232. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +62 -44
  233. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +36 -14
  234. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +38 -15
  235. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +219 -51
  236. package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +41 -8
  237. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +25 -1
  238. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +50 -21
  239. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +11 -4
  240. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +195 -55
  241. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +1 -1
  242. package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +31 -16
  243. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +97 -58
  244. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +1 -1
  245. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +6 -0
  246. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +27 -12
  247. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +3 -1
  248. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +114 -70
  249. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +1 -2
  250. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +9 -6
  251. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +15 -3
  252. package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +6 -3
  253. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +11 -11
  254. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +3 -0
  255. package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +1 -0
  256. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +6 -2
  257. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +1 -2
  258. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +2 -3
  259. package/deps/rocksdb/rocksdb/table/format.cc +175 -33
  260. package/deps/rocksdb/rocksdb/table/format.h +63 -10
  261. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +10 -2
  262. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +12 -4
  263. package/deps/rocksdb/rocksdb/table/meta_blocks.h +1 -0
  264. package/deps/rocksdb/rocksdb/table/mock_table.cc +8 -3
  265. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +10 -5
  266. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +10 -1
  267. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +1 -2
  268. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +3 -3
  269. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +12 -3
  270. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +26 -1
  271. package/deps/rocksdb/rocksdb/table/table_builder.h +6 -2
  272. package/deps/rocksdb/rocksdb/table/table_properties.cc +6 -0
  273. package/deps/rocksdb/rocksdb/table/table_test.cc +52 -22
  274. package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.h +19 -7
  275. package/deps/rocksdb/rocksdb/test_util/sync_point.h +3 -1
  276. package/deps/rocksdb/rocksdb/test_util/testutil.cc +29 -0
  277. package/deps/rocksdb/rocksdb/test_util/testutil.h +19 -0
  278. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +65 -26
  279. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +8 -5
  280. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -0
  281. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +1 -0
  282. package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +0 -1
  283. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +4 -0
  284. package/deps/rocksdb/rocksdb/unreleased_history/README.txt +73 -0
  285. package/deps/rocksdb/rocksdb/unreleased_history/add.sh +27 -0
  286. package/deps/rocksdb/rocksdb/unreleased_history/behavior_changes/.gitkeep +0 -0
  287. package/deps/rocksdb/rocksdb/unreleased_history/bug_fixes/.gitkeep +0 -0
  288. package/deps/rocksdb/rocksdb/unreleased_history/new_features/.gitkeep +0 -0
  289. package/deps/rocksdb/rocksdb/unreleased_history/performance_improvements/.gitkeep +0 -0
  290. package/deps/rocksdb/rocksdb/unreleased_history/public_api_changes/.gitkeep +0 -0
  291. package/deps/rocksdb/rocksdb/unreleased_history/release.sh +104 -0
  292. package/deps/rocksdb/rocksdb/util/async_file_reader.cc +5 -0
  293. package/deps/rocksdb/rocksdb/util/bloom_impl.h +3 -3
  294. package/deps/rocksdb/rocksdb/util/cast_util.h +14 -0
  295. package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +2 -0
  296. package/deps/rocksdb/rocksdb/util/comparator.cc +29 -7
  297. package/deps/rocksdb/rocksdb/util/compression.cc +4 -4
  298. package/deps/rocksdb/rocksdb/util/compression.h +110 -32
  299. package/deps/rocksdb/rocksdb/util/core_local.h +2 -1
  300. package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +4 -4
  301. package/deps/rocksdb/rocksdb/util/filelock_test.cc +3 -0
  302. package/deps/rocksdb/rocksdb/util/hash.h +7 -3
  303. package/deps/rocksdb/rocksdb/util/hash_test.cc +44 -0
  304. package/deps/rocksdb/rocksdb/util/math.h +58 -6
  305. package/deps/rocksdb/rocksdb/util/math128.h +29 -7
  306. package/deps/rocksdb/rocksdb/util/mutexlock.h +35 -27
  307. package/deps/rocksdb/rocksdb/util/single_thread_executor.h +1 -0
  308. package/deps/rocksdb/rocksdb/util/stop_watch.h +1 -1
  309. package/deps/rocksdb/rocksdb/util/thread_operation.h +8 -1
  310. package/deps/rocksdb/rocksdb/util/udt_util.cc +343 -0
  311. package/deps/rocksdb/rocksdb/util/udt_util.h +173 -1
  312. package/deps/rocksdb/rocksdb/util/udt_util_test.cc +447 -0
  313. package/deps/rocksdb/rocksdb/util/write_batch_util.cc +25 -0
  314. package/deps/rocksdb/rocksdb/util/write_batch_util.h +80 -0
  315. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +4 -4
  316. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +69 -25
  317. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +7 -6
  318. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +1 -1
  319. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +2 -3
  320. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +6 -11
  321. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +1 -2
  322. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +4 -5
  323. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +1 -1
  324. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +2 -2
  325. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +2 -1
  326. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +3 -3
  327. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +1 -2
  328. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +2 -3
  329. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +2 -2
  330. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +1 -1
  331. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +23 -8
  332. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +9 -6
  333. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +37 -12
  334. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +231 -33
  335. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +0 -1
  336. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +76 -20
  337. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +18 -9
  338. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +40 -23
  339. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +13 -12
  340. package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +7 -0
  341. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +1 -1
  342. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +41 -11
  343. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +6 -3
  344. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +71 -24
  345. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +19 -4
  346. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +60 -107
  347. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +39 -11
  348. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +6 -3
  349. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +14 -8
  350. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.h +1 -1
  351. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +10 -5
  352. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +1 -1
  353. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +1 -1
  354. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +2 -1
  355. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +6 -6
  356. package/deps/rocksdb/rocksdb.gyp +2 -0
  357. package/package.json +1 -1
  358. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  359. package/prebuilds/linux-x64/node.napi.node +0 -0
@@ -79,7 +79,8 @@ class SecondaryCache : public Customizable {
79
79
  // and writes it to this cache tier. OK may be returned even if the insertion
80
80
  // is not made.
81
81
  virtual Status Insert(const Slice& key, Cache::ObjectPtr obj,
82
- const Cache::CacheItemHelper* helper) = 0;
82
+ const Cache::CacheItemHelper* helper,
83
+ bool force_insert) = 0;
83
84
 
84
85
  // Insert a value from its saved/persistable data (typically uncompressed
85
86
  // block), as if generated by SaveToCallback/SizeCallback. This can be used
@@ -134,6 +135,17 @@ class SecondaryCache : public Customizable {
134
135
  virtual Status GetCapacity(size_t& /* capacity */) {
135
136
  return Status::NotSupported();
136
137
  }
138
+
139
+ // Temporarily decrease the cache capacity in RAM by the specified amount.
140
+ // The caller should call Inflate() to restore the cache capacity. This is
141
+ // intended to be lighter weight than SetCapacity(). The latter evenly
142
+ // distributes the new capacity across all shards and is meant for large
143
+ // changes in capacity, whereas the former is meant for relatively small
144
+ // changes and may be uneven by lowering capacity in a single shard.
145
+ virtual Status Deflate(size_t /*decrease*/) { return Status::NotSupported(); }
146
+
147
+ // Restore the capacity reduced by a prior call to Deflate().
148
+ virtual Status Inflate(size_t /*increase*/) { return Status::NotSupported(); }
137
149
  };
138
150
 
139
151
  } // namespace ROCKSDB_NAMESPACE
@@ -93,7 +93,8 @@ class SstFileManager {
93
93
  //
94
94
  // @param env: Pointer to Env object, please see "rocksdb/env.h".
95
95
  // @param fs: Pointer to FileSystem object (rocksdb/file_system.h"
96
- // @param info_log: If not nullptr, info_log will be used to log errors.
96
+ // @param info_log: If not nullptr, info_log will be used to log messages of
97
+ // INFO, WARN or ERROR level with respect to info_log's info level.
97
98
  //
98
99
  // == Deletion rate limiting specific arguments ==
99
100
  // @param trash_dir: Deprecated, this argument have no effect
@@ -13,6 +13,7 @@
13
13
  #include "rocksdb/options.h"
14
14
  #include "rocksdb/table_properties.h"
15
15
  #include "rocksdb/types.h"
16
+ #include "rocksdb/wide_columns.h"
16
17
 
17
18
  #if defined(__GNUC__) || defined(__clang__)
18
19
  #define ROCKSDB_DEPRECATED_FUNC __attribute__((__deprecated__))
@@ -127,6 +128,10 @@ class SstFileWriter {
127
128
  // REQUIRES: timestamp's size is equal to what is expected by the comparator.
128
129
  Status Put(const Slice& user_key, const Slice& timestamp, const Slice& value);
129
130
 
131
+ // Add a PutEntity (key with the wide-column entity defined by "columns") to
132
+ // the currently opened file
133
+ Status PutEntity(const Slice& user_key, const WideColumns& columns);
134
+
130
135
  // Add a Merge key with value to currently opened file
131
136
  // REQUIRES: user_key is after any previously added point (Put/Merge/Delete)
132
137
  // key according to the comparator.
@@ -186,4 +191,3 @@ class SstFileWriter {
186
191
  std::unique_ptr<Rep> rep_;
187
192
  };
188
193
  } // namespace ROCKSDB_NAMESPACE
189
-
@@ -353,14 +353,22 @@ enum Tickers : uint32_t {
353
353
  // # of files marked as trash by sst file manager and will be deleted
354
354
  // later by background thread.
355
355
  FILES_MARKED_TRASH,
356
- // # of files deleted immediately by sst file manger through delete scheduler.
356
+ // # of trash files deleted by the background thread from the trash queue.
357
+ FILES_DELETED_FROM_TRASH_QUEUE,
358
+ // # of files deleted immediately by sst file manager through delete
359
+ // scheduler.
357
360
  FILES_DELETED_IMMEDIATELY,
358
361
 
359
362
  // The counters for error handler, not that, bg_io_error is the subset of
360
- // bg_error and bg_retryable_io_error is the subset of bg_io_error
363
+ // bg_error and bg_retryable_io_error is the subset of bg_io_error.
364
+ // The misspelled versions are deprecated and only kept for compatibility.
365
+ // TODO: remove the misspelled tickers in the next major release.
361
366
  ERROR_HANDLER_BG_ERROR_COUNT,
367
+ ERROR_HANDLER_BG_ERROR_COUNT_MISSPELLED,
362
368
  ERROR_HANDLER_BG_IO_ERROR_COUNT,
369
+ ERROR_HANDLER_BG_IO_ERROR_COUNT_MISSPELLED,
363
370
  ERROR_HANDLER_BG_RETRYABLE_IO_ERROR_COUNT,
371
+ ERROR_HANDLER_BG_RETRYABLE_IO_ERROR_COUNT_MISSPELLED,
364
372
  ERROR_HANDLER_AUTORESUME_COUNT,
365
373
  ERROR_HANDLER_AUTORESUME_RETRY_TOTAL_COUNT,
366
374
  ERROR_HANDLER_AUTORESUME_SUCCESS_COUNT,
@@ -503,6 +511,10 @@ enum Tickers : uint32_t {
503
511
  // compressed SST blocks from storage.
504
512
  BYTES_DECOMPRESSED_TO,
505
513
 
514
+ // Number of times readahead is trimmed during scans when
515
+ // ReadOptions.auto_readahead_size is set.
516
+ READAHEAD_TRIMMED,
517
+
506
518
  TICKER_ENUM_MAX
507
519
  };
508
520
 
@@ -547,6 +559,13 @@ enum Histograms : uint32_t {
547
559
  FILE_READ_FLUSH_MICROS,
548
560
  FILE_READ_COMPACTION_MICROS,
549
561
  FILE_READ_DB_OPEN_MICROS,
562
+ // The following `FILE_READ_*` require stats level greater than
563
+ // `StatsLevel::kExceptDetailedTimers`
564
+ FILE_READ_GET_MICROS,
565
+ FILE_READ_MULTIGET_MICROS,
566
+ FILE_READ_DB_ITERATOR_MICROS,
567
+ FILE_READ_VERIFY_DB_CHECKSUM_MICROS,
568
+ FILE_READ_VERIFY_FILE_CHECKSUMS_MICROS,
550
569
 
551
570
  // The number of subcompactions actually scheduled during a compaction
552
571
  NUM_SUBCOMPACTIONS_SCHEDULED,
@@ -47,7 +47,10 @@ struct EnvOptions;
47
47
 
48
48
  // Types of checksums to use for checking integrity of logical blocks within
49
49
  // files. All checksums currently use 32 bits of checking power (1 in 4B
50
- // chance of failing to detect random corruption).
50
+ // chance of failing to detect random corruption). Traditionally, the actual
51
+ // checking power can be far from ideal if the corruption is due to misplaced
52
+ // data (e.g. physical blocks out of order in a file, or from another file),
53
+ // which is fixed in format_version=6 (see below).
51
54
  enum ChecksumType : char {
52
55
  kNoChecksum = 0x0,
53
56
  kCRC32c = 0x1,
@@ -512,6 +515,9 @@ struct BlockBasedTableOptions {
512
515
  // 5 -- Can be read by RocksDB's versions since 6.6.0. Full and partitioned
513
516
  // filters use a generally faster and more accurate Bloom filter
514
517
  // implementation, with a different schema.
518
+ // 6 -- Modified the file footer and checksum matching so that SST data
519
+ // misplaced within or between files is as likely to fail checksum
520
+ // verification as random corruption. Also checksum-protects SST footer.
515
521
  uint32_t format_version = 5;
516
522
 
517
523
  // Store index blocks on disk in compressed format. Changing this option to
@@ -71,6 +71,7 @@ struct TablePropertiesNames {
71
71
  static const std::string kFastCompressionEstimatedDataSize;
72
72
  static const std::string kSequenceNumberTimeMapping;
73
73
  static const std::string kTailStartOffset;
74
+ static const std::string kUserDefinedTimestampsPersisted;
74
75
  };
75
76
 
76
77
  // `TablePropertiesCollector` provides the mechanism for users to collect
@@ -244,6 +245,11 @@ struct TableProperties {
244
245
  // "Tail" refers to all blocks after data blocks till the end of the SST file
245
246
  uint64_t tail_start_offset = 0;
246
247
 
248
+ // Value of the `AdvancedColumnFamilyOptions.persist_user_defined_timestamps`
249
+ // when the file is created. Default to be true, only when this flag is false,
250
+ // it's explicitly written to meta properties block.
251
+ uint64_t user_defined_timestamps_persisted = 1;
252
+
247
253
  // DB identity
248
254
  // db_id is an identifier generated the first time the DB is created
249
255
  // If DB identity is unset or unassigned, `db_id` will be an empty string.
@@ -57,6 +57,11 @@ struct ThreadStatus {
57
57
  OP_COMPACTION,
58
58
  OP_FLUSH,
59
59
  OP_DBOPEN,
60
+ OP_GET,
61
+ OP_MULTIGET,
62
+ OP_DBITERATOR,
63
+ OP_VERIFY_DB_CHECKSUM,
64
+ OP_VERIFY_FILE_CHECKSUMS,
60
65
  NUM_OP_TYPES
61
66
  };
62
67
 
@@ -5,6 +5,7 @@
5
5
 
6
6
  #pragma once
7
7
 
8
+ #include <memory>
8
9
  #include <string>
9
10
  #include <vector>
10
11
 
@@ -43,11 +44,42 @@ enum class OccValidationPolicy {
43
44
  kValidateParallel = 1
44
45
  };
45
46
 
47
+ class OccLockBuckets {
48
+ public:
49
+ // Most details in internal derived class.
50
+ // Users should not derive from this class.
51
+ virtual ~OccLockBuckets() {}
52
+
53
+ virtual size_t ApproximateMemoryUsage() const = 0;
54
+
55
+ private:
56
+ friend class OccLockBucketsImplBase;
57
+ OccLockBuckets() {}
58
+ };
59
+
60
+ // An object for sharing a pool of locks across DB instances.
61
+ //
62
+ // Making the locks cache-aligned avoids potential false sharing, at the
63
+ // potential cost of extra memory. The implementation has historically
64
+ // used cache_aligned = false.
65
+ std::shared_ptr<OccLockBuckets> MakeSharedOccLockBuckets(
66
+ size_t bucket_count, bool cache_aligned = false);
67
+
46
68
  struct OptimisticTransactionDBOptions {
47
69
  OccValidationPolicy validate_policy = OccValidationPolicy::kValidateParallel;
48
70
 
49
- // works only if validate_policy == OccValidationPolicy::kValidateParallel
71
+ // Number of striped/bucketed mutex locks for validating transactions.
72
+ // Used on only if validate_policy == OccValidationPolicy::kValidateParallel
73
+ // and shared_lock_buckets (below) is empty. Larger number potentially
74
+ // reduces contention but uses more memory.
50
75
  uint32_t occ_lock_buckets = (1 << 20);
76
+
77
+ // A pool of mutex locks for validating transactions. Can be shared among
78
+ // DBs. Ignored if validate_policy != OccValidationPolicy::kValidateParallel.
79
+ // If empty and validate_policy == OccValidationPolicy::kValidateParallel,
80
+ // an OccLockBuckets will be created using the count in occ_lock_buckets.
81
+ // See MakeSharedOccLockBuckets()
82
+ std::shared_ptr<OccLockBuckets> shared_lock_buckets;
51
83
  };
52
84
 
53
85
  // Range deletions (including those in `WriteBatch`es passed to `Write()`) are
@@ -95,4 +127,3 @@ class OptimisticTransactionDB : public StackableDB {
95
127
  };
96
128
 
97
129
  } // namespace ROCKSDB_NAMESPACE
98
-
@@ -178,6 +178,15 @@ class StackableDB : public DB {
178
178
  import_options, metadata, handle);
179
179
  }
180
180
 
181
+ virtual Status CreateColumnFamilyWithImport(
182
+ const ColumnFamilyOptions& options, const std::string& column_family_name,
183
+ const ImportColumnFamilyOptions& import_options,
184
+ const std::vector<const ExportImportFilesMetaData*>& metadatas,
185
+ ColumnFamilyHandle** handle) override {
186
+ return db_->CreateColumnFamilyWithImport(options, column_family_name,
187
+ import_options, metadatas, handle);
188
+ }
189
+
181
190
  using DB::ClipColumnFamily;
182
191
  virtual Status ClipColumnFamily(ColumnFamilyHandle* column_family,
183
192
  const Slice& begin_key,
@@ -347,6 +356,11 @@ class StackableDB : public DB {
347
356
  return db_->DisableManualCompaction();
348
357
  }
349
358
 
359
+ virtual Status WaitForCompact(
360
+ const WaitForCompactOptions& wait_for_compact_options) override {
361
+ return db_->WaitForCompact(wait_for_compact_options);
362
+ }
363
+
350
364
  using DB::NumberLevels;
351
365
  virtual int NumberLevels(ColumnFamilyHandle* column_family) override {
352
366
  return db_->NumberLevels(column_family);
@@ -227,7 +227,8 @@ class Transaction {
227
227
  // Status::Busy() may be returned if the transaction could not guarantee
228
228
  // that there are no write conflicts. Status::TryAgain() may be returned
229
229
  // if the memtable history size is not large enough
230
- // (See max_write_buffer_size_to_maintain).
230
+ // (see max_write_buffer_size_to_maintain). In either case, a Rollback()
231
+ // or new transaction is required to expect a different result.
231
232
  //
232
233
  // If this transaction was created by a TransactionDB(), Status::Expired()
233
234
  // may be returned if this transaction has lived for longer than
@@ -259,6 +260,7 @@ class Transaction {
259
260
  std::shared_ptr<const Snapshot>* snapshot = nullptr);
260
261
 
261
262
  // Discard all batched writes in this transaction.
263
+ // FIXME: what happens if this isn't called before destruction?
262
264
  virtual Status Rollback() = 0;
263
265
 
264
266
  // Records the state of the transaction for future calls to
@@ -333,8 +335,22 @@ class Transaction {
333
335
  const size_t num_keys, const Slice* keys,
334
336
  PinnableSlice* values, Status* statuses,
335
337
  const bool /*sorted_input*/ = false) {
338
+ if (options.io_activity != Env::IOActivity::kUnknown &&
339
+ options.io_activity != Env::IOActivity::kMultiGet) {
340
+ Status s = Status::InvalidArgument(
341
+ "Can only call MultiGet with `ReadOptions::io_activity` is "
342
+ "`Env::IOActivity::kUnknown` or `Env::IOActivity::kMultiGet`");
343
+
344
+ for (size_t i = 0; i < num_keys; ++i) {
345
+ if (statuses[i].ok()) {
346
+ statuses[i] = s;
347
+ }
348
+ }
349
+ return;
350
+ }
351
+
336
352
  for (size_t i = 0; i < num_keys; ++i) {
337
- statuses[i] = Get(options, column_family, keys[i], &values[i]);
353
+ statuses[i] = GetImpl(options, column_family, keys[i], &values[i]);
338
354
  }
339
355
  }
340
356
 
@@ -671,6 +687,21 @@ class Transaction {
671
687
  id_ = id;
672
688
  }
673
689
 
690
+ virtual Status GetImpl(const ReadOptions& /* options */,
691
+ ColumnFamilyHandle* /* column_family */,
692
+ const Slice& /* key */, std::string* /* value */) {
693
+ return Status::NotSupported("Not implemented");
694
+ }
695
+
696
+ virtual Status GetImpl(const ReadOptions& options,
697
+ ColumnFamilyHandle* column_family, const Slice& key,
698
+ PinnableSlice* pinnable_val) {
699
+ assert(pinnable_val != nullptr);
700
+ auto s = GetImpl(options, column_family, key, pinnable_val->GetSelf());
701
+ pinnable_val->PinSelf();
702
+ return s;
703
+ }
704
+
674
705
  virtual uint64_t GetLastLogNumber() const { return log_number_; }
675
706
 
676
707
  private:
@@ -189,9 +189,6 @@ class WriteBatchWithIndex : public WriteBatchBase {
189
189
  // Will create a new Iterator that will use WBWIIterator as a delta and
190
190
  // base_iterator as base.
191
191
  //
192
- // This function is only supported if the WriteBatchWithIndex was
193
- // constructed with overwrite_key=true.
194
- //
195
192
  // The returned iterator should be deleted by the caller.
196
193
  // The base_iterator is now 'owned' by the returned iterator. Deleting the
197
194
  // returned iterator will also delete the base_iterator.
@@ -12,8 +12,8 @@
12
12
  // NOTE: in 'main' development branch, this should be the *next*
13
13
  // minor or major version number planned for release.
14
14
  #define ROCKSDB_MAJOR 8
15
- #define ROCKSDB_MINOR 3
16
- #define ROCKSDB_PATCH 2
15
+ #define ROCKSDB_MINOR 6
16
+ #define ROCKSDB_PATCH 7
17
17
 
18
18
  // Do not use these. We made the mistake of declaring macros starting with
19
19
  // double underscore. Now we have to live with our choice. We'll deprecate these
@@ -356,6 +356,9 @@ class WriteBatch : public WriteBatchBase {
356
356
  // Retrieve the serialized version of this batch.
357
357
  const std::string& Data() const { return rep_; }
358
358
 
359
+ // Release the serialized data and clear this batch.
360
+ std::string Release();
361
+
359
362
  // Retrieve data size of the batch.
360
363
  size_t GetDataSize() const { return rep_.size(); }
361
364
 
@@ -219,21 +219,28 @@ size_t PopMinorPageFaultCount() {
219
219
 
220
220
  TEST(MmapTest, AllocateLazyZeroed) {
221
221
  // Doesn't have to be page aligned
222
- constexpr size_t len = 1234567;
223
- MemMapping m = MemMapping::AllocateLazyZeroed(len);
224
- auto arr = static_cast<char*>(m.Get());
222
+ constexpr size_t len = 1234567; // in bytes
223
+ constexpr size_t count = len / 8; // in uint64_t objects
224
+ // Implicit conversion move
225
+ TypedMemMapping<uint64_t> pre_arr = MemMapping::AllocateLazyZeroed(len);
226
+ // Move from same type
227
+ TypedMemMapping<uint64_t> arr = std::move(pre_arr);
225
228
 
226
- // Should generally work
227
- ASSERT_NE(arr, nullptr);
229
+ ASSERT_NE(arr.Get(), nullptr);
230
+ ASSERT_EQ(arr.Get(), &arr[0]);
231
+ ASSERT_EQ(arr.Get(), arr.MemMapping::Get());
232
+
233
+ ASSERT_EQ(arr.Length(), len);
234
+ ASSERT_EQ(arr.Count(), count);
228
235
 
229
236
  // Start counting page faults
230
237
  PopMinorPageFaultCount();
231
238
 
232
239
  // Access half of the allocation
233
240
  size_t i = 0;
234
- for (; i < len / 2; ++i) {
241
+ for (; i < count / 2; ++i) {
235
242
  ASSERT_EQ(arr[i], 0);
236
- arr[i] = static_cast<char>(i & 255);
243
+ arr[i] = i;
237
244
  }
238
245
 
239
246
  // Appropriate page faults (maybe more)
@@ -241,9 +248,9 @@ TEST(MmapTest, AllocateLazyZeroed) {
241
248
  ASSERT_GE(faults, len / 2 / port::kPageSize);
242
249
 
243
250
  // Access rest of the allocation
244
- for (; i < len; ++i) {
251
+ for (; i < count; ++i) {
245
252
  ASSERT_EQ(arr[i], 0);
246
- arr[i] = static_cast<char>(i & 255);
253
+ arr[i] = i;
247
254
  }
248
255
 
249
256
  // Appropriate page faults (maybe more)
@@ -251,8 +258,8 @@ TEST(MmapTest, AllocateLazyZeroed) {
251
258
  ASSERT_GE(faults, len / 2 / port::kPageSize);
252
259
 
253
260
  // Verify data
254
- for (i = 0; i < len; ++i) {
255
- ASSERT_EQ(arr[i], static_cast<char>(i & 255));
261
+ for (i = 0; i < count; ++i) {
262
+ ASSERT_EQ(arr[i], i);
256
263
  }
257
264
  }
258
265
 
@@ -124,7 +124,8 @@ uint32_t JemallocNodumpAllocator::GetArenaIndex() const {
124
124
  // to make Random thread-safe and prevent cacheline bouncing. Whether this is
125
125
  // worthwhile is still an open question.
126
126
  thread_local Random tl_random(next_seed.fetch_add(1));
127
- return arena_indexes_[FastRange32(tl_random.Next(), arena_indexes_.size())];
127
+ return arena_indexes_[FastRange32(
128
+ tl_random.Next(), static_cast<uint32_t>(arena_indexes_.size()))];
128
129
  }
129
130
 
130
131
  Status JemallocNodumpAllocator::InitializeArenas() {