@nxtedition/rocksdb 5.2.21 → 5.2.26

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 (909) hide show
  1. package/binding.cc +216 -252
  2. package/binding.gyp +78 -72
  3. package/deps/rocksdb/build_version.cc +70 -4
  4. package/deps/rocksdb/rocksdb/CMakeLists.txt +281 -149
  5. package/deps/rocksdb/rocksdb/Makefile +459 -469
  6. package/deps/rocksdb/rocksdb/README.md +4 -4
  7. package/deps/rocksdb/rocksdb/TARGETS +5244 -1500
  8. package/deps/rocksdb/rocksdb/cache/cache.cc +12 -3
  9. package/deps/rocksdb/rocksdb/cache/cache_bench.cc +7 -368
  10. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +924 -0
  11. package/deps/rocksdb/rocksdb/cache/cache_entry_roles.cc +128 -0
  12. package/deps/rocksdb/rocksdb/cache/cache_entry_roles.h +103 -0
  13. package/deps/rocksdb/rocksdb/cache/cache_entry_stats.h +183 -0
  14. package/deps/rocksdb/rocksdb/cache/cache_helpers.h +11 -0
  15. package/deps/rocksdb/rocksdb/cache/cache_key.cc +344 -0
  16. package/deps/rocksdb/rocksdb/cache/cache_key.h +132 -0
  17. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.cc +183 -0
  18. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +288 -0
  19. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager_test.cc +468 -0
  20. package/deps/rocksdb/rocksdb/cache/cache_test.cc +85 -8
  21. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +121 -51
  22. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +171 -0
  23. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +86 -0
  24. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +607 -0
  25. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +381 -154
  26. package/deps/rocksdb/rocksdb/cache/lru_cache.h +176 -33
  27. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +1659 -3
  28. package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +94 -23
  29. package/deps/rocksdb/rocksdb/cache/sharded_cache.h +49 -28
  30. package/deps/rocksdb/rocksdb/crash_test.mk +93 -0
  31. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +54 -31
  32. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +10 -6
  33. package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator.h +146 -0
  34. package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator_test.cc +326 -0
  35. package/deps/rocksdb/rocksdb/db/blob/blob_fetcher.cc +34 -0
  36. package/deps/rocksdb/rocksdb/db/blob/blob_fetcher.h +37 -0
  37. package/deps/rocksdb/rocksdb/db/blob/blob_file_addition.cc +4 -2
  38. package/deps/rocksdb/rocksdb/db/blob/blob_file_addition_test.cc +8 -4
  39. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +99 -40
  40. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +20 -8
  41. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +95 -83
  42. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +13 -10
  43. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +7 -4
  44. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +37 -37
  45. package/deps/rocksdb/rocksdb/db/blob/blob_file_completion_callback.h +101 -0
  46. package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.cc +8 -1
  47. package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.h +6 -0
  48. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +209 -44
  49. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +37 -11
  50. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +382 -179
  51. package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter.cc +100 -0
  52. package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter.h +102 -0
  53. package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter_test.cc +196 -0
  54. package/deps/rocksdb/rocksdb/db/blob/blob_index.h +3 -0
  55. package/deps/rocksdb/rocksdb/db/blob/blob_log_format.h +2 -1
  56. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +7 -5
  57. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.h +10 -3
  58. package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.cc +12 -8
  59. package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.h +5 -5
  60. package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +772 -9
  61. package/deps/rocksdb/rocksdb/db/blob/db_blob_compaction_test.cc +730 -0
  62. package/deps/rocksdb/rocksdb/db/blob/db_blob_corruption_test.cc +82 -0
  63. package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +155 -17
  64. package/deps/rocksdb/rocksdb/db/blob/prefetch_buffer_collection.cc +21 -0
  65. package/deps/rocksdb/rocksdb/db/blob/prefetch_buffer_collection.h +38 -0
  66. package/deps/rocksdb/rocksdb/db/builder.cc +137 -89
  67. package/deps/rocksdb/rocksdb/db/builder.h +16 -37
  68. package/deps/rocksdb/rocksdb/db/c.cc +413 -208
  69. package/deps/rocksdb/rocksdb/db/c_test.c +227 -138
  70. package/deps/rocksdb/rocksdb/db/column_family.cc +118 -103
  71. package/deps/rocksdb/rocksdb/db/column_family.h +86 -44
  72. package/deps/rocksdb/rocksdb/db/column_family_test.cc +38 -24
  73. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +81 -0
  74. package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator.h +275 -0
  75. package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator_test.cc +258 -0
  76. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +81 -28
  77. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +43 -12
  78. package/deps/rocksdb/rocksdb/db/compaction/compaction_iteration_stats.h +12 -0
  79. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +406 -215
  80. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +147 -50
  81. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +167 -61
  82. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +1321 -156
  83. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +197 -28
  84. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -3
  85. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +246 -43
  86. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +65 -26
  87. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +7 -7
  88. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +122 -9
  89. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +8 -2
  90. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +18 -6
  91. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +1 -1
  92. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +536 -44
  93. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +311 -30
  94. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +1 -1
  95. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +849 -0
  96. package/deps/rocksdb/rocksdb/db/compaction/file_pri.h +92 -0
  97. package/deps/rocksdb/rocksdb/db/compaction/sst_partitioner.cc +46 -0
  98. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -1
  99. package/deps/rocksdb/rocksdb/db/convenience.cc +6 -3
  100. package/deps/rocksdb/rocksdb/db/corruption_test.cc +383 -28
  101. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +7 -2
  102. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +154 -45
  103. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +1095 -33
  104. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +1249 -203
  105. package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +135 -9
  106. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +1348 -166
  107. package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +3 -5
  108. package/deps/rocksdb/rocksdb/db/db_encryption_test.cc +1 -1
  109. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +312 -45
  110. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1734 -48
  111. package/deps/rocksdb/rocksdb/db/{compacted_db_impl.cc → db_impl/compacted_db_impl.cc} +24 -7
  112. package/deps/rocksdb/rocksdb/db/{compacted_db_impl.h → db_impl/compacted_db_impl.h} +1 -1
  113. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +644 -333
  114. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +365 -92
  115. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +578 -210
  116. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +38 -16
  117. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +17 -10
  118. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +75 -74
  119. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +450 -183
  120. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +42 -9
  121. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +232 -15
  122. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +42 -4
  123. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +297 -100
  124. package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +16 -15
  125. package/deps/rocksdb/rocksdb/db/db_inplace_update_test.cc +31 -1
  126. package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +6 -5
  127. package/deps/rocksdb/rocksdb/db/db_iter.cc +218 -153
  128. package/deps/rocksdb/rocksdb/db/db_iter.h +14 -12
  129. package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +1 -1
  130. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +84 -160
  131. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +47 -6
  132. package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +204 -0
  133. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +21 -13
  134. package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +17 -10
  135. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +38 -24
  136. package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +184 -19
  137. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +1 -1
  138. package/deps/rocksdb/rocksdb/db/db_options_test.cc +183 -3
  139. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +409 -9
  140. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +92 -23
  141. package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +446 -0
  142. package/deps/rocksdb/rocksdb/db/{db_impl/db_secondary_test.cc → db_secondary_test.cc} +363 -35
  143. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +520 -15
  144. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +50 -1
  145. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +139 -4
  146. package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +1 -1
  147. package/deps/rocksdb/rocksdb/db/db_test.cc +669 -359
  148. package/deps/rocksdb/rocksdb/db/db_test2.cc +2110 -304
  149. package/deps/rocksdb/rocksdb/db/db_test_util.cc +76 -43
  150. package/deps/rocksdb/rocksdb/db/db_test_util.h +231 -103
  151. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +19 -11
  152. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +490 -71
  153. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +980 -349
  154. package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +11 -12
  155. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +793 -0
  156. package/deps/rocksdb/rocksdb/db/db_write_test.cc +2 -1
  157. package/deps/rocksdb/rocksdb/db/dbformat.cc +4 -12
  158. package/deps/rocksdb/rocksdb/db/dbformat.h +28 -18
  159. package/deps/rocksdb/rocksdb/db/dbformat_test.cc +3 -0
  160. package/deps/rocksdb/rocksdb/db/deletefile_test.cc +50 -15
  161. package/deps/rocksdb/rocksdb/db/error_handler.cc +127 -41
  162. package/deps/rocksdb/rocksdb/db/error_handler.h +12 -5
  163. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +524 -255
  164. package/deps/rocksdb/rocksdb/db/event_helpers.cc +136 -11
  165. package/deps/rocksdb/rocksdb/db/event_helpers.h +27 -2
  166. package/deps/rocksdb/rocksdb/db/experimental.cc +100 -0
  167. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +307 -4
  168. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +137 -60
  169. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +12 -8
  170. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +86 -55
  171. package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +86 -5
  172. package/deps/rocksdb/rocksdb/db/filename_test.cc +63 -0
  173. package/deps/rocksdb/rocksdb/db/flush_job.cc +619 -64
  174. package/deps/rocksdb/rocksdb/db/flush_job.h +30 -7
  175. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +33 -16
  176. package/deps/rocksdb/rocksdb/db/flush_scheduler.h +2 -1
  177. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +18 -17
  178. package/deps/rocksdb/rocksdb/db/forward_iterator.h +5 -4
  179. package/deps/rocksdb/rocksdb/db/forward_iterator_bench.cc +0 -1
  180. package/deps/rocksdb/rocksdb/db/history_trimming_iterator.h +91 -0
  181. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +25 -14
  182. package/deps/rocksdb/rocksdb/db/import_column_family_job.h +6 -5
  183. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +1 -1
  184. package/deps/rocksdb/rocksdb/db/internal_stats.cc +471 -50
  185. package/deps/rocksdb/rocksdb/db/internal_stats.h +129 -25
  186. package/deps/rocksdb/rocksdb/db/job_context.h +22 -9
  187. package/deps/rocksdb/rocksdb/db/kv_checksum.h +394 -0
  188. package/deps/rocksdb/rocksdb/db/listener_test.cc +518 -41
  189. package/deps/rocksdb/rocksdb/db/log_format.h +4 -1
  190. package/deps/rocksdb/rocksdb/db/log_reader.cc +129 -6
  191. package/deps/rocksdb/rocksdb/db/log_reader.h +17 -1
  192. package/deps/rocksdb/rocksdb/db/log_test.cc +161 -11
  193. package/deps/rocksdb/rocksdb/db/log_writer.cc +92 -13
  194. package/deps/rocksdb/rocksdb/db/log_writer.h +18 -5
  195. package/deps/rocksdb/rocksdb/db/logs_with_prep_tracker.h +1 -1
  196. package/deps/rocksdb/rocksdb/db/lookup_key.h +0 -1
  197. package/deps/rocksdb/rocksdb/db/malloc_stats.cc +2 -2
  198. package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +21 -8
  199. package/deps/rocksdb/rocksdb/db/memtable.cc +144 -54
  200. package/deps/rocksdb/rocksdb/db/memtable.h +72 -15
  201. package/deps/rocksdb/rocksdb/db/memtable_list.cc +95 -47
  202. package/deps/rocksdb/rocksdb/db/memtable_list.h +33 -13
  203. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +61 -31
  204. package/deps/rocksdb/rocksdb/db/merge_context.h +20 -8
  205. package/deps/rocksdb/rocksdb/db/merge_helper.cc +54 -11
  206. package/deps/rocksdb/rocksdb/db/merge_helper.h +17 -6
  207. package/deps/rocksdb/rocksdb/db/merge_helper_test.cc +13 -7
  208. package/deps/rocksdb/rocksdb/db/merge_test.cc +40 -19
  209. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +14 -25
  210. package/deps/rocksdb/rocksdb/db/output_validator.cc +3 -0
  211. package/deps/rocksdb/rocksdb/db/output_validator.h +5 -4
  212. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +32 -28
  213. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.cc +43 -29
  214. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.h +9 -7
  215. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler_test.cc +21 -16
  216. package/deps/rocksdb/rocksdb/db/pinned_iterators_manager.h +1 -1
  217. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +29 -36
  218. package/deps/rocksdb/rocksdb/db/pre_release_callback.h +1 -2
  219. package/deps/rocksdb/rocksdb/db/prefix_test.cc +4 -4
  220. package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +2 -2
  221. package/deps/rocksdb/rocksdb/db/range_del_aggregator_bench.cc +11 -11
  222. package/deps/rocksdb/rocksdb/db/range_del_aggregator_test.cc +3 -2
  223. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +14 -8
  224. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +17 -0
  225. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter_test.cc +4 -2
  226. package/deps/rocksdb/rocksdb/db/read_callback.h +1 -0
  227. package/deps/rocksdb/rocksdb/db/repair.cc +87 -58
  228. package/deps/rocksdb/rocksdb/db/repair_test.cc +35 -5
  229. package/deps/rocksdb/rocksdb/db/snapshot_impl.h +2 -1
  230. package/deps/rocksdb/rocksdb/db/table_cache.cc +95 -69
  231. package/deps/rocksdb/rocksdb/db/table_cache.h +63 -53
  232. package/deps/rocksdb/rocksdb/db/table_properties_collector.cc +4 -4
  233. package/deps/rocksdb/rocksdb/db/table_properties_collector.h +78 -10
  234. package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +28 -33
  235. package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +30 -51
  236. package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +12 -8
  237. package/deps/rocksdb/rocksdb/db/version_builder.cc +564 -341
  238. package/deps/rocksdb/rocksdb/db/version_builder.h +8 -8
  239. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +327 -155
  240. package/deps/rocksdb/rocksdb/db/version_edit.cc +89 -27
  241. package/deps/rocksdb/rocksdb/db/version_edit.h +42 -17
  242. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +324 -43
  243. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +79 -22
  244. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +165 -20
  245. package/deps/rocksdb/rocksdb/db/version_set.cc +935 -1034
  246. package/deps/rocksdb/rocksdb/db/version_set.h +183 -122
  247. package/deps/rocksdb/rocksdb/db/version_set_test.cc +556 -138
  248. package/deps/rocksdb/rocksdb/db/version_util.h +68 -0
  249. package/deps/rocksdb/rocksdb/db/wal_manager.cc +23 -21
  250. package/deps/rocksdb/rocksdb/db/wal_manager.h +5 -2
  251. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +30 -27
  252. package/deps/rocksdb/rocksdb/db/write_batch.cc +704 -209
  253. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +135 -2
  254. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +209 -5
  255. package/deps/rocksdb/rocksdb/db/write_callback_test.cc +2 -0
  256. package/deps/rocksdb/rocksdb/db/write_controller.cc +47 -54
  257. package/deps/rocksdb/rocksdb/db/write_controller.h +12 -9
  258. package/deps/rocksdb/rocksdb/db/write_controller_test.cc +215 -103
  259. package/deps/rocksdb/rocksdb/db/write_thread.cc +11 -0
  260. package/deps/rocksdb/rocksdb/db/write_thread.h +14 -8
  261. package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +7 -4
  262. package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +10 -3
  263. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +6 -0
  264. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress.cc +1 -1
  265. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +19 -2
  266. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +78 -25
  267. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_filter.h +13 -2
  268. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +29 -12
  269. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +5 -1
  270. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +199 -32
  271. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.cc +188 -0
  272. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +59 -10
  273. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +77 -109
  274. package/deps/rocksdb/rocksdb/{third-party/folly/folly/synchronization/WaitOptions.cpp → db_stress_tool/db_stress_stat.cc} +9 -4
  275. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_stat.h +7 -6
  276. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +1 -0
  277. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +699 -143
  278. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +20 -2
  279. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +49 -39
  280. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +631 -0
  281. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.h +287 -0
  282. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +1565 -0
  283. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +374 -0
  284. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +149 -18
  285. package/deps/rocksdb/rocksdb/env/composite_env.cc +464 -0
  286. package/deps/rocksdb/rocksdb/env/composite_env_wrapper.h +98 -646
  287. package/deps/rocksdb/rocksdb/env/emulated_clock.h +114 -0
  288. package/deps/rocksdb/rocksdb/env/env.cc +632 -42
  289. package/deps/rocksdb/rocksdb/env/env_basic_test.cc +84 -36
  290. package/deps/rocksdb/rocksdb/env/env_chroot.cc +88 -286
  291. package/deps/rocksdb/rocksdb/env/env_chroot.h +34 -1
  292. package/deps/rocksdb/rocksdb/env/env_encryption.cc +469 -277
  293. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +9 -30
  294. package/deps/rocksdb/rocksdb/env/env_posix.cc +110 -119
  295. package/deps/rocksdb/rocksdb/env/env_test.cc +1128 -39
  296. package/deps/rocksdb/rocksdb/env/file_system.cc +147 -8
  297. package/deps/rocksdb/rocksdb/env/file_system_tracer.cc +207 -136
  298. package/deps/rocksdb/rocksdb/env/file_system_tracer.h +86 -54
  299. package/deps/rocksdb/rocksdb/env/fs_posix.cc +192 -64
  300. package/deps/rocksdb/rocksdb/env/fs_readonly.h +107 -0
  301. package/deps/rocksdb/rocksdb/env/fs_remap.cc +339 -0
  302. package/deps/rocksdb/rocksdb/env/fs_remap.h +139 -0
  303. package/deps/rocksdb/rocksdb/env/io_posix.cc +245 -41
  304. package/deps/rocksdb/rocksdb/env/io_posix.h +66 -1
  305. package/deps/rocksdb/rocksdb/env/mock_env.cc +147 -149
  306. package/deps/rocksdb/rocksdb/env/mock_env.h +113 -11
  307. package/deps/rocksdb/rocksdb/env/mock_env_test.cc +2 -4
  308. package/deps/rocksdb/rocksdb/env/unique_id_gen.cc +164 -0
  309. package/deps/rocksdb/rocksdb/env/unique_id_gen.h +71 -0
  310. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +9 -5
  311. package/deps/rocksdb/rocksdb/file/delete_scheduler.h +6 -4
  312. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +19 -12
  313. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +459 -70
  314. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +205 -28
  315. package/deps/rocksdb/rocksdb/file/file_util.cc +39 -28
  316. package/deps/rocksdb/rocksdb/file/file_util.h +18 -27
  317. package/deps/rocksdb/rocksdb/file/filename.cc +59 -22
  318. package/deps/rocksdb/rocksdb/file/filename.h +13 -8
  319. package/deps/rocksdb/rocksdb/file/line_file_reader.cc +68 -0
  320. package/deps/rocksdb/rocksdb/file/line_file_reader.h +59 -0
  321. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +1130 -6
  322. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +220 -36
  323. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +69 -17
  324. package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +13 -12
  325. package/deps/rocksdb/rocksdb/file/read_write_util.cc +3 -38
  326. package/deps/rocksdb/rocksdb/file/read_write_util.h +0 -4
  327. package/deps/rocksdb/rocksdb/file/readahead_file_info.h +33 -0
  328. package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +57 -9
  329. package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +58 -6
  330. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +29 -54
  331. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +22 -29
  332. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +424 -50
  333. package/deps/rocksdb/rocksdb/file/writable_file_writer.h +66 -19
  334. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +157 -66
  335. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +224 -121
  336. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +333 -30
  337. package/deps/rocksdb/rocksdb/include/rocksdb/cache_bench_tool.h +14 -0
  338. package/deps/rocksdb/rocksdb/include/rocksdb/cleanable.h +1 -1
  339. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +90 -50
  340. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +13 -5
  341. package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +20 -4
  342. package/deps/rocksdb/rocksdb/include/rocksdb/concurrent_task_limiter.h +8 -3
  343. package/deps/rocksdb/rocksdb/include/rocksdb/configurable.h +53 -12
  344. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +31 -6
  345. package/deps/rocksdb/rocksdb/include/rocksdb/customizable.h +102 -7
  346. package/deps/rocksdb/rocksdb/include/rocksdb/data_structure.h +51 -0
  347. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +370 -262
  348. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +286 -87
  349. package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +124 -64
  350. package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +27 -0
  351. package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +21 -4
  352. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +384 -41
  353. package/deps/rocksdb/rocksdb/include/rocksdb/filter_policy.h +111 -143
  354. package/deps/rocksdb/rocksdb/include/rocksdb/flush_block_policy.h +20 -6
  355. package/deps/rocksdb/rocksdb/include/rocksdb/functor_wrapper.h +56 -0
  356. package/deps/rocksdb/rocksdb/include/rocksdb/io_status.h +15 -33
  357. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +37 -1
  358. package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +1 -3
  359. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +314 -26
  360. package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +11 -7
  361. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +50 -15
  362. package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +10 -3
  363. package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +186 -96
  364. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +373 -103
  365. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +13 -3
  366. package/deps/rocksdb/rocksdb/include/rocksdb/persistent_cache.h +2 -2
  367. package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +37 -7
  368. package/deps/rocksdb/rocksdb/include/rocksdb/rocksdb_namespace.h +6 -0
  369. package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +87 -0
  370. package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +5 -12
  371. package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +59 -30
  372. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +11 -11
  373. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +22 -0
  374. package/deps/rocksdb/rocksdb/include/rocksdb/sst_partitioner.h +17 -10
  375. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +121 -41
  376. package/deps/rocksdb/rocksdb/include/rocksdb/stats_history.h +1 -0
  377. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +114 -136
  378. package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +116 -0
  379. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +160 -18
  380. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +57 -15
  381. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +3 -1
  382. package/deps/rocksdb/rocksdb/include/rocksdb/trace_reader_writer.h +10 -6
  383. package/deps/rocksdb/rocksdb/include/rocksdb/trace_record.h +247 -0
  384. package/deps/rocksdb/rocksdb/include/rocksdb/trace_record_result.h +187 -0
  385. package/deps/rocksdb/rocksdb/include/rocksdb/transaction_log.h +1 -1
  386. package/deps/rocksdb/rocksdb/include/rocksdb/types.h +14 -24
  387. package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +46 -0
  388. package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +14 -4
  389. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/agg_merge.h +138 -0
  390. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backup_engine.h +631 -0
  391. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/cache_dump_load.h +142 -0
  392. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/checkpoint.h +12 -9
  393. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/customizable_util.h +368 -0
  394. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +24 -0
  395. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd_execute_result.h +4 -0
  396. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +418 -63
  397. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +143 -73
  398. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +2 -2
  399. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/replayer.h +87 -0
  400. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/sim_cache.h +2 -2
  401. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +43 -5
  402. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +18 -23
  403. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +26 -0
  404. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +32 -6
  405. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db_mutex.h +1 -2
  406. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +20 -1
  407. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +30 -3
  408. package/deps/rocksdb/rocksdb/include/rocksdb/wal_filter.h +11 -2
  409. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +89 -11
  410. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch_base.h +11 -0
  411. package/deps/rocksdb/rocksdb/include/rocksdb/write_buffer_manager.h +108 -38
  412. package/deps/rocksdb/rocksdb/logging/auto_roll_logger.cc +40 -23
  413. package/deps/rocksdb/rocksdb/logging/auto_roll_logger.h +12 -5
  414. package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +100 -49
  415. package/deps/rocksdb/rocksdb/logging/env_logger.h +7 -5
  416. package/deps/rocksdb/rocksdb/logging/env_logger_test.cc +0 -1
  417. package/deps/rocksdb/rocksdb/logging/posix_logger.h +3 -9
  418. package/deps/rocksdb/rocksdb/memory/arena.cc +3 -1
  419. package/deps/rocksdb/rocksdb/memory/arena.h +1 -1
  420. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +171 -106
  421. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +31 -15
  422. package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator.cc +15 -4
  423. package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator.h +24 -8
  424. package/deps/rocksdb/rocksdb/memory/memory_allocator.cc +91 -0
  425. package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +239 -0
  426. package/deps/rocksdb/rocksdb/memory/memory_usage.h +14 -1
  427. package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +72 -9
  428. package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.cc +52 -6
  429. package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +53 -0
  430. package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +5 -5
  431. package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +17 -5
  432. package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +1 -1
  433. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +87 -0
  434. package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +20 -10
  435. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +148 -94
  436. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +160 -62
  437. package/deps/rocksdb/rocksdb/microbench/CMakeLists.txt +17 -0
  438. package/deps/rocksdb/rocksdb/microbench/README.md +60 -0
  439. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +1360 -0
  440. package/deps/rocksdb/rocksdb/microbench/ribbon_bench.cc +153 -0
  441. package/deps/rocksdb/rocksdb/monitoring/histogram.cc +8 -15
  442. package/deps/rocksdb/rocksdb/monitoring/histogram.h +0 -1
  443. package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +18 -16
  444. package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.cc +9 -7
  445. package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.h +5 -3
  446. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.cc +7 -5
  447. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +37 -12
  448. package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +26 -6
  449. package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +6 -10
  450. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +14 -13
  451. package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +19 -20
  452. package/deps/rocksdb/rocksdb/monitoring/perf_step_timer.h +18 -18
  453. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +84 -2
  454. package/deps/rocksdb/rocksdb/monitoring/statistics.h +6 -0
  455. package/deps/rocksdb/rocksdb/monitoring/statistics_test.cc +47 -2
  456. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +67 -54
  457. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +4 -1
  458. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +2 -1
  459. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +2 -2
  460. package/deps/rocksdb/rocksdb/options/cf_options.cc +280 -212
  461. package/deps/rocksdb/rocksdb/options/cf_options.h +51 -57
  462. package/deps/rocksdb/rocksdb/options/configurable.cc +242 -138
  463. package/deps/rocksdb/rocksdb/options/configurable_helper.h +4 -68
  464. package/deps/rocksdb/rocksdb/options/configurable_test.cc +144 -21
  465. package/deps/rocksdb/rocksdb/options/configurable_test.h +2 -3
  466. package/deps/rocksdb/rocksdb/options/customizable.cc +67 -7
  467. package/deps/rocksdb/rocksdb/options/customizable_test.cc +1773 -151
  468. package/deps/rocksdb/rocksdb/options/db_options.cc +275 -47
  469. package/deps/rocksdb/rocksdb/options/db_options.h +36 -7
  470. package/deps/rocksdb/rocksdb/options/options.cc +49 -17
  471. package/deps/rocksdb/rocksdb/options/options_helper.cc +369 -352
  472. package/deps/rocksdb/rocksdb/options/options_helper.h +23 -23
  473. package/deps/rocksdb/rocksdb/options/options_parser.cc +18 -13
  474. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +67 -54
  475. package/deps/rocksdb/rocksdb/options/options_test.cc +1162 -187
  476. package/deps/rocksdb/rocksdb/plugin/README.md +43 -0
  477. package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +1 -1
  478. package/deps/rocksdb/rocksdb/port/lang.h +52 -0
  479. package/deps/rocksdb/rocksdb/port/port_example.h +1 -1
  480. package/deps/rocksdb/rocksdb/port/port_posix.cc +31 -2
  481. package/deps/rocksdb/rocksdb/port/port_posix.h +20 -2
  482. package/deps/rocksdb/rocksdb/port/stack_trace.cc +20 -4
  483. package/deps/rocksdb/rocksdb/port/sys_time.h +2 -2
  484. package/deps/rocksdb/rocksdb/port/win/env_default.cc +7 -7
  485. package/deps/rocksdb/rocksdb/port/win/env_win.cc +44 -74
  486. package/deps/rocksdb/rocksdb/port/win/env_win.h +25 -23
  487. package/deps/rocksdb/rocksdb/port/win/io_win.cc +32 -34
  488. package/deps/rocksdb/rocksdb/port/win/io_win.h +12 -6
  489. package/deps/rocksdb/rocksdb/port/win/port_win.cc +55 -35
  490. package/deps/rocksdb/rocksdb/port/win/port_win.h +22 -5
  491. package/deps/rocksdb/rocksdb/port/win/win_logger.cc +3 -3
  492. package/deps/rocksdb/rocksdb/port/win/win_logger.h +3 -5
  493. package/deps/rocksdb/rocksdb/port/win/win_thread.cc +7 -1
  494. package/deps/rocksdb/rocksdb/port/win/win_thread.h +12 -17
  495. package/deps/rocksdb/rocksdb/python.mk +9 -0
  496. package/deps/rocksdb/rocksdb/src.mk +82 -34
  497. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +3 -4
  498. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +1 -1
  499. package/deps/rocksdb/rocksdb/table/block_based/block.cc +158 -80
  500. package/deps/rocksdb/rocksdb/table/block_based/block.h +64 -36
  501. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +23 -14
  502. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.h +13 -5
  503. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block_test.cc +3 -218
  504. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +603 -328
  505. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +28 -22
  506. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +220 -82
  507. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +8 -2
  508. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +3 -4
  509. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +28 -4
  510. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +598 -492
  511. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +151 -96
  512. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +31 -58
  513. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +330 -92
  514. package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +50 -19
  515. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +23 -0
  516. package/deps/rocksdb/rocksdb/table/block_based/block_like_traits.h +226 -0
  517. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +56 -22
  518. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +42 -4
  519. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +5 -2
  520. package/deps/rocksdb/rocksdb/table/block_based/block_type.h +2 -0
  521. package/deps/rocksdb/rocksdb/table/block_based/cachable_entry.h +34 -20
  522. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +9 -10
  523. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +26 -3
  524. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +2 -1
  525. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +844 -202
  526. package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +281 -81
  527. package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +62 -2
  528. package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.h +2 -3
  529. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +28 -7
  530. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +22 -6
  531. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +28 -26
  532. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +1 -1
  533. package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +1 -2
  534. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +2 -1
  535. package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +11 -4
  536. package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.cc +2 -1
  537. package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.h +2 -0
  538. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +68 -26
  539. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +44 -9
  540. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +12 -10
  541. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +3 -4
  542. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.h +23 -4
  543. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +44 -19
  544. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.h +5 -1
  545. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +16 -28
  546. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +7 -4
  547. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +2 -2
  548. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +77 -57
  549. package/deps/rocksdb/rocksdb/table/block_fetcher.h +23 -12
  550. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +43 -56
  551. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +8 -8
  552. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +2 -1
  553. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +52 -70
  554. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.cc +5 -8
  555. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.h +1 -1
  556. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +17 -11
  557. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.h +2 -3
  558. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +42 -51
  559. package/deps/rocksdb/rocksdb/table/format.cc +258 -104
  560. package/deps/rocksdb/rocksdb/table/format.h +120 -109
  561. package/deps/rocksdb/rocksdb/table/get_context.cc +97 -65
  562. package/deps/rocksdb/rocksdb/table/get_context.h +19 -12
  563. package/deps/rocksdb/rocksdb/table/internal_iterator.h +14 -0
  564. package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +8 -0
  565. package/deps/rocksdb/rocksdb/table/merger_test.cc +3 -2
  566. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +11 -21
  567. package/deps/rocksdb/rocksdb/table/merging_iterator.h +3 -3
  568. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +176 -171
  569. package/deps/rocksdb/rocksdb/table/meta_blocks.h +47 -33
  570. package/deps/rocksdb/rocksdb/table/mock_table.cc +7 -9
  571. package/deps/rocksdb/rocksdb/table/mock_table.h +3 -2
  572. package/deps/rocksdb/rocksdb/table/multiget_context.h +15 -8
  573. package/deps/rocksdb/rocksdb/table/persistent_cache_helper.cc +22 -29
  574. package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +6 -3
  575. package/deps/rocksdb/rocksdb/table/plain/plain_table_bloom.h +5 -8
  576. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +29 -26
  577. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +12 -16
  578. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +145 -69
  579. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.h +1 -1
  580. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +7 -6
  581. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +3 -4
  582. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +3 -1
  583. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.h +1 -1
  584. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +13 -18
  585. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +4 -9
  586. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +55 -37
  587. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +10 -5
  588. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +11 -8
  589. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +222 -16
  590. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +106 -58
  591. package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +6 -5
  592. package/deps/rocksdb/rocksdb/table/table_builder.h +68 -44
  593. package/deps/rocksdb/rocksdb/table/table_factory.cc +37 -10
  594. package/deps/rocksdb/rocksdb/table/table_properties.cc +109 -54
  595. package/deps/rocksdb/rocksdb/table/table_properties_internal.h +4 -20
  596. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +33 -32
  597. package/deps/rocksdb/rocksdb/table/table_reader_caller.h +2 -0
  598. package/deps/rocksdb/rocksdb/table/table_test.cc +989 -326
  599. package/deps/rocksdb/rocksdb/table/two_level_iterator.cc +4 -0
  600. package/deps/rocksdb/rocksdb/table/unique_id.cc +166 -0
  601. package/deps/rocksdb/rocksdb/table/unique_id_impl.h +59 -0
  602. package/deps/rocksdb/rocksdb/test_util/mock_time_env.cc +1 -1
  603. package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +13 -10
  604. package/deps/rocksdb/rocksdb/test_util/sync_point.cc +1 -2
  605. package/deps/rocksdb/rocksdb/test_util/sync_point.h +35 -16
  606. package/deps/rocksdb/rocksdb/test_util/sync_point_impl.cc +32 -10
  607. package/deps/rocksdb/rocksdb/test_util/sync_point_impl.h +31 -4
  608. package/deps/rocksdb/rocksdb/test_util/testharness.cc +53 -1
  609. package/deps/rocksdb/rocksdb/test_util/testharness.h +67 -3
  610. package/deps/rocksdb/rocksdb/test_util/testutil.cc +236 -66
  611. package/deps/rocksdb/rocksdb/test_util/testutil.h +63 -100
  612. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +12 -1
  613. package/deps/rocksdb/rocksdb/tools/blob_dump.cc +2 -2
  614. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +6 -3
  615. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.h +1 -0
  616. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +9 -3
  617. package/deps/rocksdb/rocksdb/tools/db_bench.cc +1 -1
  618. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +1420 -611
  619. package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +11 -8
  620. package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +11 -1
  621. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +4 -2
  622. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_tool.cc +46 -22
  623. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +655 -179
  624. package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +58 -6
  625. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +472 -29
  626. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +23 -2
  627. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +2 -2
  628. package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.cc +246 -0
  629. package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.h +126 -0
  630. package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +83 -29
  631. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +38 -17
  632. package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +191 -55
  633. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +219 -296
  634. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.h +87 -53
  635. package/deps/rocksdb/rocksdb/tools/write_stress.cc +8 -7
  636. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.cc +6 -5
  637. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +5 -4
  638. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer_test.cc +14 -9
  639. package/deps/rocksdb/rocksdb/trace_replay/io_tracer.cc +134 -60
  640. package/deps/rocksdb/rocksdb/trace_replay/io_tracer.h +49 -38
  641. package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +152 -15
  642. package/deps/rocksdb/rocksdb/trace_replay/trace_record.cc +206 -0
  643. package/deps/rocksdb/rocksdb/trace_replay/trace_record_handler.cc +190 -0
  644. package/deps/rocksdb/rocksdb/trace_replay/trace_record_handler.h +46 -0
  645. package/deps/rocksdb/rocksdb/trace_replay/trace_record_result.cc +146 -0
  646. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +475 -344
  647. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.h +83 -95
  648. package/deps/rocksdb/rocksdb/util/autovector.h +38 -18
  649. package/deps/rocksdb/rocksdb/util/autovector_test.cc +1 -1
  650. package/deps/rocksdb/rocksdb/util/bloom_impl.h +4 -0
  651. package/deps/rocksdb/rocksdb/util/bloom_test.cc +276 -94
  652. package/deps/rocksdb/rocksdb/util/build_version.cc.in +81 -4
  653. package/deps/rocksdb/rocksdb/util/cast_util.h +22 -0
  654. package/deps/rocksdb/rocksdb/util/channel.h +2 -0
  655. package/deps/rocksdb/rocksdb/util/coding.h +1 -33
  656. package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +8 -0
  657. package/deps/rocksdb/rocksdb/util/comparator.cc +163 -3
  658. package/deps/rocksdb/rocksdb/util/compression.cc +122 -0
  659. package/deps/rocksdb/rocksdb/util/compression.h +212 -7
  660. package/deps/rocksdb/rocksdb/util/compression_context_cache.cc +1 -3
  661. package/deps/rocksdb/rocksdb/util/crc32c.cc +165 -2
  662. package/deps/rocksdb/rocksdb/util/crc32c.h +6 -0
  663. package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +14 -0
  664. package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +3 -0
  665. package/deps/rocksdb/rocksdb/util/crc32c_test.cc +47 -0
  666. package/deps/rocksdb/rocksdb/util/defer.h +30 -1
  667. package/deps/rocksdb/rocksdb/util/defer_test.cc +11 -0
  668. package/deps/rocksdb/rocksdb/util/duplicate_detector.h +3 -1
  669. package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +3 -3
  670. package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +5 -4
  671. package/deps/rocksdb/rocksdb/util/fastrange.h +2 -0
  672. package/deps/rocksdb/rocksdb/util/file_checksum_helper.cc +36 -0
  673. package/deps/rocksdb/rocksdb/util/file_checksum_helper.h +3 -1
  674. package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +512 -52
  675. package/deps/rocksdb/rocksdb/util/filter_bench.cc +65 -10
  676. package/deps/rocksdb/rocksdb/util/gflags_compat.h +6 -1
  677. package/deps/rocksdb/rocksdb/util/hash.cc +121 -3
  678. package/deps/rocksdb/rocksdb/util/hash.h +31 -1
  679. package/deps/rocksdb/rocksdb/util/hash128.h +26 -0
  680. package/deps/rocksdb/rocksdb/util/hash_containers.h +51 -0
  681. package/deps/rocksdb/rocksdb/util/hash_test.cc +194 -2
  682. package/deps/rocksdb/rocksdb/util/heap.h +6 -1
  683. package/deps/rocksdb/rocksdb/util/kv_map.h +1 -1
  684. package/deps/rocksdb/rocksdb/util/log_write_bench.cc +8 -6
  685. package/deps/rocksdb/rocksdb/util/math.h +74 -7
  686. package/deps/rocksdb/rocksdb/util/math128.h +13 -1
  687. package/deps/rocksdb/rocksdb/util/murmurhash.h +3 -3
  688. package/deps/rocksdb/rocksdb/util/random.cc +9 -0
  689. package/deps/rocksdb/rocksdb/util/random.h +6 -0
  690. package/deps/rocksdb/rocksdb/util/rate_limiter.cc +298 -144
  691. package/deps/rocksdb/rocksdb/util/rate_limiter.h +68 -19
  692. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +335 -23
  693. package/deps/rocksdb/rocksdb/util/repeatable_thread.h +10 -12
  694. package/deps/rocksdb/rocksdb/util/repeatable_thread_test.cc +18 -15
  695. package/deps/rocksdb/rocksdb/util/ribbon_alg.h +98 -74
  696. package/deps/rocksdb/rocksdb/util/ribbon_config.cc +506 -0
  697. package/deps/rocksdb/rocksdb/util/ribbon_config.h +182 -0
  698. package/deps/rocksdb/rocksdb/util/ribbon_impl.h +154 -79
  699. package/deps/rocksdb/rocksdb/util/ribbon_test.cc +742 -365
  700. package/deps/rocksdb/rocksdb/util/set_comparator.h +2 -0
  701. package/deps/rocksdb/rocksdb/util/slice.cc +198 -35
  702. package/deps/rocksdb/rocksdb/util/slice_test.cc +30 -1
  703. package/deps/rocksdb/rocksdb/util/status.cc +32 -29
  704. package/deps/rocksdb/rocksdb/util/stop_watch.h +18 -18
  705. package/deps/rocksdb/rocksdb/util/string_util.cc +85 -6
  706. package/deps/rocksdb/rocksdb/util/string_util.h +47 -2
  707. package/deps/rocksdb/rocksdb/util/thread_guard.h +41 -0
  708. package/deps/rocksdb/rocksdb/util/thread_local.h +2 -2
  709. package/deps/rocksdb/rocksdb/util/thread_local_test.cc +22 -24
  710. package/deps/rocksdb/rocksdb/util/threadpool_imp.cc +7 -6
  711. package/deps/rocksdb/rocksdb/util/timer.h +55 -46
  712. package/deps/rocksdb/rocksdb/util/timer_test.cc +50 -48
  713. package/deps/rocksdb/rocksdb/util/user_comparator_wrapper.h +4 -0
  714. package/deps/rocksdb/rocksdb/util/vector_iterator.h +31 -15
  715. package/deps/rocksdb/rocksdb/util/work_queue.h +2 -0
  716. package/deps/rocksdb/rocksdb/util/xxhash.cc +35 -1144
  717. package/deps/rocksdb/rocksdb/util/xxhash.h +5117 -373
  718. package/deps/rocksdb/rocksdb/util/xxph3.h +1762 -0
  719. package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.cc +238 -0
  720. package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.h +49 -0
  721. package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge_test.cc +134 -0
  722. package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.cc +104 -0
  723. package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.h +47 -0
  724. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +3164 -0
  725. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_impl.h +29 -0
  726. package/deps/rocksdb/rocksdb/utilities/{backupable/backupable_db_test.cc → backup/backup_engine_test.cc} +1679 -485
  727. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +6 -4
  728. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +14 -9
  729. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +2 -0
  730. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +1 -0
  731. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_gc_stats.h +4 -0
  732. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +37 -27
  733. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +8 -4
  734. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +1 -1
  735. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_iterator.h +13 -10
  736. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +5 -0
  737. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +44 -25
  738. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +3 -4
  739. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +27 -19
  740. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +4 -2
  741. package/deps/rocksdb/rocksdb/utilities/cache_dump_load.cc +69 -0
  742. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +489 -0
  743. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +366 -0
  744. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.cc +67 -4
  745. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.h +21 -6
  746. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +107 -7
  747. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_options.h +43 -0
  748. package/deps/rocksdb/rocksdb/utilities/cassandra/format.h +1 -1
  749. package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.cc +24 -8
  750. package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.h +7 -7
  751. package/deps/rocksdb/rocksdb/utilities/cassandra/serialize.h +5 -0
  752. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +99 -218
  753. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.h +8 -24
  754. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +114 -1
  755. package/deps/rocksdb/rocksdb/utilities/compaction_filters/layered_compaction_filter_base.h +6 -2
  756. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +0 -4
  757. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.h +7 -6
  758. package/deps/rocksdb/rocksdb/utilities/compaction_filters.cc +56 -0
  759. package/deps/rocksdb/rocksdb/utilities/convenience/info_log_finder.cc +2 -2
  760. package/deps/rocksdb/rocksdb/utilities/counted_fs.cc +355 -0
  761. package/deps/rocksdb/rocksdb/utilities/counted_fs.h +152 -0
  762. package/deps/rocksdb/rocksdb/utilities/env_mirror.cc +13 -0
  763. package/deps/rocksdb/rocksdb/utilities/env_timed.cc +164 -122
  764. package/deps/rocksdb/rocksdb/utilities/env_timed.h +97 -0
  765. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.cc +75 -17
  766. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +19 -3
  767. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +539 -126
  768. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +162 -17
  769. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +110 -0
  770. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +94 -0
  771. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +5 -2
  772. package/deps/rocksdb/rocksdb/utilities/memory_allocators.h +104 -0
  773. package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.h +5 -3
  774. package/deps/rocksdb/rocksdb/utilities/merge_operators/max.cc +4 -1
  775. package/deps/rocksdb/rocksdb/utilities/merge_operators/put.cc +11 -3
  776. package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.cc +0 -2
  777. package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.h +5 -1
  778. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.cc +29 -10
  779. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.h +6 -3
  780. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.cc +29 -14
  781. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.h +6 -3
  782. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +71 -18
  783. package/deps/rocksdb/rocksdb/utilities/merge_operators/uint64add.cc +15 -9
  784. package/deps/rocksdb/rocksdb/utilities/merge_operators.cc +120 -0
  785. package/deps/rocksdb/rocksdb/utilities/merge_operators.h +3 -23
  786. package/deps/rocksdb/rocksdb/utilities/object_registry.cc +267 -42
  787. package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +702 -76
  788. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +1 -1
  789. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +26 -5
  790. package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +1 -1
  791. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +124 -1
  792. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +2 -3
  793. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +8 -9
  794. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +15 -13
  795. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +1 -1
  796. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +4 -4
  797. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_evictable.h +2 -2
  798. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_bench.cc +8 -9
  799. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +1 -1
  800. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +6 -3
  801. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +2 -2
  802. package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator.cc +3 -0
  803. package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator_test.cc +2 -0
  804. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +43 -35
  805. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +20 -18
  806. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +107 -2
  807. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +23 -15
  808. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.h +2 -2
  809. package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.cc +316 -0
  810. package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.h +86 -0
  811. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +4 -5
  812. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +4 -3
  813. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +1 -1
  814. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +119 -3
  815. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc +20 -3
  816. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.h +20 -0
  817. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_external_pthread.h +3 -2
  818. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +4 -0
  819. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +38 -14
  820. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.h +17 -10
  821. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +1 -0
  822. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +1 -2
  823. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +423 -34
  824. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +82 -2
  825. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +72 -40
  826. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.h +32 -1
  827. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +13 -5
  828. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +7 -3
  829. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +207 -43
  830. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +50 -7
  831. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +28 -10
  832. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.h +11 -6
  833. package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +516 -0
  834. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +506 -15
  835. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +27 -13
  836. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +14 -14
  837. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +3 -0
  838. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +2 -2
  839. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +14 -5
  840. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +305 -27
  841. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +55 -159
  842. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +209 -2
  843. package/deps/rocksdb/rocksdb/utilities/wal_filter.cc +23 -0
  844. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +157 -88
  845. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +501 -114
  846. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +91 -316
  847. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +1212 -672
  848. package/deps/rocksdb/rocksdb.gyp +425 -446
  849. package/package.json +8 -8
  850. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  851. package/prebuilds/darwin-x86/node.napi.node +0 -0
  852. package/prebuilds/{darwin-x64+arm64 → linux-x64}/node.napi.node +0 -0
  853. package/deps/rocksdb/rocksdb/env/env_hdfs.cc +0 -648
  854. package/deps/rocksdb/rocksdb/hdfs/README +0 -23
  855. package/deps/rocksdb/rocksdb/hdfs/env_hdfs.h +0 -386
  856. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backupable_db.h +0 -535
  857. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_librados.h +0 -175
  858. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/utility_db.h +0 -34
  859. package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator_test.cc +0 -102
  860. package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.h +0 -49
  861. package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.h +0 -44
  862. package/deps/rocksdb/rocksdb/options/customizable_helper.h +0 -216
  863. package/deps/rocksdb/rocksdb/third-party/folly/folly/CPortability.h +0 -27
  864. package/deps/rocksdb/rocksdb/third-party/folly/folly/ConstexprMath.h +0 -45
  865. package/deps/rocksdb/rocksdb/third-party/folly/folly/Indestructible.h +0 -166
  866. package/deps/rocksdb/rocksdb/third-party/folly/folly/Optional.h +0 -570
  867. package/deps/rocksdb/rocksdb/third-party/folly/folly/Portability.h +0 -92
  868. package/deps/rocksdb/rocksdb/third-party/folly/folly/ScopeGuard.h +0 -54
  869. package/deps/rocksdb/rocksdb/third-party/folly/folly/Traits.h +0 -152
  870. package/deps/rocksdb/rocksdb/third-party/folly/folly/Unit.h +0 -59
  871. package/deps/rocksdb/rocksdb/third-party/folly/folly/Utility.h +0 -141
  872. package/deps/rocksdb/rocksdb/third-party/folly/folly/chrono/Hardware.h +0 -33
  873. package/deps/rocksdb/rocksdb/third-party/folly/folly/container/Array.h +0 -74
  874. package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex-inl.h +0 -117
  875. package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex.cpp +0 -263
  876. package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex.h +0 -96
  877. package/deps/rocksdb/rocksdb/third-party/folly/folly/functional/Invoke.h +0 -40
  878. package/deps/rocksdb/rocksdb/third-party/folly/folly/hash/Hash.h +0 -29
  879. package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Align.h +0 -144
  880. package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Bits.h +0 -30
  881. package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Launder.h +0 -51
  882. package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/Asm.h +0 -28
  883. package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/SysSyscall.h +0 -10
  884. package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/SysTypes.h +0 -26
  885. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification-inl.h +0 -138
  886. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification.cpp +0 -23
  887. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification.h +0 -57
  888. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicUtil-inl.h +0 -260
  889. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicUtil.h +0 -52
  890. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/Baton.h +0 -328
  891. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex-inl.h +0 -1703
  892. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex.cpp +0 -16
  893. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex.h +0 -304
  894. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutexSpecializations.h +0 -39
  895. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/ParkingLot.cpp +0 -26
  896. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/ParkingLot.h +0 -318
  897. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/WaitOptions.h +0 -57
  898. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/InlineFunctionRef.h +0 -219
  899. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable-inl.h +0 -207
  900. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable.h +0 -164
  901. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/Sleeper.h +0 -57
  902. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/Spin.h +0 -77
  903. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/test/DistributedMutexTest.cpp +0 -1145
  904. package/deps/rocksdb/rocksdb/util/build_version.h +0 -15
  905. package/deps/rocksdb/rocksdb/util/xxh3p.h +0 -1392
  906. package/deps/rocksdb/rocksdb/utilities/backupable/backupable_db.cc +0 -2354
  907. package/deps/rocksdb/rocksdb/utilities/env_librados.cc +0 -1497
  908. package/deps/rocksdb/rocksdb/utilities/env_librados_test.cc +0 -1146
  909. package/prebuilds/linux-x64/node.napi.glibc.node +0 -0
