@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
  #include <limits>
11
11
  #include <string>
12
12
 
13
+ #include "logging/logging.h"
13
14
  #include "options/configurable_helper.h"
14
15
  #include "options/db_options.h"
15
16
  #include "options/options_helper.h"
16
17
  #include "options/options_parser.h"
17
18
  #include "port/port.h"
19
+ #include "rocksdb/compaction_filter.h"
18
20
  #include "rocksdb/concurrent_task_limiter.h"
19
21
  #include "rocksdb/configurable.h"
20
22
  #include "rocksdb/convenience.h"
@@ -27,107 +29,96 @@
27
29
  #include "rocksdb/utilities/options_type.h"
28
30
  #include "util/cast_util.h"
29
31
 
32
+ // NOTE: in this file, many option flags that were deprecated
33
+ // and removed from the rest of the code have to be kept here
34
+ // and marked as kDeprecated in order to be able to read old
35
+ // OPTIONS files.
36
+
30
37
  namespace ROCKSDB_NAMESPACE {
31
- // offset_of is used to get the offset of a class data member
32
- // ex: offset_of(&ColumnFamilyOptions::num_levels)
33
- // This call will return the offset of num_levels in ColumnFamilyOptions class
34
- //
35
- // This is the same as offsetof() but allow us to work with non standard-layout
36
- // classes and structures
37
- // refs:
38
- // http://en.cppreference.com/w/cpp/concept/StandardLayoutType
39
- // https://gist.github.com/graphitemaster/494f21190bb2c63c5516
40
- #ifndef ROCKSDB_LITE
41
- static ColumnFamilyOptions dummy_cf_options;
42
- template <typename T1>
43
- int offset_of(T1 ColumnFamilyOptions::*member) {
44
- return int(size_t(&(dummy_cf_options.*member)) - size_t(&dummy_cf_options));
45
- }
46
- template <typename T1>
47
- int offset_of(T1 AdvancedColumnFamilyOptions::*member) {
48
- return int(size_t(&(dummy_cf_options.*member)) - size_t(&dummy_cf_options));
49
- }
50
38
 
39
+ #ifndef ROCKSDB_LITE
51
40
  static Status ParseCompressionOptions(const std::string& value,
52
41
  const std::string& name,
53
42
  CompressionOptions& compression_opts) {
54
- size_t start = 0;
55
- size_t end = value.find(':');
56
- if (end == std::string::npos) {
43
+ const char kDelimiter = ':';
44
+ std::istringstream field_stream(value);
45
+ std::string field;
46
+
47
+ if (!std::getline(field_stream, field, kDelimiter)) {
57
48
  return Status::InvalidArgument("unable to parse the specified CF option " +
58
49
  name);
59
50
  }
60
- compression_opts.window_bits = ParseInt(value.substr(start, end - start));
61
- start = end + 1;
62
- end = value.find(':', start);
63
- if (end == std::string::npos) {
51
+ compression_opts.window_bits = ParseInt(field);
52
+
53
+ if (!std::getline(field_stream, field, kDelimiter)) {
64
54
  return Status::InvalidArgument("unable to parse the specified CF option " +
65
55
  name);
66
56
  }
67
- compression_opts.level = ParseInt(value.substr(start, end - start));
68
- start = end + 1;
69
- if (start >= value.size()) {
57
+ compression_opts.level = ParseInt(field);
58
+
59
+ if (!std::getline(field_stream, field, kDelimiter)) {
70
60
  return Status::InvalidArgument("unable to parse the specified CF option " +
71
61
  name);
72
62
  }
73
- end = value.find(':', start);
74
- compression_opts.strategy =
75
- ParseInt(value.substr(start, value.size() - start));
63
+ compression_opts.strategy = ParseInt(field);
64
+
76
65
  // max_dict_bytes is optional for backwards compatibility
77
- if (end != std::string::npos) {
78
- start = end + 1;
79
- if (start >= value.size()) {
66
+ if (!field_stream.eof()) {
67
+ if (!std::getline(field_stream, field, kDelimiter)) {
80
68
  return Status::InvalidArgument(
81
69
  "unable to parse the specified CF option " + name);
82
70
  }
83
- compression_opts.max_dict_bytes =
84
- ParseInt(value.substr(start, value.size() - start));
85
- end = value.find(':', start);
71
+ compression_opts.max_dict_bytes = ParseInt(field);
86
72
  }
73
+
87
74
  // zstd_max_train_bytes is optional for backwards compatibility
88
- if (end != std::string::npos) {
89
- start = end + 1;
90
- if (start >= value.size()) {
75
+ if (!field_stream.eof()) {
76
+ if (!std::getline(field_stream, field, kDelimiter)) {
91
77
  return Status::InvalidArgument(
92
78
  "unable to parse the specified CF option " + name);
93
79
  }
94
- compression_opts.zstd_max_train_bytes =
95
- ParseInt(value.substr(start, value.size() - start));
96
- end = value.find(':', start);
80
+ compression_opts.zstd_max_train_bytes = ParseInt(field);
97
81
  }
98
82
 
99
83
  // parallel_threads is optional for backwards compatibility
100
- if (end != std::string::npos) {
101
- start = end + 1;
102
- if (start >= value.size()) {
84
+ if (!field_stream.eof()) {
85
+ if (!std::getline(field_stream, field, kDelimiter)) {
103
86
  return Status::InvalidArgument(
104
87
  "unable to parse the specified CF option " + name);
105
88
  }
106
89
  // Since parallel_threads comes before enabled but was added optionally
107
90
  // later, we need to check if this is the final token (meaning it is the
108
- // enabled bit), or if there is another token (meaning this one is
109
- // parallel_threads)
110
- end = value.find(':', start);
111
- if (end != std::string::npos) {
112
- compression_opts.parallel_threads =
113
- ParseInt(value.substr(start, value.size() - start));
91
+ // enabled bit), or if there are more tokens (meaning this one is
92
+ // parallel_threads).
93
+ if (!field_stream.eof()) {
94
+ compression_opts.parallel_threads = ParseInt(field);
114
95
  } else {
115
96
  // parallel_threads is not serialized with this format, but enabled is
116
- compression_opts.parallel_threads = CompressionOptions().parallel_threads;
117
- compression_opts.enabled =
118
- ParseBoolean("", value.substr(start, value.size() - start));
97
+ compression_opts.enabled = ParseBoolean("", field);
119
98
  }
120
99
  }
121
100
 
122
101
  // enabled is optional for backwards compatibility
123
- if (end != std::string::npos) {
124
- start = end + 1;
125
- if (start >= value.size()) {
102
+ if (!field_stream.eof()) {
103
+ if (!std::getline(field_stream, field, kDelimiter)) {
126
104
  return Status::InvalidArgument(
127
105
  "unable to parse the specified CF option " + name);
128
106
  }
129
- compression_opts.enabled =
130
- ParseBoolean("", value.substr(start, value.size() - start));
107
+ compression_opts.enabled = ParseBoolean("", field);
108
+ }
109
+
110
+ // max_dict_buffer_bytes is optional for backwards compatibility
111
+ if (!field_stream.eof()) {
112
+ if (!std::getline(field_stream, field, kDelimiter)) {
113
+ return Status::InvalidArgument(
114
+ "unable to parse the specified CF option " + name);
115
+ }
116
+ compression_opts.max_dict_buffer_bytes = ParseUint64(field);
117
+ }
118
+
119
+ if (!field_stream.eof()) {
120
+ return Status::InvalidArgument("unable to parse the specified CF option " +
121
+ name);
131
122
  }
132
123
  return Status::OK();
133
124
  }
@@ -161,6 +152,10 @@ static std::unordered_map<std::string, OptionTypeInfo>
161
152
  {"enabled",
162
153
  {offsetof(struct CompressionOptions, enabled), OptionType::kBoolean,
163
154
  OptionVerificationType::kNormal, OptionTypeFlags::kMutable}},
155
+ {"max_dict_buffer_bytes",
156
+ {offsetof(struct CompressionOptions, max_dict_buffer_bytes),
157
+ OptionType::kUInt64T, OptionVerificationType::kNormal,
158
+ OptionTypeFlags::kMutable}},
164
159
  };
165
160
 
166
161
  static std::unordered_map<std::string, OptionTypeInfo>
@@ -169,6 +164,10 @@ static std::unordered_map<std::string, OptionTypeInfo>
169
164
  {offsetof(struct CompactionOptionsFIFO, max_table_files_size),
170
165
  OptionType::kUInt64T, OptionVerificationType::kNormal,
171
166
  OptionTypeFlags::kMutable}},
167
+ {"age_for_warm",
168
+ {offsetof(struct CompactionOptionsFIFO, age_for_warm),
169
+ OptionType::kUInt64T, OptionVerificationType::kNormal,
170
+ OptionTypeFlags::kMutable}},
172
171
  {"ttl",
173
172
  {0, OptionType::kUInt64T, OptionVerificationType::kDeprecated,
174
173
  OptionTypeFlags::kNone}},
@@ -205,6 +204,10 @@ static std::unordered_map<std::string, OptionTypeInfo>
205
204
  {offsetof(class CompactionOptionsUniversal, stop_style),
206
205
  OptionType::kCompactionStopStyle, OptionVerificationType::kNormal,
207
206
  OptionTypeFlags::kMutable}},
207
+ {"incremental",
208
+ {offsetof(class CompactionOptionsUniversal, incremental),
209
+ OptionType::kBoolean, OptionVerificationType::kNormal,
210
+ OptionTypeFlags::kMutable}},
208
211
  {"allow_trivial_move",
209
212
  {offsetof(class CompactionOptionsUniversal, allow_trivial_move),
210
213
  OptionType::kBoolean, OptionVerificationType::kNormal,
@@ -353,16 +356,17 @@ static std::unordered_map<std::string, OptionTypeInfo>
353
356
  OptionType::kCompressionType, OptionVerificationType::kNormal,
354
357
  OptionTypeFlags::kMutable}},
355
358
  {"prefix_extractor",
356
- {offsetof(struct MutableCFOptions, prefix_extractor),
357
- OptionType::kSliceTransform, OptionVerificationType::kByNameAllowNull,
358
- OptionTypeFlags::kMutable}},
359
+ OptionTypeInfo::AsCustomSharedPtr<const SliceTransform>(
360
+ offsetof(struct MutableCFOptions, prefix_extractor),
361
+ OptionVerificationType::kByNameAllowNull,
362
+ (OptionTypeFlags::kMutable | OptionTypeFlags::kAllowNull))},
359
363
  {"compaction_options_fifo",
360
364
  OptionTypeInfo::Struct(
361
365
  "compaction_options_fifo", &fifo_compaction_options_type_info,
362
366
  offsetof(struct MutableCFOptions, compaction_options_fifo),
363
367
  OptionVerificationType::kNormal, OptionTypeFlags::kMutable,
364
368
  [](const ConfigOptions& opts, const std::string& name,
365
- const std::string& value, char* addr) {
369
+ const std::string& value, void* addr) {
366
370
  // This is to handle backward compatibility, where
367
371
  // compaction_options_fifo could be assigned a single scalar
368
372
  // value, say, like "23", which would be assigned to
@@ -370,7 +374,7 @@ static std::unordered_map<std::string, OptionTypeInfo>
370
374
  if (name == "compaction_options_fifo" &&
371
375
  value.find("=") == std::string::npos) {
372
376
  // Old format. Parse just a single uint64_t value.
373
- auto options = reinterpret_cast<CompactionOptionsFIFO*>(addr);
377
+ auto options = static_cast<CompactionOptionsFIFO*>(addr);
374
378
  options->max_table_files_size = ParseUint64(value);
375
379
  return Status::OK();
376
380
  } else {
@@ -392,6 +396,10 @@ static std::unordered_map<std::string, OptionTypeInfo>
392
396
  {offsetof(struct MutableCFOptions, periodic_compaction_seconds),
393
397
  OptionType::kUInt64T, OptionVerificationType::kNormal,
394
398
  OptionTypeFlags::kMutable}},
399
+ {"bottommost_temperature",
400
+ {offsetof(struct MutableCFOptions, bottommost_temperature),
401
+ OptionType::kTemperature, OptionVerificationType::kNormal,
402
+ OptionTypeFlags::kMutable}},
395
403
  {"enable_blob_files",
396
404
  {offsetof(struct MutableCFOptions, enable_blob_files),
397
405
  OptionType::kBoolean, OptionVerificationType::kNormal,
@@ -416,6 +424,15 @@ static std::unordered_map<std::string, OptionTypeInfo>
416
424
  {offsetof(struct MutableCFOptions, blob_garbage_collection_age_cutoff),
417
425
  OptionType::kDouble, OptionVerificationType::kNormal,
418
426
  OptionTypeFlags::kMutable}},
427
+ {"blob_garbage_collection_force_threshold",
428
+ {offsetof(struct MutableCFOptions,
429
+ blob_garbage_collection_force_threshold),
430
+ OptionType::kDouble, OptionVerificationType::kNormal,
431
+ OptionTypeFlags::kMutable}},
432
+ {"blob_compaction_readahead_size",
433
+ {offsetof(struct MutableCFOptions, blob_compaction_readahead_size),
434
+ OptionType::kUInt64T, OptionVerificationType::kNormal,
435
+ OptionTypeFlags::kMutable}},
419
436
  {"sample_for_compression",
420
437
  {offsetof(struct MutableCFOptions, sample_for_compression),
421
438
  OptionType::kUInt64T, OptionVerificationType::kNormal,
@@ -424,6 +441,11 @@ static std::unordered_map<std::string, OptionTypeInfo>
424
441
  {offsetof(struct MutableCFOptions, bottommost_compression),
425
442
  OptionType::kCompressionType, OptionVerificationType::kNormal,
426
443
  OptionTypeFlags::kMutable}},
444
+ {"compression_per_level",
445
+ OptionTypeInfo::Vector<CompressionType>(
446
+ offsetof(struct MutableCFOptions, compression_per_level),
447
+ OptionVerificationType::kNormal, OptionTypeFlags::kMutable,
448
+ {0, OptionType::kCompressionType})},
427
449
  {kOptNameCompOpts,
428
450
  OptionTypeInfo::Struct(
429
451
  kOptNameCompOpts, &compression_options_type_info,
@@ -431,13 +453,12 @@ static std::unordered_map<std::string, OptionTypeInfo>
431
453
  OptionVerificationType::kNormal,
432
454
  (OptionTypeFlags::kMutable | OptionTypeFlags::kCompareNever),
433
455
  [](const ConfigOptions& opts, const std::string& name,
434
- const std::string& value, char* addr) {
456
+ const std::string& value, void* addr) {
435
457
  // This is to handle backward compatibility, where
436
458
  // compression_options was a ":" separated list.
437
459
  if (name == kOptNameCompOpts &&
438
460
  value.find("=") == std::string::npos) {
439
- auto* compression =
440
- reinterpret_cast<CompressionOptions*>(addr);
461
+ auto* compression = static_cast<CompressionOptions*>(addr);
441
462
  return ParseCompressionOptions(value, name, *compression);
442
463
  } else {
443
464
  return OptionTypeInfo::ParseStruct(
@@ -452,13 +473,12 @@ static std::unordered_map<std::string, OptionTypeInfo>
452
473
  OptionVerificationType::kNormal,
453
474
  (OptionTypeFlags::kMutable | OptionTypeFlags::kCompareNever),
454
475
  [](const ConfigOptions& opts, const std::string& name,
455
- const std::string& value, char* addr) {
476
+ const std::string& value, void* addr) {
456
477
  // This is to handle backward compatibility, where
457
478
  // compression_options was a ":" separated list.
458
479
  if (name == kOptNameBMCompOpts &&
459
480
  value.find("=") == std::string::npos) {
460
- auto* compression =
461
- reinterpret_cast<CompressionOptions*>(addr);
481
+ auto* compression = static_cast<CompressionOptions*>(addr);
462
482
  return ParseCompressionOptions(value, name, *compression);
463
483
  } else {
464
484
  return OptionTypeInfo::ParseStruct(
@@ -474,8 +494,8 @@ static std::unordered_map<std::string, OptionTypeInfo>
474
494
  /* not yet supported
475
495
  CompressionOptions compression_opts;
476
496
  TablePropertiesCollectorFactories table_properties_collector_factories;
477
- typedef std::vector<std::shared_ptr<TablePropertiesCollectorFactory>>
478
- TablePropertiesCollectorFactories;
497
+ using TablePropertiesCollectorFactories =
498
+ std::vector<std::shared_ptr<TablePropertiesCollectorFactory>>;
479
499
  UpdateStatus (*inplace_callback)(char* existing_value,
480
500
  uint34_t* existing_value_size,
481
501
  Slice delta_value,
@@ -485,112 +505,135 @@ static std::unordered_map<std::string, OptionTypeInfo>
485
505
  {"compaction_measure_io_stats",
486
506
  {0, OptionType::kBoolean, OptionVerificationType::kDeprecated,
487
507
  OptionTypeFlags::kNone}},
508
+ {"purge_redundant_kvs_while_flush",
509
+ {0, OptionType::kBoolean, OptionVerificationType::kDeprecated,
510
+ OptionTypeFlags::kNone}},
488
511
  {"inplace_update_support",
489
- {offset_of(&ColumnFamilyOptions::inplace_update_support),
512
+ {offsetof(struct ImmutableCFOptions, inplace_update_support),
490
513
  OptionType::kBoolean, OptionVerificationType::kNormal,
491
514
  OptionTypeFlags::kNone}},
492
515
  {"level_compaction_dynamic_level_bytes",
493
- {offset_of(&ColumnFamilyOptions::level_compaction_dynamic_level_bytes),
516
+ {offsetof(struct ImmutableCFOptions,
517
+ level_compaction_dynamic_level_bytes),
494
518
  OptionType::kBoolean, OptionVerificationType::kNormal,
495
519
  OptionTypeFlags::kNone}},
496
520
  {"optimize_filters_for_hits",
497
- {offset_of(&ColumnFamilyOptions::optimize_filters_for_hits),
521
+ {offsetof(struct ImmutableCFOptions, optimize_filters_for_hits),
498
522
  OptionType::kBoolean, OptionVerificationType::kNormal,
499
523
  OptionTypeFlags::kNone}},
500
524
  {"force_consistency_checks",
501
- {offset_of(&ColumnFamilyOptions::force_consistency_checks),
525
+ {offsetof(struct ImmutableCFOptions, force_consistency_checks),
502
526
  OptionType::kBoolean, OptionVerificationType::kNormal,
503
527
  OptionTypeFlags::kNone}},
504
- {"purge_redundant_kvs_while_flush",
505
- {offset_of(&ColumnFamilyOptions::purge_redundant_kvs_while_flush),
506
- OptionType::kBoolean, OptionVerificationType::kDeprecated,
507
- OptionTypeFlags::kNone}},
528
+ // Need to keep this around to be able to read old OPTIONS files.
508
529
  {"max_mem_compaction_level",
509
530
  {0, OptionType::kInt, OptionVerificationType::kDeprecated,
510
531
  OptionTypeFlags::kNone}},
511
532
  {"max_write_buffer_number_to_maintain",
512
- {offset_of(&ColumnFamilyOptions::max_write_buffer_number_to_maintain),
533
+ {offsetof(struct ImmutableCFOptions,
534
+ max_write_buffer_number_to_maintain),
513
535
  OptionType::kInt, OptionVerificationType::kNormal,
514
536
  OptionTypeFlags::kNone, 0}},
515
537
  {"max_write_buffer_size_to_maintain",
516
- {offset_of(&ColumnFamilyOptions::max_write_buffer_size_to_maintain),
538
+ {offsetof(struct ImmutableCFOptions,
539
+ max_write_buffer_size_to_maintain),
517
540
  OptionType::kInt64T, OptionVerificationType::kNormal,
518
541
  OptionTypeFlags::kNone}},
519
542
  {"min_write_buffer_number_to_merge",
520
- {offset_of(&ColumnFamilyOptions::min_write_buffer_number_to_merge),
543
+ {offsetof(struct ImmutableCFOptions, min_write_buffer_number_to_merge),
521
544
  OptionType::kInt, OptionVerificationType::kNormal,
522
545
  OptionTypeFlags::kNone, 0}},
523
546
  {"num_levels",
524
- {offset_of(&ColumnFamilyOptions::num_levels), OptionType::kInt,
547
+ {offsetof(struct ImmutableCFOptions, num_levels), OptionType::kInt,
525
548
  OptionVerificationType::kNormal, OptionTypeFlags::kNone}},
526
549
  {"bloom_locality",
527
- {offset_of(&ColumnFamilyOptions::bloom_locality), OptionType::kUInt32T,
528
- OptionVerificationType::kNormal, OptionTypeFlags::kNone}},
550
+ {offsetof(struct ImmutableCFOptions, bloom_locality),
551
+ OptionType::kUInt32T, OptionVerificationType::kNormal,
552
+ OptionTypeFlags::kNone}},
529
553
  {"rate_limit_delay_max_milliseconds",
530
554
  {0, OptionType::kUInt, OptionVerificationType::kDeprecated,
531
555
  OptionTypeFlags::kNone}},
532
- {"compression_per_level",
533
- OptionTypeInfo::Vector<CompressionType>(
534
- offset_of(&ColumnFamilyOptions::compression_per_level),
535
- OptionVerificationType::kNormal, OptionTypeFlags::kNone,
536
- {0, OptionType::kCompressionType})},
537
556
  {"comparator",
538
- {offset_of(&ColumnFamilyOptions::comparator), OptionType::kComparator,
539
- OptionVerificationType::kByName, OptionTypeFlags::kCompareLoose,
540
- // Parses the string and sets the corresponding comparator
541
- [](const ConfigOptions& /*opts*/, const std::string& /*name*/,
542
- const std::string& value, char* addr) {
543
- auto old_comparator = reinterpret_cast<const Comparator**>(addr);
544
- const Comparator* new_comparator = *old_comparator;
545
- Status status = ObjectRegistry::NewInstance()->NewStaticObject(
546
- value, &new_comparator);
547
- if (status.ok()) {
548
- *old_comparator = new_comparator;
549
- return status;
550
- }
551
- return Status::OK();
552
- }}},
557
+ OptionTypeInfo::AsCustomRawPtr<const Comparator>(
558
+ offsetof(struct ImmutableCFOptions, user_comparator),
559
+ OptionVerificationType::kByName, OptionTypeFlags::kCompareLoose,
560
+ // Serializes a Comparator
561
+ [](const ConfigOptions& opts, const std::string&, const void* addr,
562
+ std::string* value) {
563
+ // it's a const pointer of const Comparator*
564
+ const auto* ptr = static_cast<const Comparator* const*>(addr);
565
+
566
+ // Since the user-specified comparator will be wrapped by
567
+ // InternalKeyComparator, we should persist the user-specified
568
+ // one instead of InternalKeyComparator.
569
+ if (*ptr == nullptr) {
570
+ *value = kNullptrString;
571
+ } else if (opts.mutable_options_only) {
572
+ *value = "";
573
+ } else {
574
+ const Comparator* root_comp = (*ptr)->GetRootComparator();
575
+ if (root_comp == nullptr) {
576
+ root_comp = (*ptr);
577
+ }
578
+ *value = root_comp->ToString(opts);
579
+ }
580
+ return Status::OK();
581
+ },
582
+ /* Use the default match function*/ nullptr)},
553
583
  {"memtable_insert_with_hint_prefix_extractor",
554
- {offset_of(
555
- &ColumnFamilyOptions::memtable_insert_with_hint_prefix_extractor),
556
- OptionType::kSliceTransform, OptionVerificationType::kByNameAllowNull,
557
- OptionTypeFlags::kNone}},
584
+ OptionTypeInfo::AsCustomSharedPtr<const SliceTransform>(
585
+ offsetof(struct ImmutableCFOptions,
586
+ memtable_insert_with_hint_prefix_extractor),
587
+ OptionVerificationType::kByNameAllowNull, OptionTypeFlags::kNone)},
558
588
  {"memtable_factory",
559
- {offset_of(&ColumnFamilyOptions::memtable_factory),
560
- OptionType::kMemTableRepFactory, OptionVerificationType::kByName,
561
- OptionTypeFlags::kNone}},
589
+ {offsetof(struct ImmutableCFOptions, memtable_factory),
590
+ OptionType::kCustomizable, OptionVerificationType::kByName,
591
+ OptionTypeFlags::kShared,
592
+ [](const ConfigOptions& opts, const std::string&,
593
+ const std::string& value, void* addr) {
594
+ std::unique_ptr<MemTableRepFactory> factory;
595
+ auto* shared =
596
+ static_cast<std::shared_ptr<MemTableRepFactory>*>(addr);
597
+ Status s =
598
+ MemTableRepFactory::CreateFromString(opts, value, &factory);
599
+ if (factory && s.ok()) {
600
+ shared->reset(factory.release());
601
+ }
602
+ return s;
603
+ }}},
562
604
  {"memtable",
563
- {offset_of(&ColumnFamilyOptions::memtable_factory),
564
- OptionType::kMemTableRepFactory, OptionVerificationType::kAlias,
565
- OptionTypeFlags::kNone,
566
- // Parses the value string and updates the memtable_factory
567
- [](const ConfigOptions& /*opts*/, const std::string& /*name*/,
568
- const std::string& value, char* addr) {
569
- std::unique_ptr<MemTableRepFactory> new_mem_factory;
570
- Status s = GetMemTableRepFactoryFromString(value, &new_mem_factory);
571
- if (s.ok()) {
572
- auto memtable_factory =
573
- reinterpret_cast<std::shared_ptr<MemTableRepFactory>*>(addr);
574
- memtable_factory->reset(new_mem_factory.release());
605
+ {offsetof(struct ImmutableCFOptions, memtable_factory),
606
+ OptionType::kCustomizable, OptionVerificationType::kAlias,
607
+ OptionTypeFlags::kShared,
608
+ [](const ConfigOptions& opts, const std::string&,
609
+ const std::string& value, void* addr) {
610
+ std::unique_ptr<MemTableRepFactory> factory;
611
+ auto* shared =
612
+ static_cast<std::shared_ptr<MemTableRepFactory>*>(addr);
613
+ Status s =
614
+ MemTableRepFactory::CreateFromString(opts, value, &factory);
615
+ if (factory && s.ok()) {
616
+ shared->reset(factory.release());
575
617
  }
576
618
  return s;
577
619
  }}},
578
- {"table_factory", OptionTypeInfo::AsCustomSharedPtr<TableFactory>(
579
- offset_of(&ColumnFamilyOptions::table_factory),
580
- OptionVerificationType::kByName,
581
- (OptionTypeFlags::kCompareLoose |
582
- OptionTypeFlags::kStringNameOnly |
583
- OptionTypeFlags::kDontPrepare))},
620
+ {"table_factory",
621
+ OptionTypeInfo::AsCustomSharedPtr<TableFactory>(
622
+ offsetof(struct ImmutableCFOptions, table_factory),
623
+ OptionVerificationType::kByName,
624
+ (OptionTypeFlags::kCompareLoose |
625
+ OptionTypeFlags::kStringNameOnly |
626
+ OptionTypeFlags::kDontPrepare))},
584
627
  {"block_based_table_factory",
585
- {offset_of(&ColumnFamilyOptions::table_factory),
628
+ {offsetof(struct ImmutableCFOptions, table_factory),
586
629
  OptionType::kCustomizable, OptionVerificationType::kAlias,
587
630
  OptionTypeFlags::kShared | OptionTypeFlags::kCompareLoose,
588
631
  // Parses the input value and creates a BlockBasedTableFactory
589
632
  [](const ConfigOptions& opts, const std::string& name,
590
- const std::string& value, char* addr) {
633
+ const std::string& value, void* addr) {
591
634
  BlockBasedTableOptions* old_opts = nullptr;
592
635
  auto table_factory =
593
- reinterpret_cast<std::shared_ptr<TableFactory>*>(addr);
636
+ static_cast<std::shared_ptr<TableFactory>*>(addr);
594
637
  if (table_factory->get() != nullptr) {
595
638
  old_opts =
596
639
  table_factory->get()->GetOptions<BlockBasedTableOptions>();
@@ -614,15 +657,15 @@ static std::unordered_map<std::string, OptionTypeInfo>
614
657
  }
615
658
  }}},
616
659
  {"plain_table_factory",
617
- {offset_of(&ColumnFamilyOptions::table_factory),
660
+ {offsetof(struct ImmutableCFOptions, table_factory),
618
661
  OptionType::kCustomizable, OptionVerificationType::kAlias,
619
662
  OptionTypeFlags::kShared | OptionTypeFlags::kCompareLoose,
620
663
  // Parses the input value and creates a PlainTableFactory
621
664
  [](const ConfigOptions& opts, const std::string& name,
622
- const std::string& value, char* addr) {
665
+ const std::string& value, void* addr) {
623
666
  PlainTableOptions* old_opts = nullptr;
624
667
  auto table_factory =
625
- reinterpret_cast<std::shared_ptr<TableFactory>*>(addr);
668
+ static_cast<std::shared_ptr<TableFactory>*>(addr);
626
669
  if (table_factory->get() != nullptr) {
627
670
  old_opts = table_factory->get()->GetOptions<PlainTableOptions>();
628
671
  }
@@ -644,50 +687,48 @@ static std::unordered_map<std::string, OptionTypeInfo>
644
687
  return Status::NotFound("Mismatched table option: ", name);
645
688
  }
646
689
  }}},
690
+ {"table_properties_collectors",
691
+ OptionTypeInfo::Vector<
692
+ std::shared_ptr<TablePropertiesCollectorFactory>>(
693
+ offsetof(struct ImmutableCFOptions,
694
+ table_properties_collector_factories),
695
+ OptionVerificationType::kByName, OptionTypeFlags::kNone,
696
+ OptionTypeInfo::AsCustomSharedPtr<TablePropertiesCollectorFactory>(
697
+ 0, OptionVerificationType::kByName, OptionTypeFlags::kNone))},
647
698
  {"compaction_filter",
648
- {offset_of(&ColumnFamilyOptions::compaction_filter),
649
- OptionType::kCompactionFilter, OptionVerificationType::kByName,
650
- OptionTypeFlags::kNone}},
699
+ OptionTypeInfo::AsCustomRawPtr<const CompactionFilter>(
700
+ offsetof(struct ImmutableCFOptions, compaction_filter),
701
+ OptionVerificationType::kByName, OptionTypeFlags::kAllowNull)},
651
702
  {"compaction_filter_factory",
652
- {offset_of(&ColumnFamilyOptions::compaction_filter_factory),
653
- OptionType::kCompactionFilterFactory, OptionVerificationType::kByName,
654
- OptionTypeFlags::kNone}},
703
+ OptionTypeInfo::AsCustomSharedPtr<CompactionFilterFactory>(
704
+ offsetof(struct ImmutableCFOptions, compaction_filter_factory),
705
+ OptionVerificationType::kByName, OptionTypeFlags::kAllowNull)},
655
706
  {"merge_operator",
656
- {offset_of(&ColumnFamilyOptions::merge_operator),
657
- OptionType::kMergeOperator,
658
- OptionVerificationType::kByNameAllowFromNull,
659
- OptionTypeFlags::kCompareLoose,
660
- // Parses the input value as a MergeOperator, updating the value
661
- [](const ConfigOptions& /*opts*/, const std::string& /*name*/,
662
- const std::string& value, char* addr) {
663
- auto mop = reinterpret_cast<std::shared_ptr<MergeOperator>*>(addr);
664
- Status status =
665
- ObjectRegistry::NewInstance()->NewSharedObject<MergeOperator>(
666
- value, mop);
667
- // Only support static comparator for now.
668
- if (status.ok()) {
669
- return status;
670
- }
671
- return Status::OK();
672
- }}},
707
+ OptionTypeInfo::AsCustomSharedPtr<MergeOperator>(
708
+ offsetof(struct ImmutableCFOptions, merge_operator),
709
+ OptionVerificationType::kByNameAllowFromNull,
710
+ OptionTypeFlags::kCompareLoose | OptionTypeFlags::kAllowNull)},
673
711
  {"compaction_style",
674
- {offset_of(&ColumnFamilyOptions::compaction_style),
712
+ {offsetof(struct ImmutableCFOptions, compaction_style),
675
713
  OptionType::kCompactionStyle, OptionVerificationType::kNormal,
676
714
  OptionTypeFlags::kNone}},
677
715
  {"compaction_pri",
678
- {offset_of(&ColumnFamilyOptions::compaction_pri),
716
+ {offsetof(struct ImmutableCFOptions, compaction_pri),
679
717
  OptionType::kCompactionPri, OptionVerificationType::kNormal,
680
718
  OptionTypeFlags::kNone}},
719
+ {"sst_partitioner_factory",
720
+ OptionTypeInfo::AsCustomSharedPtr<SstPartitionerFactory>(
721
+ offsetof(struct ImmutableCFOptions, sst_partitioner_factory),
722
+ OptionVerificationType::kByName, OptionTypeFlags::kAllowNull)},
681
723
  };
682
724
 
683
725
  const std::string OptionsHelper::kCFOptionsName = "ColumnFamilyOptions";
684
726
 
685
727
  class ConfigurableMutableCFOptions : public Configurable {
686
728
  public:
687
- ConfigurableMutableCFOptions(const MutableCFOptions& mcf) {
729
+ explicit ConfigurableMutableCFOptions(const MutableCFOptions& mcf) {
688
730
  mutable_ = mcf;
689
- ConfigurableHelper::RegisterOptions(*this, &mutable_,
690
- &cf_mutable_options_type_info);
731
+ RegisterOptions(&mutable_, &cf_mutable_options_type_info);
691
732
  }
692
733
 
693
734
  protected:
@@ -702,9 +743,7 @@ class ConfigurableCFOptions : public ConfigurableMutableCFOptions {
702
743
  immutable_(opts),
703
744
  cf_options_(opts),
704
745
  opt_map_(map) {
705
- ConfigurableHelper::RegisterOptions(*this, OptionsHelper::kCFOptionsName,
706
- &immutable_,
707
- &cf_immutable_options_type_info);
746
+ RegisterOptions(&immutable_, &cf_immutable_options_type_info);
708
747
  }
709
748
 
710
749
  protected:
@@ -712,10 +751,10 @@ class ConfigurableCFOptions : public ConfigurableMutableCFOptions {
712
751
  const ConfigOptions& config_options,
713
752
  const std::unordered_map<std::string, std::string>& opts_map,
714
753
  std::unordered_map<std::string, std::string>* unused) override {
715
- Status s = ConfigurableHelper::ConfigureOptions(config_options, *this,
716
- opts_map, unused);
754
+ Status s = Configurable::ConfigureOptions(config_options, opts_map, unused);
717
755
  if (s.ok()) {
718
- cf_options_ = BuildColumnFamilyOptions(immutable_, mutable_);
756
+ UpdateColumnFamilyOptions(mutable_, &cf_options_);
757
+ UpdateColumnFamilyOptions(immutable_, &cf_options_);
719
758
  s = PrepareOptions(config_options);
720
759
  }
721
760
  return s;
@@ -769,7 +808,7 @@ class ConfigurableCFOptions : public ConfigurableMutableCFOptions {
769
808
  }
770
809
 
771
810
  private:
772
- ColumnFamilyOptions immutable_;
811
+ ImmutableCFOptions immutable_;
773
812
  ColumnFamilyOptions cf_options_;
774
813
  const std::unordered_map<std::string, std::string>* opt_map_;
775
814
  };
@@ -787,18 +826,16 @@ std::unique_ptr<Configurable> CFOptionsAsConfigurable(
787
826
  }
788
827
  #endif // ROCKSDB_LITE
789
828
 
790
- ImmutableCFOptions::ImmutableCFOptions(const Options& options)
791
- : ImmutableCFOptions(ImmutableDBOptions(options), options) {}
829
+ ImmutableCFOptions::ImmutableCFOptions() : ImmutableCFOptions(Options()) {}
792
830
 
793
- ImmutableCFOptions::ImmutableCFOptions(const ImmutableDBOptions& db_options,
794
- const ColumnFamilyOptions& cf_options)
831
+ ImmutableCFOptions::ImmutableCFOptions(const ColumnFamilyOptions& cf_options)
795
832
  : compaction_style(cf_options.compaction_style),
796
833
  compaction_pri(cf_options.compaction_pri),
797
834
  user_comparator(cf_options.comparator),
798
835
  internal_comparator(InternalKeyComparator(cf_options.comparator)),
799
- merge_operator(cf_options.merge_operator.get()),
836
+ merge_operator(cf_options.merge_operator),
800
837
  compaction_filter(cf_options.compaction_filter),
801
- compaction_filter_factory(cf_options.compaction_filter_factory.get()),
838
+ compaction_filter_factory(cf_options.compaction_filter_factory),
802
839
  min_write_buffer_number_to_merge(
803
840
  cf_options.min_write_buffer_number_to_merge),
804
841
  max_write_buffer_number_to_maintain(
@@ -807,46 +844,42 @@ ImmutableCFOptions::ImmutableCFOptions(const ImmutableDBOptions& db_options,
807
844
  cf_options.max_write_buffer_size_to_maintain),
808
845
  inplace_update_support(cf_options.inplace_update_support),
809
846
  inplace_callback(cf_options.inplace_callback),
810
- info_log(db_options.info_log.get()),
811
- statistics(db_options.statistics.get()),
812
- rate_limiter(db_options.rate_limiter.get()),
813
- info_log_level(db_options.info_log_level),
814
- env(db_options.env),
815
- fs(db_options.fs.get()),
816
- allow_mmap_reads(db_options.allow_mmap_reads),
817
- allow_mmap_writes(db_options.allow_mmap_writes),
818
- db_paths(db_options.db_paths),
819
- memtable_factory(cf_options.memtable_factory.get()),
820
- table_factory(cf_options.table_factory.get()),
847
+ memtable_factory(cf_options.memtable_factory),
848
+ table_factory(cf_options.table_factory),
821
849
  table_properties_collector_factories(
822
850
  cf_options.table_properties_collector_factories),
823
- advise_random_on_open(db_options.advise_random_on_open),
824
851
  bloom_locality(cf_options.bloom_locality),
825
- purge_redundant_kvs_while_flush(
826
- cf_options.purge_redundant_kvs_while_flush),
827
- use_fsync(db_options.use_fsync),
828
- compression_per_level(cf_options.compression_per_level),
829
852
  level_compaction_dynamic_level_bytes(
830
853
  cf_options.level_compaction_dynamic_level_bytes),
831
- access_hint_on_compaction_start(
832
- db_options.access_hint_on_compaction_start),
833
- new_table_reader_for_compaction_inputs(
834
- db_options.new_table_reader_for_compaction_inputs),
835
854
  num_levels(cf_options.num_levels),
836
855
  optimize_filters_for_hits(cf_options.optimize_filters_for_hits),
837
856
  force_consistency_checks(cf_options.force_consistency_checks),
838
- allow_ingest_behind(db_options.allow_ingest_behind),
839
- preserve_deletes(db_options.preserve_deletes),
840
- listeners(db_options.listeners),
841
- row_cache(db_options.row_cache),
842
857
  memtable_insert_with_hint_prefix_extractor(
843
- cf_options.memtable_insert_with_hint_prefix_extractor.get()),
858
+ cf_options.memtable_insert_with_hint_prefix_extractor),
844
859
  cf_paths(cf_options.cf_paths),
845
860
  compaction_thread_limiter(cf_options.compaction_thread_limiter),
846
- file_checksum_gen_factory(db_options.file_checksum_gen_factory.get()),
847
- sst_partitioner_factory(cf_options.sst_partitioner_factory),
848
- allow_data_in_errors(db_options.allow_data_in_errors),
849
- db_host_id(db_options.db_host_id) {}
861
+ sst_partitioner_factory(cf_options.sst_partitioner_factory) {}
862
+
863
+ ImmutableOptions::ImmutableOptions() : ImmutableOptions(Options()) {}
864
+
865
+ ImmutableOptions::ImmutableOptions(const Options& options)
866
+ : ImmutableOptions(options, options) {}
867
+
868
+ ImmutableOptions::ImmutableOptions(const DBOptions& db_options,
869
+ const ColumnFamilyOptions& cf_options)
870
+ : ImmutableDBOptions(db_options), ImmutableCFOptions(cf_options) {}
871
+
872
+ ImmutableOptions::ImmutableOptions(const DBOptions& db_options,
873
+ const ImmutableCFOptions& cf_options)
874
+ : ImmutableDBOptions(db_options), ImmutableCFOptions(cf_options) {}
875
+
876
+ ImmutableOptions::ImmutableOptions(const ImmutableDBOptions& db_options,
877
+ const ColumnFamilyOptions& cf_options)
878
+ : ImmutableDBOptions(db_options), ImmutableCFOptions(cf_options) {}
879
+
880
+ ImmutableOptions::ImmutableOptions(const ImmutableDBOptions& db_options,
881
+ const ImmutableCFOptions& cf_options)
882
+ : ImmutableDBOptions(db_options), ImmutableCFOptions(cf_options) {}
850
883
 
851
884
  // Multiple two operands. If they overflow, return op1.
852
885
  uint64_t MultiplyCheckOverflow(uint64_t op1, double op2) {
@@ -926,9 +959,10 @@ void MutableCFOptions::Dump(Logger* log) const {
926
959
  ROCKS_LOG_INFO(log,
927
960
  " inplace_update_num_locks: %" ROCKSDB_PRIszt,
928
961
  inplace_update_num_locks);
929
- ROCKS_LOG_INFO(
930
- log, " prefix_extractor: %s",
931
- prefix_extractor == nullptr ? "nullptr" : prefix_extractor->Name());
962
+ ROCKS_LOG_INFO(log, " prefix_extractor: %s",
963
+ prefix_extractor == nullptr
964
+ ? "nullptr"
965
+ : prefix_extractor->GetId().c_str());
932
966
  ROCKS_LOG_INFO(log, " disable_auto_compactions: %d",
933
967
  disable_auto_compactions);
934
968
  ROCKS_LOG_INFO(log, " soft_pending_compaction_bytes_limit: %" PRIu64,
@@ -998,6 +1032,8 @@ void MutableCFOptions::Dump(Logger* log) const {
998
1032
  ROCKS_LOG_INFO(
999
1033
  log, "compaction_options_universal.allow_trivial_move : %d",
1000
1034
  static_cast<int>(compaction_options_universal.allow_trivial_move));
1035
+ ROCKS_LOG_INFO(log, "compaction_options_universal.incremental : %d",
1036
+ static_cast<int>(compaction_options_universal.incremental));
1001
1037
 
1002
1038
  // FIFO Compaction Options
1003
1039
  ROCKS_LOG_INFO(log, "compaction_options_fifo.max_table_files_size : %" PRIu64,
@@ -1018,9 +1054,41 @@ void MutableCFOptions::Dump(Logger* log) const {
1018
1054
  enable_blob_garbage_collection ? "true" : "false");
1019
1055
  ROCKS_LOG_INFO(log, " blob_garbage_collection_age_cutoff: %f",
1020
1056
  blob_garbage_collection_age_cutoff);
1057
+ ROCKS_LOG_INFO(log, " blob_garbage_collection_force_threshold: %f",
1058
+ blob_garbage_collection_force_threshold);
1059
+ ROCKS_LOG_INFO(log, " blob_compaction_readahead_size: %" PRIu64,
1060
+ blob_compaction_readahead_size);
1061
+
1062
+ ROCKS_LOG_INFO(log, " bottommost_temperature: %d",
1063
+ static_cast<int>(bottommost_temperature));
1021
1064
  }
1022
1065
 
1023
1066
  MutableCFOptions::MutableCFOptions(const Options& options)
1024
1067
  : MutableCFOptions(ColumnFamilyOptions(options)) {}
1025
1068
 
1069
+ #ifndef ROCKSDB_LITE
1070
+ Status GetMutableOptionsFromStrings(
1071
+ const MutableCFOptions& base_options,
1072
+ const std::unordered_map<std::string, std::string>& options_map,
1073
+ Logger* /*info_log*/, MutableCFOptions* new_options) {
1074
+ assert(new_options);
1075
+ *new_options = base_options;
1076
+ ConfigOptions config_options;
1077
+ Status s = OptionTypeInfo::ParseType(
1078
+ config_options, options_map, cf_mutable_options_type_info, new_options);
1079
+ if (!s.ok()) {
1080
+ *new_options = base_options;
1081
+ }
1082
+ return s;
1083
+ }
1084
+
1085
+ Status GetStringFromMutableCFOptions(const ConfigOptions& config_options,
1086
+ const MutableCFOptions& mutable_opts,
1087
+ std::string* opt_string) {
1088
+ assert(opt_string);
1089
+ opt_string->clear();
1090
+ return OptionTypeInfo::SerializeType(
1091
+ config_options, cf_mutable_options_type_info, &mutable_opts, opt_string);
1092
+ }
1093
+ #endif // ROCKSDB_LITE
1026
1094
  } // namespace ROCKSDB_NAMESPACE