@@ -10,11 +10,13 @@
10
10
 
11
11
  #include <stdint.h>
12
12
  #include <stdio.h>
13
+
13
14
  #include <map>
14
15
  #include <memory>
15
16
  #include <string>
16
17
  #include <unordered_map>
17
18
  #include <vector>
19
+
18
20
  #include "rocksdb/iterator.h"
19
21
  #include "rocksdb/listener.h"
20
22
  #include "rocksdb/metadata.h"
@@ -39,25 +41,31 @@
39
41
 
40
42
  namespace ROCKSDB_NAMESPACE {
41
43
 
42
- struct Options;
43
- struct DBOptions;
44
44
  struct ColumnFamilyOptions;
45
- struct ReadOptions;
46
- struct WriteOptions;
47
- struct FlushOptions;
48
45
  struct CompactionOptions;
49
46
  struct CompactRangeOptions;
50
- struct TableProperties;
47
+ struct DBOptions;
51
48
  struct ExternalSstFileInfo;
52
- class WriteBatch;
49
+ struct FlushOptions;
50
+ struct Options;
51
+ struct ReadOptions;
52
+ struct TableProperties;
53
+ struct WriteOptions;
54
+ #ifdef ROCKSDB_LITE
55
+ class CompactionJobInfo;
56
+ #endif
53
57
  class Env;
54
58
  class EventListener;
59
+ class FileSystem;
60
+ #ifndef ROCKSDB_LITE
61
+ class Replayer;
62
+ #endif
55
63
  class StatsHistoryIterator;
64
+ #ifndef ROCKSDB_LITE
65
+ class TraceReader;
56
66
  class TraceWriter;
57
- #ifdef ROCKSDB_LITE
58
- class CompactionJobInfo;
59
67
  #endif
60
- class FileSystem;
68
+ class WriteBatch;
61
69
 
62
70
  extern const std::string kDefaultColumnFamilyName;
63
71
  extern const std::string kPersistentStatsColumnFamilyName;
@@ -112,15 +120,18 @@ struct RangePtr {
112
120
  };
113
121
 
114
122
  // It is valid that files_checksums and files_checksum_func_names are both
115
- // empty (no checksum informaiton is provided for ingestion). Otherwise,
123
+ // empty (no checksum information is provided for ingestion). Otherwise,
116
124
  // their sizes should be the same as external_files. The file order should
117
125
  // be the same in three vectors and guaranteed by the caller.
126
+ // Note that, we assume the temperatures of this batch of files to be
127
+ // ingested are the same.
118
128
  struct IngestExternalFileArg {
119
129
  ColumnFamilyHandle* column_family = nullptr;
120
130
  std::vector<std::string> external_files;
121
131
  IngestExternalFileOptions options;
122
132
  std::vector<std::string> files_checksums;
123
133
  std::vector<std::string> files_checksum_func_names;
134
+ Temperature file_temperature = Temperature::kUnknown;
124
135
  };
125
136
 
126
137
  struct GetMergeOperandsOptions {
@@ -130,8 +141,8 @@ struct GetMergeOperandsOptions {
130
141
  // A collections of table properties objects, where
131
142
  // key: is the table's file name.
132
143
  // value: the table properties object of the given table.
133
- typedef std::unordered_map<std::string, std::shared_ptr<const TableProperties>>
134
- TablePropertiesCollection;
144
+ using TablePropertiesCollection =
145
+ std::unordered_map<std::string, std::shared_ptr<const TableProperties>>;
135
146
 
136
147
  // A DB is a persistent, versioned ordered map from keys to values.
137
148
  // A DB is safe for concurrent access from multiple threads without
@@ -140,18 +151,49 @@ typedef std::unordered_map<std::string, std::shared_ptr<const TableProperties>>
140
151
  // and a number of wrapper implementations.
141
152
  class DB {
142
153
  public:
143
- // Open the database with the specified "name".
154
+ // Open the database with the specified "name" for reads and writes.
144
155
  // Stores a pointer to a heap-allocated database in *dbptr and returns
145
156
  // OK on success.
146
- // Stores nullptr in *dbptr and returns a non-OK status on error.
147
- // Caller should delete *dbptr when it is no longer needed.
157
+ // Stores nullptr in *dbptr and returns a non-OK status on error, including
158
+ // if the DB is already open (read-write) by another DB object. (This
159
+ // guarantee depends on options.env->LockFile(), which might not provide
160
+ // this guarantee in a custom Env implementation.)
161
+ //
162
+ // Caller must delete *dbptr when it is no longer needed.
148
163
  static Status Open(const Options& options, const std::string& name,
149
164
  DB** dbptr);
150
165
 
151
- // Open the database for read only. All DB interfaces
152
- // that modify data, like put/delete, will return error.
153
- // If the db is opened in read only mode, then no compactions
154
- // will happen.
166
+ // Open DB with column families.
167
+ // db_options specify database specific options
168
+ // column_families is the vector of all column families in the database,
169
+ // containing column family name and options. You need to open ALL column
170
+ // families in the database. To get the list of column families, you can use
171
+ // ListColumnFamilies().
172
+ //
173
+ // The default column family name is 'default' and it's stored
174
+ // in ROCKSDB_NAMESPACE::kDefaultColumnFamilyName.
175
+ // If everything is OK, handles will on return be the same size
176
+ // as column_families --- handles[i] will be a handle that you
177
+ // will use to operate on column family column_family[i].
178
+ // Before delete DB, you have to close All column families by calling
179
+ // DestroyColumnFamilyHandle() with all the handles.
180
+ static Status Open(const DBOptions& db_options, const std::string& name,
181
+ const std::vector<ColumnFamilyDescriptor>& column_families,
182
+ std::vector<ColumnFamilyHandle*>* handles, DB** dbptr);
183
+
184
+ // OpenForReadOnly() creates a Read-only instance that supports reads alone.
185
+ //
186
+ // All DB interfaces that modify data, like put/delete, will return error.
187
+ // Automatic Flush and Compactions are disabled and any manual calls
188
+ // to Flush/Compaction will return error.
189
+ //
190
+ // While a given DB can be simultaneously opened via OpenForReadOnly
191
+ // by any number of readers, if a DB is simultaneously opened by Open
192
+ // and OpenForReadOnly, the read-only instance has undefined behavior
193
+ // (though can often succeed if quickly closed) and the read-write
194
+ // instance is unaffected. See also OpenAsSecondary.
195
+
196
+ // Open the database for read only.
155
197
  //
156
198
  // Not supported in ROCKSDB_LITE, in which case the function will
157
199
  // return Status::NotSupported.
@@ -159,11 +201,12 @@ class DB {
159
201
  DB** dbptr,
160
202
  bool error_if_wal_file_exists = false);
161
203
 
162
- // Open the database for read only with column families. When opening DB with
163
- // read only, you can specify only a subset of column families in the
164
- // database that should be opened. However, you always need to specify default
165
- // column family. The default column family name is 'default' and it's stored
166
- // in ROCKSDB_NAMESPACE::kDefaultColumnFamilyName
204
+ // Open the database for read only with column families.
205
+ //
206
+ // When opening DB with read only, you can specify only a subset of column
207
+ // families in the database that should be opened. However, you always need
208
+ // to specify default column family. The default column family name is
209
+ // 'default' and it's stored in ROCKSDB_NAMESPACE::kDefaultColumnFamilyName
167
210
  //
168
211
  // Not supported in ROCKSDB_LITE, in which case the function will
169
212
  // return Status::NotSupported.
@@ -173,71 +216,100 @@ class DB {
173
216
  std::vector<ColumnFamilyHandle*>* handles, DB** dbptr,
174
217
  bool error_if_wal_file_exists = false);
175
218
 
176
- // The following OpenAsSecondary functions create a secondary instance that
177
- // can dynamically tail the MANIFEST of a primary that must have already been
178
- // created. User can call TryCatchUpWithPrimary to make the secondary
179
- // instance catch up with primary (WAL tailing is NOT supported now) whenever
180
- // the user feels necessary. Column families created by the primary after the
181
- // secondary instance starts are currently ignored by the secondary instance.
182
- // Column families opened by secondary and dropped by the primary will be
183
- // dropped by secondary as well. However the user of the secondary instance
184
- // can still access the data of such dropped column family as long as they
185
- // do not destroy the corresponding column family handle.
186
- // WAL tailing is not supported at present, but will arrive soon.
219
+ // OpenAsSecondary() creates a secondary instance that supports read-only
220
+ // operations and supports dynamic catch up with the primary (through a
221
+ // call to TryCatchUpWithPrimary()).
222
+ //
223
+ // All DB interfaces that modify data, like put/delete, will return error.
224
+ // Automatic Flush and Compactions are disabled and any manual calls
225
+ // to Flush/Compaction will return error.
226
+ //
227
+ // Multiple secondary instances can co-exist at the same time.
228
+ //
229
+
230
+ // Open DB as secondary instance
187
231
  //
188
232
  // The options argument specifies the options to open the secondary instance.
233
+ // Options.max_open_files should be set to -1.
189
234
  // The name argument specifies the name of the primary db that you have used
190
235
  // to open the primary instance.
191
236
  // The secondary_path argument points to a directory where the secondary
192
237
  // instance stores its info log.
193
238
  // The dbptr is an out-arg corresponding to the opened secondary instance.
194
- // The pointer points to a heap-allocated database, and the user should
239
+ // The pointer points to a heap-allocated database, and the caller should
195
240
  // delete it after use.
196
- // Open DB as secondary instance with only the default column family.
241
+ //
197
242
  // Return OK on success, non-OK on failures.
198
243
  static Status OpenAsSecondary(const Options& options, const std::string& name,
199
244
  const std::string& secondary_path, DB** dbptr);
200
245
 
201
- // Open DB as secondary instance with column families. You can open a subset
202
- // of column families in secondary mode.
203
- // The db_options specify the database specific options.
246
+ // Open DB as secondary instance with specified column families
247
+ //
248
+ // When opening DB in secondary mode, you can specify only a subset of column
249
+ // families in the database that should be opened. However, you always need
250
+ // to specify default column family. The default column family name is
251
+ // 'default' and it's stored in ROCKSDB_NAMESPACE::kDefaultColumnFamilyName
252
+ //
253
+ // Column families created by the primary after the secondary instance starts
254
+ // are currently ignored by the secondary instance. Column families opened
255
+ // by secondary and dropped by the primary will be dropped by secondary as
256
+ // well (on next invocation of TryCatchUpWithPrimary()). However the user
257
+ // of the secondary instance can still access the data of such dropped column
258
+ // family as long as they do not destroy the corresponding column family
259
+ // handle.
260
+ //
261
+ // The options argument specifies the options to open the secondary instance.
262
+ // Options.max_open_files should be set to -1.
204
263
  // The name argument specifies the name of the primary db that you have used
205
264
  // to open the primary instance.
206
265
  // The secondary_path argument points to a directory where the secondary
207
266
  // instance stores its info log.
208
- // The column_families argument specifieds a list of column families to open.
209
- // If any of the column families does not exist, the function returns non-OK
210
- // status.
267
+ // The column_families argument specifies a list of column families to open.
268
+ // If default column family is not specified or if any specified column
269
+ // families does not exist, the function returns non-OK status.
211
270
  // The handles is an out-arg corresponding to the opened database column
212
- // familiy handles.
271
+ // family handles.
213
272
  // The dbptr is an out-arg corresponding to the opened secondary instance.
214
273
  // The pointer points to a heap-allocated database, and the caller should
215
274
  // delete it after use. Before deleting the dbptr, the user should also
216
275
  // delete the pointers stored in handles vector.
217
- // Return OK on success, on-OK on failures.
276
+ //
277
+ // Return OK on success, non-OK on failures.
218
278
  static Status OpenAsSecondary(
219
279
  const DBOptions& db_options, const std::string& name,
220
280
  const std::string& secondary_path,
221
281
  const std::vector<ColumnFamilyDescriptor>& column_families,
222
282
  std::vector<ColumnFamilyHandle*>* handles, DB** dbptr);
223
283
 
224
- // Open DB with column families.
225
- // db_options specify database specific options
226
- // column_families is the vector of all column families in the database,
227
- // containing column family name and options. You need to open ALL column
228
- // families in the database. To get the list of column families, you can use
229
- // ListColumnFamilies(). Also, you can open only a subset of column families
230
- // for read-only access.
231
- // The default column family name is 'default' and it's stored
232
- // in ROCKSDB_NAMESPACE::kDefaultColumnFamilyName.
233
- // If everything is OK, handles will on return be the same size
234
- // as column_families --- handles[i] will be a handle that you
235
- // will use to operate on column family column_family[i].
236
- // Before delete DB, you have to close All column families by calling
237
- // DestroyColumnFamilyHandle() with all the handles.
238
- static Status Open(const DBOptions& db_options, const std::string& name,
239
- const std::vector<ColumnFamilyDescriptor>& column_families,
240
- std::vector<ColumnFamilyHandle*>* handles, DB** dbptr);
284
+
285
+ // Open DB and run the compaction.
286
+ // It's a read-only operation, the result won't be installed to the DB, it
287
+ // will be output to the `output_directory`. The API should only be used with
288
+ // `options.CompactionService` to run compaction triggered by
289
+ // `CompactionService`.
290
+ static Status OpenAndCompact(
291
+ const std::string& name, const std::string& output_directory,
292
+ const std::string& input, std::string* output,
293
+ const CompactionServiceOptionsOverride& override_options);
294
+
295
+ static Status OpenAndCompact(
296
+ const OpenAndCompactOptions& options, const std::string& name,
297
+ const std::string& output_directory, const std::string& input,
298
+ std::string* output,
299
+ const CompactionServiceOptionsOverride& override_options);
300
+
301
+ // Experimental and subject to change
302
+ // Open DB and trim data newer than specified timestamp.
303
+ // The trim_ts specified the user-defined timestamp trim bound.
304
+ // This API should only be used at timestamp enabled column families recovery.
305
+ // If some input column families do not support timestamp, nothing will
306
+ // be happened to them. The data with timestamp > trim_ts
307
+ // will be removed after this API returns successfully.
308
+ static Status OpenAndTrimHistory(
309
+ const DBOptions& db_options, const std::string& dbname,
310
+ const std::vector<ColumnFamilyDescriptor>& column_families,
311
+ std::vector<ColumnFamilyHandle*>* handles, DB** dbptr,
312
+ std::string trim_ts);
241
313
 
242
314
  virtual Status Resume() { return Status::NotSupported(); }
243
315
 
@@ -250,9 +322,9 @@ class DB {
250
322
  // If the return status is Aborted(), closing fails because there is
251
323
  // unreleased snapshot in the system. In this case, users can release
252
324
  // the unreleased snapshots and try again and expect it to succeed. For
253
- // other status, recalling Close() will be no-op.
254
- // If the return status is NotSupported(), then the DB implementation does
255
- // cleanup in the destructor
325
+ // other status, re-calling Close() will be no-op and return the original
326
+ // close status. If the return status is NotSupported(), then the DB
327
+ // implementation does cleanup in the destructor
256
328
  virtual Status Close() { return Status::NotSupported(); }
257
329
 
258
330
  // ListColumnFamilies will open the DB specified by argument name
@@ -308,10 +380,11 @@ class DB {
308
380
  virtual Status DropColumnFamilies(
309
381
  const std::vector<ColumnFamilyHandle*>& column_families);
310
382
 
311
- // Close a column family specified by column_family handle and destroy
312
- // the column family handle specified to avoid double deletion. This call
313
- // deletes the column family handle by default. Use this method to
314
- // close column family instead of deleting column family handle directly
383
+ // Release and deallocate a column family handle. A column family is only
384
+ // removed once it is dropped (DropColumnFamily) and all handles have been
385
+ // destroyed (DestroyColumnFamilyHandle). Use this method to destroy
386
+ // column family handles (except for DefaultColumnFamily()!) before closing
387
+ // a DB.
315
388
  virtual Status DestroyColumnFamilyHandle(ColumnFamilyHandle* column_family);
316
389
 
317
390
  // Set the database entry for "key" to "value".
@@ -321,10 +394,17 @@ class DB {
321
394
  virtual Status Put(const WriteOptions& options,
322
395
  ColumnFamilyHandle* column_family, const Slice& key,
323
396
  const Slice& value) = 0;
397
+ virtual Status Put(const WriteOptions& options,
398
+ ColumnFamilyHandle* column_family, const Slice& key,
399
+ const Slice& ts, const Slice& value) = 0;
324
400
  virtual Status Put(const WriteOptions& options, const Slice& key,
325
401
  const Slice& value) {
326
402
  return Put(options, DefaultColumnFamily(), key, value);
327
403
  }
404
+ virtual Status Put(const WriteOptions& options, const Slice& key,
405
+ const Slice& ts, const Slice& value) {
406
+ return Put(options, DefaultColumnFamily(), key, ts, value);
407
+ }
328
408
 
329
409
  // Remove the database entry (if any) for "key". Returns OK on
330
410
  // success, and a non-OK status on error. It is not an error if "key"
@@ -333,9 +413,16 @@ class DB {
333
413
  virtual Status Delete(const WriteOptions& options,
334
414
  ColumnFamilyHandle* column_family,
335
415
  const Slice& key) = 0;
416
+ virtual Status Delete(const WriteOptions& options,
417
+ ColumnFamilyHandle* column_family, const Slice& key,
418
+ const Slice& ts) = 0;
336
419
  virtual Status Delete(const WriteOptions& options, const Slice& key) {
337
420
  return Delete(options, DefaultColumnFamily(), key);
338
421
  }
422
+ virtual Status Delete(const WriteOptions& options, const Slice& key,
423
+ const Slice& ts) {
424
+ return Delete(options, DefaultColumnFamily(), key, ts);
425
+ }
339
426
 
340
427
  // Remove the database entry for "key". Requires that the key exists
341
428
  // and was not overwritten. Returns OK on success, and a non-OK status
@@ -356,9 +443,16 @@ class DB {
356
443
  virtual Status SingleDelete(const WriteOptions& options,
357
444
  ColumnFamilyHandle* column_family,
358
445
  const Slice& key) = 0;
446
+ virtual Status SingleDelete(const WriteOptions& options,
447
+ ColumnFamilyHandle* column_family,
448
+ const Slice& key, const Slice& ts) = 0;
359
449
  virtual Status SingleDelete(const WriteOptions& options, const Slice& key) {
360
450
  return SingleDelete(options, DefaultColumnFamily(), key);
361
451
  }
452
+ virtual Status SingleDelete(const WriteOptions& options, const Slice& key,
453
+ const Slice& ts) {
454
+ return SingleDelete(options, DefaultColumnFamily(), key, ts);
455
+ }
362
456
 
363
457
  // Removes the database entries in the range ["begin_key", "end_key"), i.e.,
364
458
  // including "begin_key" and excluding "end_key". Returns OK on success, and
@@ -377,6 +471,13 @@ class DB {
377
471
  virtual Status DeleteRange(const WriteOptions& options,
378
472
  ColumnFamilyHandle* column_family,
379
473
  const Slice& begin_key, const Slice& end_key);
474
+ virtual Status DeleteRange(const WriteOptions& /*options*/,
475
+ ColumnFamilyHandle* /*column_family*/,
476
+ const Slice& /*begin_key*/,
477
+ const Slice& /*end_key*/, const Slice& /*ts*/) {
478
+ return Status::NotSupported(
479
+ "DeleteRange does not support user-defined timestamp yet");
480
+ }
380
481
 
381
482
  // Merge the database entry for "key" with "value". Returns OK on success,
382
483
  // and a non-OK status on error. The semantics of this operation is
@@ -389,6 +490,13 @@ class DB {
389
490
  const Slice& value) {
390
491
  return Merge(options, DefaultColumnFamily(), key, value);
391
492
  }
493
+ virtual Status Merge(const WriteOptions& /*options*/,
494
+ ColumnFamilyHandle* /*column_family*/,
495
+ const Slice& /*key*/, const Slice& /*ts*/,
496
+ const Slice& /*value*/) {
497
+ return Status::NotSupported(
498
+ "Merge does not support user-defined timestamp yet");
499
+ }
392
500
 
393
501
  // Apply the specified updates to the database.
394
502
  // If `updates` contains no update, WAL will still be synced if
@@ -453,16 +561,20 @@ class DB {
453
561
  return Get(options, DefaultColumnFamily(), key, value, timestamp);
454
562
  }
455
563
 
456
- // Returns all the merge operands corresponding to the key. If the
457
- // number of merge operands in DB is greater than
458
- // merge_operands_options.expected_max_number_of_operands
459
- // no merge operands are returned and status is Incomplete. Merge operands
460
- // returned are in the order of insertion.
461
- // merge_operands- Points to an array of at-least
564
+ // Populates the `merge_operands` array with all the merge operands in the DB
565
+ // for `key`. The `merge_operands` array will be populated in the order of
566
+ // insertion. The number of entries populated in `merge_operands` will be
567
+ // assigned to `*number_of_operands`.
568
+ //
569
+ // If the number of merge operands in DB for `key` is greater than
570
+ // `merge_operands_options.expected_max_number_of_operands`,
571
+ // `merge_operands` is not populated and the return value is
572
+ // `Status::Incomplete`. In that case, `*number_of_operands` will be assigned
573
+ // the number of merge operands found in the DB for `key`.
574
+ //
575
+ // `merge_operands`- Points to an array of at-least
462
576
  // merge_operands_options.expected_max_number_of_operands and the
463
- // caller is responsible for allocating it. If the status
464
- // returned is Incomplete then number_of_operands will contain
465
- // the total number of merge operands found in DB for key.
577
+ // caller is responsible for allocating it.
466
578
  virtual Status GetMergeOperands(
467
579
  const ReadOptions& options, ColumnFamilyHandle* column_family,
468
580
  const Slice& key, PinnableSlice* merge_operands,
@@ -705,7 +817,7 @@ class DB {
705
817
  // snapshot is no longer needed.
706
818
  //
707
819
  // nullptr will be returned if the DB fails to take a snapshot or does
708
- // not support snapshot.
820
+ // not support snapshot (eg: inplace_update_support enabled).
709
821
  virtual const Snapshot* GetSnapshot() = 0;
710
822
 
711
823
  // Release a previously acquired snapshot. The caller must not
@@ -745,7 +857,7 @@ class DB {
745
857
  static const std::string kCFStats;
746
858
 
747
859
  // "rocksdb.cfstats-no-file-histogram" - returns a multi-line string with
748
- // general columm family stats per-level over db's lifetime ("L<n>"),
860
+ // general column family stats per-level over db's lifetime ("L<n>"),
749
861
  // aggregated over db's lifetime ("Sum"), and aggregated over the
750
862
  // interval since the last retrieval ("Int").
751
863
  static const std::string kCFStatsNoFileHistogram;
@@ -754,15 +866,23 @@ class DB {
754
866
  // level, as well as the histogram of latency of single requests.
755
867
  static const std::string kCFFileHistogram;
756
868
 
757
- // "rocksdb.dbstats" - returns a multi-line string with general database
758
- // stats, both cumulative (over the db's lifetime) and interval (since
759
- // the last retrieval of kDBStats).
869
+ // "rocksdb.dbstats" - As a string property, returns a multi-line string
870
+ // with general database stats, both cumulative (over the db's
871
+ // lifetime) and interval (since the last retrieval of kDBStats).
872
+ // As a map property, returns cumulative stats only and does not
873
+ // update the baseline for the interval stats.
760
874
  static const std::string kDBStats;
761
875
 
762
876
  // "rocksdb.levelstats" - returns multi-line string containing the number
763
877
  // of files per level and total size of each level (MB).
764
878
  static const std::string kLevelStats;
765
879
 
880
+ // "rocksdb.block-cache-entry-stats" - returns a multi-line string or
881
+ // map with statistics on block cache usage. See
882
+ // `BlockCacheEntryStatsMapKeys` for structured representation of keys
883
+ // available in the map form.
884
+ static const std::string kBlockCacheEntryStats;
885
+
766
886
  // "rocksdb.num-immutable-mem-table" - returns number of immutable
767
887
  // memtables that have not yet been flushed.
768
888
  static const std::string kNumImmutableMemTable;
@@ -830,6 +950,8 @@ class DB {
830
950
 
831
951
  // "rocksdb.is-file-deletions-enabled" - returns 0 if deletion of obsolete
832
952
  // files is enabled; otherwise, returns a non-zero number.
953
+ // This name may be misleading because true(non-zero) means disable,
954
+ // but we keep the name for backward compatibility.
833
955
  static const std::string kIsFileDeletionsEnabled;
834
956
 
835
957
  // "rocksdb.num-snapshots" - returns number of unreleased snapshots of the
@@ -857,7 +979,8 @@ class DB {
857
979
  static const std::string kCurrentSuperVersionNumber;
858
980
 
859
981
  // "rocksdb.estimate-live-data-size" - returns an estimate of the amount of
860
- // live data in bytes.
982
+ // live data in bytes. For BlobDB, it also includes the exact value of
983
+ // live bytes in the blob files of the version.
861
984
  static const std::string kEstimateLiveDataSize;
862
985
 
863
986
  // "rocksdb.min-log-number-to-keep" - return the minimum log number of the
@@ -878,6 +1001,10 @@ class DB {
878
1001
  // files belong to the latest LSM tree.
879
1002
  static const std::string kLiveSstFilesSize;
880
1003
 
1004
+ // "rocksdb.live_sst_files_size_at_temperature" - returns total size (bytes)
1005
+ // of SST files at all certain file temperature
1006
+ static const std::string kLiveSstFilesSizeAtTemperature;
1007
+
881
1008
  // "rocksdb.base-level" - returns number of level to which L0 data will be
882
1009
  // compacted.
883
1010
  static const std::string kBaseLevel;
@@ -926,6 +1053,27 @@ class DB {
926
1053
  // "rocksdb.options-statistics" - returns multi-line string
927
1054
  // of options.statistics
928
1055
  static const std::string kOptionsStatistics;
1056
+
1057
+ // "rocksdb.num-blob-files" - returns number of blob files in the current
1058
+ // version.
1059
+ static const std::string kNumBlobFiles;
1060
+
1061
+ // "rocksdb.blob-stats" - return the total number and size of all blob
1062
+ // files, and total amount of garbage (bytes) in the blob files in
1063
+ // the current version.
1064
+ static const std::string kBlobStats;
1065
+
1066
+ // "rocksdb.total-blob-file-size" - returns the total size of all blob
1067
+ // files over all versions.
1068
+ static const std::string kTotalBlobFileSize;
1069
+
1070
+ // "rocksdb.live-blob-file-size" - returns the total size of all blob
1071
+ // files in the current version.
1072
+ static const std::string kLiveBlobFileSize;
1073
+
1074
+ // "rocksdb.live-blob-file-garbage-size" - returns the total amount of
1075
+ // garbage in the blob files in the current version.
1076
+ static const std::string kLiveBlobFileGarbageSize;
929
1077
  };
930
1078
  #endif /* ROCKSDB_LITE */
931
1079
 
@@ -986,6 +1134,11 @@ class DB {
986
1134
  // "rocksdb.block-cache-capacity"
987
1135
  // "rocksdb.block-cache-usage"
988
1136
  // "rocksdb.block-cache-pinned-usage"
1137
+ //
1138
+ // Properties dedicated for BlobDB:
1139
+ // "rocksdb.num-blob-files"
1140
+ // "rocksdb.total-blob-file-size"
1141
+ // "rocksdb.live-blob-file-size"
989
1142
  virtual bool GetIntProperty(ColumnFamilyHandle* column_family,
990
1143
  const Slice& property, uint64_t* value) = 0;
991
1144
  virtual bool GetIntProperty(const Slice& property, uint64_t* value) {
@@ -1006,7 +1159,7 @@ class DB {
1006
1159
 
1007
1160
  // Flags for DB::GetSizeApproximation that specify whether memtable
1008
1161
  // stats should be included, or file stats approximation or both
1009
- enum SizeApproximationFlags : uint8_t {
1162
+ enum class SizeApproximationFlags : uint8_t {
1010
1163
  NONE = 0,
1011
1164
  INCLUDE_MEMTABLES = 1 << 0,
1012
1165
  INCLUDE_FILES = 1 << 1
@@ -1025,22 +1178,18 @@ class DB {
1025
1178
  uint64_t* sizes) = 0;
1026
1179
 
1027
1180
  // Simpler versions of the GetApproximateSizes() method above.
1028
- // The include_flags argumenbt must of type DB::SizeApproximationFlags
1181
+ // The include_flags argument must of type DB::SizeApproximationFlags
1029
1182
  // and can not be NONE.
1030
1183
  virtual Status GetApproximateSizes(ColumnFamilyHandle* column_family,
1031
1184
  const Range* ranges, int n,
1032
1185
  uint64_t* sizes,
1033
- uint8_t include_flags = INCLUDE_FILES) {
1034
- SizeApproximationOptions options;
1035
- options.include_memtabtles =
1036
- (include_flags & SizeApproximationFlags::INCLUDE_MEMTABLES) != 0;
1037
- options.include_files =
1038
- (include_flags & SizeApproximationFlags::INCLUDE_FILES) != 0;
1039
- return GetApproximateSizes(options, column_family, ranges, n, sizes);
1040
- }
1041
- virtual Status GetApproximateSizes(const Range* ranges, int n,
1042
- uint64_t* sizes,
1043
- uint8_t include_flags = INCLUDE_FILES) {
1186
+ SizeApproximationFlags include_flags =
1187
+ SizeApproximationFlags::INCLUDE_FILES);
1188
+
1189
+ virtual Status GetApproximateSizes(
1190
+ const Range* ranges, int n, uint64_t* sizes,
1191
+ SizeApproximationFlags include_flags =
1192
+ SizeApproximationFlags::INCLUDE_FILES) {
1044
1193
  return GetApproximateSizes(DefaultColumnFamily(), ranges, n, sizes,
1045
1194
  include_flags);
1046
1195
  }
@@ -1057,31 +1206,14 @@ class DB {
1057
1206
  GetApproximateMemTableStats(DefaultColumnFamily(), range, count, size);
1058
1207
  }
1059
1208
 
1060
- // Deprecated versions of GetApproximateSizes
1061
- ROCKSDB_DEPRECATED_FUNC virtual void GetApproximateSizes(
1062
- const Range* range, int n, uint64_t* sizes, bool include_memtable) {
1063
- uint8_t include_flags = SizeApproximationFlags::INCLUDE_FILES;
1064
- if (include_memtable) {
1065
- include_flags |= SizeApproximationFlags::INCLUDE_MEMTABLES;
1066
- }
1067
- GetApproximateSizes(DefaultColumnFamily(), range, n, sizes, include_flags);
1068
- }
1069
- ROCKSDB_DEPRECATED_FUNC virtual void GetApproximateSizes(
1070
- ColumnFamilyHandle* column_family, const Range* range, int n,
1071
- uint64_t* sizes, bool include_memtable) {
1072
- uint8_t include_flags = SizeApproximationFlags::INCLUDE_FILES;
1073
- if (include_memtable) {
1074
- include_flags |= SizeApproximationFlags::INCLUDE_MEMTABLES;
1075
- }
1076
- GetApproximateSizes(column_family, range, n, sizes, include_flags);
1077
- }
1078
-
1079
1209
  // Compact the underlying storage for the key range [*begin,*end].
1080
1210
  // The actual compaction interval might be superset of [*begin, *end].
1081
1211
  // In particular, deleted and overwritten versions are discarded,
1082
1212
  // and the data is rearranged to reduce the cost of operations
1083
1213
  // needed to access the data. This operation should typically only
1084
1214
  // be invoked by users who understand the underlying implementation.
1215
+ // This call blocks until the operation completes successfully, fails,
1216
+ // or is aborted (Status::Incomplete). See DisableManualCompaction.
1085
1217
  //
1086
1218
  // begin==nullptr is treated as a key before all keys in the database.
1087
1219
  // end==nullptr is treated as a key after all keys in the database.
@@ -1101,44 +1233,51 @@ class DB {
1101
1233
  return CompactRange(options, DefaultColumnFamily(), begin, end);
1102
1234
  }
1103
1235
 
1104
- ROCKSDB_DEPRECATED_FUNC virtual Status CompactRange(
1105
- ColumnFamilyHandle* column_family, const Slice* begin, const Slice* end,
1106
- bool change_level = false, int target_level = -1,
1107
- uint32_t target_path_id = 0) {
1108
- CompactRangeOptions options;
1109
- options.change_level = change_level;
1110
- options.target_level = target_level;
1111
- options.target_path_id = target_path_id;
1112
- return CompactRange(options, column_family, begin, end);
1113
- }
1114
-
1115
- ROCKSDB_DEPRECATED_FUNC virtual Status CompactRange(
1116
- const Slice* begin, const Slice* end, bool change_level = false,
1117
- int target_level = -1, uint32_t target_path_id = 0) {
1118
- CompactRangeOptions options;
1119
- options.change_level = change_level;
1120
- options.target_level = target_level;
1121
- options.target_path_id = target_path_id;
1122
- return CompactRange(options, DefaultColumnFamily(), begin, end);
1123
- }
1124
-
1236
+ // Dynamically change column family options or table factory options in a
1237
+ // running DB, for the specified column family. Only options internally
1238
+ // marked as "mutable" can be changed. Options not listed in `opts_map` will
1239
+ // keep their current values. See GetColumnFamilyOptionsFromMap() in
1240
+ // convenience.h for the details of `opts_map`. Not supported in LITE mode.
1241
+ //
1242
+ // USABILITY NOTE: SetOptions is intended only for expert users, and does
1243
+ // not apply the same sanitization to options as the standard DB::Open code
1244
+ // path does. Use with caution.
1245
+ //
1246
+ // RELIABILITY & PERFORMANCE NOTE: SetOptions is not fully stress-tested for
1247
+ // reliability, and this is a slow call because a new OPTIONS file is
1248
+ // serialized and persisted for each call. Use only infrequently.
1249
+ //
1250
+ // EXAMPLES:
1251
+ // s = db->SetOptions(cfh, {{"ttl", "36000"}});
1252
+ // s = db->SetOptions(cfh, {{"block_based_table_factory",
1253
+ // "{prepopulate_block_cache=kDisable;}"}});
1125
1254
  virtual Status SetOptions(
1126
1255
  ColumnFamilyHandle* /*column_family*/,
1127
- const std::unordered_map<std::string, std::string>& /*new_options*/) {
1256
+ const std::unordered_map<std::string, std::string>& /*opts_map*/) {
1128
1257
  return Status::NotSupported("Not implemented");
1129
1258
  }
1259
+ // Shortcut for SetOptions on the default column family handle.
1130
1260
  virtual Status SetOptions(
1131
1261
  const std::unordered_map<std::string, std::string>& new_options) {
1132
1262
  return SetOptions(DefaultColumnFamily(), new_options);
1133
1263
  }
1134
1264
 
1265
+ // Like SetOptions but for DBOptions, including the same caveats for
1266
+ // usability, reliability, and performance. See GetDBOptionsFromMap() (and
1267
+ // GetColumnFamilyOptionsFromMap()) in convenience.h for details on
1268
+ // `opts_map`. Note supported in LITE mode.
1269
+ //
1270
+ // EXAMPLES:
1271
+ // s = db->SetDBOptions({{"max_subcompactions", "2"}});
1272
+ // s = db->SetDBOptions({{"stats_dump_period_sec", "0"},
1273
+ // {"stats_persist_period_sec", "0"}});
1135
1274
  virtual Status SetDBOptions(
1136
1275
  const std::unordered_map<std::string, std::string>& new_options) = 0;
1137
1276
 
1138
1277
  // CompactFiles() inputs a list of files specified by file numbers and
1139
- // compacts them to the specified level. Note that the behavior is different
1140
- // from CompactRange() in that CompactFiles() performs the compaction job
1141
- // using the CURRENT thread.
1278
+ // compacts them to the specified level. A small difference compared to
1279
+ // CompactRange() is that CompactFiles() performs the compaction job
1280
+ // using the CURRENT thread, so is not considered a "background" job.
1142
1281
  //
1143
1282
  // @see GetDataBaseMetaData
1144
1283
  // @see GetColumnFamilyMetaData
@@ -1180,7 +1319,16 @@ class DB {
1180
1319
  virtual Status EnableAutoCompaction(
1181
1320
  const std::vector<ColumnFamilyHandle*>& column_family_handles) = 0;
1182
1321
 
1322
+ // After this function call, CompactRange() or CompactFiles() will not
1323
+ // run compactions and fail. Calling this function will tell outstanding
1324
+ // manual compactions to abort and will wait for them to finish or abort
1325
+ // before returning.
1183
1326
  virtual void DisableManualCompaction() = 0;
1327
+ // Re-enable CompactRange() and ComapctFiles() that are disabled by
1328
+ // DisableManualCompaction(). This function must be called as many times
1329
+ // as DisableManualCompaction() has been called in order to re-enable
1330
+ // manual compactions, and must not be called more times than
1331
+ // DisableManualCompaction() has been called.
1184
1332
  virtual void EnableManualCompaction() = 0;
1185
1333
 
1186
1334
  // Number of levels used for this DB.
@@ -1207,6 +1355,8 @@ class DB {
1207
1355
  // Get Env object from the DB
1208
1356
  virtual Env* GetEnv() const = 0;
1209
1357
 
1358
+ // A shortcut for GetEnv()->->GetFileSystem().get(), possibly cached for
1359
+ // efficiency.
1210
1360
  virtual FileSystem* GetFileSystem() const;
1211
1361
 
1212
1362
  // Get DB Options that we use. During the process of opening the
@@ -1264,19 +1414,20 @@ class DB {
1264
1414
  // The sequence number of the most recent transaction.
1265
1415
  virtual SequenceNumber GetLatestSequenceNumber() const = 0;
1266
1416
 
1267
- // Instructs DB to preserve deletes with sequence numbers >= passed seqnum.
1268
- // Has no effect if DBOptions.preserve_deletes is set to false.
1269
- // This function assumes that user calls this function with monotonically
1270
- // increasing seqnums (otherwise we can't guarantee that a particular delete
1271
- // hasn't been already processed); returns true if the value was successfully
1272
- // updated, false if user attempted to call if with seqnum <= current value.
1273
- virtual bool SetPreserveDeletesSequenceNumber(SequenceNumber seqnum) = 0;
1274
-
1275
1417
  // Prevent file deletions. Compactions will continue to occur,
1276
1418
  // but no obsolete files will be deleted. Calling this multiple
1277
1419
  // times have the same effect as calling it once.
1278
1420
  virtual Status DisableFileDeletions() = 0;
1279
1421
 
1422
+ // Increase the full_history_ts of column family. The new ts_low value should
1423
+ // be newer than current full_history_ts value.
1424
+ virtual Status IncreaseFullHistoryTsLow(ColumnFamilyHandle* column_family,
1425
+ std::string ts_low) = 0;
1426
+
1427
+ // Get current full_history_ts value.
1428
+ virtual Status GetFullHistoryTsLow(ColumnFamilyHandle* column_family,
1429
+ std::string* ts_low) = 0;
1430
+
1280
1431
  // Allow compactions to delete obsolete files.
1281
1432
  // If force == true, the call to EnableFileDeletions() will guarantee that
1282
1433
  // file deletions are enabled after the call, even if DisableFileDeletions()
@@ -1335,9 +1486,12 @@ class DB {
1335
1486
  virtual Status GetCreationTimeOfOldestFile(uint64_t* creation_time) = 0;
1336
1487
 
1337
1488
  // Note: this API is not yet consistent with WritePrepared transactions.
1338
- // Sets iter to an iterator that is positioned at a write-batch containing
1339
- // seq_number. If the sequence number is non existent, it returns an iterator
1340
- // at the first available seq_no after the requested seq_no
1489
+ //
1490
+ // Sets iter to an iterator that is positioned at a write-batch whose
1491
+ // sequence number range [start_seq, end_seq] covers seq_number. If no such
1492
+ // write-batch exists, then iter is positioned at the next write-batch whose
1493
+ // start_seq > seq_number.
1494
+ //
1341
1495
  // Returns Status::OK if iterator is valid
1342
1496
  // Must set WAL_ttl_seconds or WAL_size_limit_MB to large values to
1343
1497
  // use this api, else the WAL files will get
@@ -1368,11 +1522,20 @@ class DB {
1368
1522
  virtual void GetLiveFilesMetaData(
1369
1523
  std::vector<LiveFileMetaData>* /*metadata*/) {}
1370
1524
 
1371
- // Return a list of all table file checksum info.
1525
+ // Return a list of all table and blob files checksum info.
1372
1526
  // Note: This function might be of limited use because it cannot be
1373
1527
  // synchronized with GetLiveFiles.
1374
1528
  virtual Status GetLiveFilesChecksumInfo(FileChecksumList* checksum_list) = 0;
1375
1529
 
1530
+ // EXPERIMENTAL: This function is not yet feature-complete.
1531
+ // Get information about all live files that make up a DB, for making
1532
+ // live copies (Checkpoint, backups, etc.) or other storage-related purposes.
1533
+ // Use DisableFileDeletions() before and EnableFileDeletions() after to
1534
+ // preserve the files for live copy.
1535
+ virtual Status GetLiveFilesStorageInfo(
1536
+ const LiveFilesStorageInfoOptions& opts,
1537
+ std::vector<LiveFileStorageInfo>* files) = 0;
1538
+
1376
1539
  // Obtains the meta data of the specified column family of the DB.
1377
1540
  virtual void GetColumnFamilyMetaData(ColumnFamilyHandle* /*column_family*/,
1378
1541
  ColumnFamilyMetaData* /*metadata*/) {}
@@ -1382,6 +1545,12 @@ class DB {
1382
1545
  GetColumnFamilyMetaData(DefaultColumnFamily(), metadata);
1383
1546
  }
1384
1547
 
1548
+ // Obtains the meta data of all column families for the DB.
1549
+ // The returned map contains one entry for each column family indexed by the
1550
+ // name of the column family.
1551
+ virtual void GetAllColumnFamilyMetaData(
1552
+ std::vector<ColumnFamilyMetaData>* /*metadata*/) {}
1553
+
1385
1554
  // IngestExternalFile() will load a list of external SST files (1) into the DB
1386
1555
  // Two primary modes are supported:
1387
1556
  // - Duplicate keys in the new files will overwrite exiting keys (default)
@@ -1399,6 +1568,11 @@ class DB {
1399
1568
  // (3) If IngestExternalFileOptions->ingest_behind is set to true,
1400
1569
  // we always ingest at the bottommost level, which should be reserved
1401
1570
  // for this purpose (see DBOPtions::allow_ingest_behind flag).
1571
+ // (4) If IngestExternalFileOptions->fail_if_not_bottommost_level is set to
1572
+ // true, then this method can return Status:TryAgain() indicating that
1573
+ // the files cannot be ingested to the bottommost level, and it is the
1574
+ // user's responsibility to clear the bottommost level in the overlapping
1575
+ // range before re-attempting the ingestion.
1402
1576
  virtual Status IngestExternalFile(
1403
1577
  ColumnFamilyHandle* column_family,
1404
1578
  const std::vector<std::string>& external_files,
@@ -1433,13 +1607,14 @@ class DB {
1433
1607
  // this column family.
1434
1608
  // (1) External SST files can be created using SstFileWriter.
1435
1609
  // (2) External SST files can be exported from a particular column family in
1436
- // an existing DB.
1610
+ // an existing DB using Checkpoint::ExportColumnFamily.
1437
1611
  // Option in import_options specifies whether the external files are copied or
1438
1612
  // moved (default is copy). When option specifies copy, managing files at
1439
1613
  // external_file_path is caller's responsibility. When option specifies a
1440
- // move, the call ensures that the specified files at external_file_path are
1441
- // deleted on successful return and files are not modified on any error
1442
- // return.
1614
+ // move, the call makes a best effort to delete the specified files at
1615
+ // external_file_path on successful return, logging any failure to delete
1616
+ // rather than returning in Status. Files are not modified on any error
1617
+ // return, and a best effort is made to remove any newly-created files.
1443
1618
  // On error return, column family handle returned will be nullptr.
1444
1619
  // ColumnFamily will be present on successful return and will not be present
1445
1620
  // on error return. ColumnFamily may be present on any crash during this call.
@@ -1461,108 +1636,6 @@ class DB {
1461
1636
 
1462
1637
  virtual Status VerifyChecksum() { return VerifyChecksum(ReadOptions()); }
1463
1638
 
1464
- // AddFile() is deprecated, please use IngestExternalFile()
1465
- ROCKSDB_DEPRECATED_FUNC virtual Status AddFile(
1466
- ColumnFamilyHandle* column_family,
1467
- const std::vector<std::string>& file_path_list, bool move_file = false,
1468
- bool skip_snapshot_check = false) {
1469
- IngestExternalFileOptions ifo;
1470
- ifo.move_files = move_file;
1471
- ifo.snapshot_consistency = !skip_snapshot_check;
1472
- ifo.allow_global_seqno = false;
1473
- ifo.allow_blocking_flush = false;
1474
- return IngestExternalFile(column_family, file_path_list, ifo);
1475
- }
1476
-
1477
- ROCKSDB_DEPRECATED_FUNC virtual Status AddFile(
1478
- const std::vector<std::string>& file_path_list, bool move_file = false,
1479
- bool skip_snapshot_check = false) {
1480
- IngestExternalFileOptions ifo;
1481
- ifo.move_files = move_file;
1482
- ifo.snapshot_consistency = !skip_snapshot_check;
1483
- ifo.allow_global_seqno = false;
1484
- ifo.allow_blocking_flush = false;
1485
- return IngestExternalFile(DefaultColumnFamily(), file_path_list, ifo);
1486
- }
1487
-
1488
- // AddFile() is deprecated, please use IngestExternalFile()
1489
- ROCKSDB_DEPRECATED_FUNC virtual Status AddFile(
1490
- ColumnFamilyHandle* column_family, const std::string& file_path,
1491
- bool move_file = false, bool skip_snapshot_check = false) {
1492
- IngestExternalFileOptions ifo;
1493
- ifo.move_files = move_file;
1494
- ifo.snapshot_consistency = !skip_snapshot_check;
1495
- ifo.allow_global_seqno = false;
1496
- ifo.allow_blocking_flush = false;
1497
- return IngestExternalFile(column_family, {file_path}, ifo);
1498
- }
1499
-
1500
- ROCKSDB_DEPRECATED_FUNC virtual Status AddFile(
1501
- const std::string& file_path, bool move_file = false,
1502
- bool skip_snapshot_check = false) {
1503
- IngestExternalFileOptions ifo;
1504
- ifo.move_files = move_file;
1505
- ifo.snapshot_consistency = !skip_snapshot_check;
1506
- ifo.allow_global_seqno = false;
1507
- ifo.allow_blocking_flush = false;
1508
- return IngestExternalFile(DefaultColumnFamily(), {file_path}, ifo);
1509
- }
1510
-
1511
- // Load table file with information "file_info" into "column_family"
1512
- ROCKSDB_DEPRECATED_FUNC virtual Status AddFile(
1513
- ColumnFamilyHandle* column_family,
1514
- const std::vector<ExternalSstFileInfo>& file_info_list,
1515
- bool move_file = false, bool skip_snapshot_check = false) {
1516
- std::vector<std::string> external_files;
1517
- for (const ExternalSstFileInfo& file_info : file_info_list) {
1518
- external_files.push_back(file_info.file_path);
1519
- }
1520
- IngestExternalFileOptions ifo;
1521
- ifo.move_files = move_file;
1522
- ifo.snapshot_consistency = !skip_snapshot_check;
1523
- ifo.allow_global_seqno = false;
1524
- ifo.allow_blocking_flush = false;
1525
- return IngestExternalFile(column_family, external_files, ifo);
1526
- }
1527
-
1528
- ROCKSDB_DEPRECATED_FUNC virtual Status AddFile(
1529
- const std::vector<ExternalSstFileInfo>& file_info_list,
1530
- bool move_file = false, bool skip_snapshot_check = false) {
1531
- std::vector<std::string> external_files;
1532
- for (const ExternalSstFileInfo& file_info : file_info_list) {
1533
- external_files.push_back(file_info.file_path);
1534
- }
1535
- IngestExternalFileOptions ifo;
1536
- ifo.move_files = move_file;
1537
- ifo.snapshot_consistency = !skip_snapshot_check;
1538
- ifo.allow_global_seqno = false;
1539
- ifo.allow_blocking_flush = false;
1540
- return IngestExternalFile(DefaultColumnFamily(), external_files, ifo);
1541
- }
1542
-
1543
- ROCKSDB_DEPRECATED_FUNC virtual Status AddFile(
1544
- ColumnFamilyHandle* column_family, const ExternalSstFileInfo* file_info,
1545
- bool move_file = false, bool skip_snapshot_check = false) {
1546
- IngestExternalFileOptions ifo;
1547
- ifo.move_files = move_file;
1548
- ifo.snapshot_consistency = !skip_snapshot_check;
1549
- ifo.allow_global_seqno = false;
1550
- ifo.allow_blocking_flush = false;
1551
- return IngestExternalFile(column_family, {file_info->file_path}, ifo);
1552
- }
1553
-
1554
- ROCKSDB_DEPRECATED_FUNC virtual Status AddFile(
1555
- const ExternalSstFileInfo* file_info, bool move_file = false,
1556
- bool skip_snapshot_check = false) {
1557
- IngestExternalFileOptions ifo;
1558
- ifo.move_files = move_file;
1559
- ifo.snapshot_consistency = !skip_snapshot_check;
1560
- ifo.allow_global_seqno = false;
1561
- ifo.allow_blocking_flush = false;
1562
- return IngestExternalFile(DefaultColumnFamily(), {file_info->file_path},
1563
- ifo);
1564
- }
1565
-
1566
1639
  #endif // ROCKSDB_LITE
1567
1640
 
1568
1641
  // Returns the unique ID which is read from IDENTITY file during the opening
@@ -1581,6 +1654,7 @@ class DB {
1581
1654
  virtual ColumnFamilyHandle* DefaultColumnFamily() const = 0;
1582
1655
 
1583
1656
  #ifndef ROCKSDB_LITE
1657
+
1584
1658
  virtual Status GetPropertiesOfAllTables(ColumnFamilyHandle* column_family,
1585
1659
  TablePropertiesCollection* props) = 0;
1586
1660
  virtual Status GetPropertiesOfAllTables(TablePropertiesCollection* props) {
@@ -1612,7 +1686,7 @@ class DB {
1612
1686
  }
1613
1687
 
1614
1688
  // IO Tracing operations. Use EndIOTrace() to stop tracing.
1615
- virtual Status StartIOTrace(Env* /*env*/, const TraceOptions& /*options*/,
1689
+ virtual Status StartIOTrace(const TraceOptions& /*options*/,
1616
1690
  std::unique_ptr<TraceWriter>&& /*trace_writer*/) {
1617
1691
  return Status::NotSupported("StartIOTrace() is not implemented.");
1618
1692
  }
@@ -1631,6 +1705,15 @@ class DB {
1631
1705
  virtual Status EndBlockCacheTrace() {
1632
1706
  return Status::NotSupported("EndBlockCacheTrace() is not implemented.");
1633
1707
  }
1708
+
1709
+ // Create a default trace replayer.
1710
+ virtual Status NewDefaultReplayer(
1711
+ const std::vector<ColumnFamilyHandle*>& /*handles*/,
1712
+ std::unique_ptr<TraceReader>&& /*reader*/,
1713
+ std::unique_ptr<Replayer>* /*replayer*/) {
1714
+ return Status::NotSupported("NewDefaultReplayer() is not implemented.");
1715
+ }
1716
+
1634
1717
  #endif // ROCKSDB_LITE
1635
1718
 
1636
1719
  // Needed for StackableDB
@@ -1656,13 +1739,38 @@ class DB {
1656
1739
  // secondary instance does not delete the corresponding column family
1657
1740
  // handles, the data of the column family is still accessible to the
1658
1741
  // secondary.
1659
- // TODO: we will support WAL tailing soon.
1660
1742
  virtual Status TryCatchUpWithPrimary() {
1661
1743
  return Status::NotSupported("Supported only by secondary instance");
1662
1744
  }
1663
1745
  #endif // !ROCKSDB_LITE
1664
1746
  };
1665
1747
 
1748
+ // Overloaded operators for enum class SizeApproximationFlags.
1749
+ inline DB::SizeApproximationFlags operator&(DB::SizeApproximationFlags lhs,
1750
+ DB::SizeApproximationFlags rhs) {
1751
+ return static_cast<DB::SizeApproximationFlags>(static_cast<uint8_t>(lhs) &
1752
+ static_cast<uint8_t>(rhs));
1753
+ }
1754
+ inline DB::SizeApproximationFlags operator|(DB::SizeApproximationFlags lhs,
1755
+ DB::SizeApproximationFlags rhs) {
1756
+ return static_cast<DB::SizeApproximationFlags>(static_cast<uint8_t>(lhs) |
1757
+ static_cast<uint8_t>(rhs));
1758
+ }
1759
+
1760
+ inline Status DB::GetApproximateSizes(ColumnFamilyHandle* column_family,
1761
+ const Range* ranges, int n,
1762
+ uint64_t* sizes,
1763
+ SizeApproximationFlags include_flags) {
1764
+ SizeApproximationOptions options;
1765
+ options.include_memtables =
1766
+ ((include_flags & SizeApproximationFlags::INCLUDE_MEMTABLES) !=
1767
+ SizeApproximationFlags::NONE);
1768
+ options.include_files =
1769
+ ((include_flags & SizeApproximationFlags::INCLUDE_FILES) !=
1770
+ SizeApproximationFlags::NONE);
1771
+ return GetApproximateSizes(options, column_family, ranges, n, sizes);
1772
+ }
1773
+
1666
1774
  // Destroy the contents of the specified database.
1667
1775
  // Be very careful using this method.
1668
1776
  Status DestroyDB(const std::string& name, const Options& options,