@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
@@ -7,6 +7,7 @@
7
7
  #include <cassert>
8
8
  #include <cctype>
9
9
  #include <cstdlib>
10
+ #include <set>
10
11
  #include <unordered_set>
11
12
  #include <vector>
12
13
 
@@ -28,6 +29,20 @@
28
29
  #include "util/string_util.h"
29
30
 
30
31
  namespace ROCKSDB_NAMESPACE {
32
+ ConfigOptions::ConfigOptions()
33
+ #ifndef ROCKSDB_LITE
34
+ : registry(ObjectRegistry::NewInstance())
35
+ #endif
36
+ {
37
+ env = Env::Default();
38
+ }
39
+
40
+ ConfigOptions::ConfigOptions(const DBOptions& db_opts) : env(db_opts.env) {
41
+ #ifndef ROCKSDB_LITE
42
+ registry = ObjectRegistry::NewInstance();
43
+ #endif
44
+ }
45
+
31
46
  Status ValidateOptions(const DBOptions& db_opts,
32
47
  const ColumnFamilyOptions& cf_opts) {
33
48
  Status s;
@@ -51,6 +66,8 @@ DBOptions BuildDBOptions(const ImmutableDBOptions& immutable_db_options,
51
66
  immutable_db_options.create_missing_column_families;
52
67
  options.error_if_exists = immutable_db_options.error_if_exists;
53
68
  options.paranoid_checks = immutable_db_options.paranoid_checks;
69
+ options.flush_verify_memtable_count =
70
+ immutable_db_options.flush_verify_memtable_count;
54
71
  options.track_and_verify_wals_in_manifest =
55
72
  immutable_db_options.track_and_verify_wals_in_manifest;
56
73
  options.env = immutable_db_options.env;
@@ -70,8 +87,6 @@ DBOptions BuildDBOptions(const ImmutableDBOptions& immutable_db_options,
70
87
  options.delete_obsolete_files_period_micros =
71
88
  mutable_db_options.delete_obsolete_files_period_micros;
72
89
  options.max_background_jobs = mutable_db_options.max_background_jobs;
73
- options.base_background_compactions =
74
- mutable_db_options.base_background_compactions;
75
90
  options.max_background_compactions =
76
91
  mutable_db_options.max_background_compactions;
77
92
  options.bytes_per_sync = mutable_db_options.bytes_per_sync;
@@ -86,8 +101,8 @@ DBOptions BuildDBOptions(const ImmutableDBOptions& immutable_db_options,
86
101
  options.max_manifest_file_size = immutable_db_options.max_manifest_file_size;
87
102
  options.table_cache_numshardbits =
88
103
  immutable_db_options.table_cache_numshardbits;
89
- options.WAL_ttl_seconds = immutable_db_options.wal_ttl_seconds;
90
- options.WAL_size_limit_MB = immutable_db_options.wal_size_limit_mb;
104
+ options.WAL_ttl_seconds = immutable_db_options.WAL_ttl_seconds;
105
+ options.WAL_size_limit_MB = immutable_db_options.WAL_size_limit_MB;
91
106
  options.manifest_preallocation_size =
92
107
  immutable_db_options.manifest_preallocation_size;
93
108
  options.allow_mmap_reads = immutable_db_options.allow_mmap_reads;
@@ -108,8 +123,6 @@ DBOptions BuildDBOptions(const ImmutableDBOptions& immutable_db_options,
108
123
  options.write_buffer_manager = immutable_db_options.write_buffer_manager;
109
124
  options.access_hint_on_compaction_start =
110
125
  immutable_db_options.access_hint_on_compaction_start;
111
- options.new_table_reader_for_compaction_inputs =
112
- immutable_db_options.new_table_reader_for_compaction_inputs;
113
126
  options.compaction_readahead_size =
114
127
  mutable_db_options.compaction_readahead_size;
115
128
  options.random_access_max_buffer_size =
@@ -149,12 +162,10 @@ DBOptions BuildDBOptions(const ImmutableDBOptions& immutable_db_options,
149
162
  immutable_db_options.avoid_flush_during_recovery;
150
163
  options.avoid_flush_during_shutdown =
151
164
  mutable_db_options.avoid_flush_during_shutdown;
152
- options.allow_ingest_behind =
153
- immutable_db_options.allow_ingest_behind;
154
- options.preserve_deletes =
155
- immutable_db_options.preserve_deletes;
165
+ options.allow_ingest_behind = immutable_db_options.allow_ingest_behind;
156
166
  options.two_write_queues = immutable_db_options.two_write_queues;
157
167
  options.manual_wal_flush = immutable_db_options.manual_wal_flush;
168
+ options.wal_compression = immutable_db_options.wal_compression;
158
169
  options.atomic_flush = immutable_db_options.atomic_flush;
159
170
  options.avoid_unnecessary_blocking_io =
160
171
  immutable_db_options.avoid_unnecessary_blocking_io;
@@ -168,6 +179,9 @@ DBOptions BuildDBOptions(const ImmutableDBOptions& immutable_db_options,
168
179
  immutable_db_options.bgerror_resume_retry_interval;
169
180
  options.db_host_id = immutable_db_options.db_host_id;
170
181
  options.allow_data_in_errors = immutable_db_options.allow_data_in_errors;
182
+ options.checksum_handoff_file_types =
183
+ immutable_db_options.checksum_handoff_file_types;
184
+ options.lowest_used_cache_tier = immutable_db_options.lowest_used_cache_tier;
171
185
  return options;
172
186
  }
173
187
 
@@ -175,85 +189,118 @@ ColumnFamilyOptions BuildColumnFamilyOptions(
175
189
  const ColumnFamilyOptions& options,
176
190
  const MutableCFOptions& mutable_cf_options) {
177
191
  ColumnFamilyOptions cf_opts(options);
192
+ UpdateColumnFamilyOptions(mutable_cf_options, &cf_opts);
193
+ // TODO(yhchiang): find some way to handle the following derived options
194
+ // * max_file_size
195
+ return cf_opts;
196
+ }
178
197
 
198
+ void UpdateColumnFamilyOptions(const MutableCFOptions& moptions,
199
+ ColumnFamilyOptions* cf_opts) {
179
200
  // Memtable related options
180
- cf_opts.write_buffer_size = mutable_cf_options.write_buffer_size;
181
- cf_opts.max_write_buffer_number = mutable_cf_options.max_write_buffer_number;
182
- cf_opts.arena_block_size = mutable_cf_options.arena_block_size;
183
- cf_opts.memtable_prefix_bloom_size_ratio =
184
- mutable_cf_options.memtable_prefix_bloom_size_ratio;
185
- cf_opts.memtable_whole_key_filtering =
186
- mutable_cf_options.memtable_whole_key_filtering;
187
- cf_opts.memtable_huge_page_size = mutable_cf_options.memtable_huge_page_size;
188
- cf_opts.max_successive_merges = mutable_cf_options.max_successive_merges;
189
- cf_opts.inplace_update_num_locks =
190
- mutable_cf_options.inplace_update_num_locks;
191
- cf_opts.prefix_extractor = mutable_cf_options.prefix_extractor;
201
+ cf_opts->write_buffer_size = moptions.write_buffer_size;
202
+ cf_opts->max_write_buffer_number = moptions.max_write_buffer_number;
203
+ cf_opts->arena_block_size = moptions.arena_block_size;
204
+ cf_opts->memtable_prefix_bloom_size_ratio =
205
+ moptions.memtable_prefix_bloom_size_ratio;
206
+ cf_opts->memtable_whole_key_filtering = moptions.memtable_whole_key_filtering;
207
+ cf_opts->memtable_huge_page_size = moptions.memtable_huge_page_size;
208
+ cf_opts->max_successive_merges = moptions.max_successive_merges;
209
+ cf_opts->inplace_update_num_locks = moptions.inplace_update_num_locks;
210
+ cf_opts->prefix_extractor = moptions.prefix_extractor;
192
211
 
193
212
  // Compaction related options
194
- cf_opts.disable_auto_compactions =
195
- mutable_cf_options.disable_auto_compactions;
196
- cf_opts.soft_pending_compaction_bytes_limit =
197
- mutable_cf_options.soft_pending_compaction_bytes_limit;
198
- cf_opts.hard_pending_compaction_bytes_limit =
199
- mutable_cf_options.hard_pending_compaction_bytes_limit;
200
- cf_opts.level0_file_num_compaction_trigger =
201
- mutable_cf_options.level0_file_num_compaction_trigger;
202
- cf_opts.level0_slowdown_writes_trigger =
203
- mutable_cf_options.level0_slowdown_writes_trigger;
204
- cf_opts.level0_stop_writes_trigger =
205
- mutable_cf_options.level0_stop_writes_trigger;
206
- cf_opts.max_compaction_bytes = mutable_cf_options.max_compaction_bytes;
207
- cf_opts.target_file_size_base = mutable_cf_options.target_file_size_base;
208
- cf_opts.target_file_size_multiplier =
209
- mutable_cf_options.target_file_size_multiplier;
210
- cf_opts.max_bytes_for_level_base =
211
- mutable_cf_options.max_bytes_for_level_base;
212
- cf_opts.max_bytes_for_level_multiplier =
213
- mutable_cf_options.max_bytes_for_level_multiplier;
214
- cf_opts.ttl = mutable_cf_options.ttl;
215
- cf_opts.periodic_compaction_seconds =
216
- mutable_cf_options.periodic_compaction_seconds;
217
-
218
- cf_opts.max_bytes_for_level_multiplier_additional.clear();
219
- for (auto value :
220
- mutable_cf_options.max_bytes_for_level_multiplier_additional) {
221
- cf_opts.max_bytes_for_level_multiplier_additional.emplace_back(value);
213
+ cf_opts->disable_auto_compactions = moptions.disable_auto_compactions;
214
+ cf_opts->soft_pending_compaction_bytes_limit =
215
+ moptions.soft_pending_compaction_bytes_limit;
216
+ cf_opts->hard_pending_compaction_bytes_limit =
217
+ moptions.hard_pending_compaction_bytes_limit;
218
+ cf_opts->level0_file_num_compaction_trigger =
219
+ moptions.level0_file_num_compaction_trigger;
220
+ cf_opts->level0_slowdown_writes_trigger =
221
+ moptions.level0_slowdown_writes_trigger;
222
+ cf_opts->level0_stop_writes_trigger = moptions.level0_stop_writes_trigger;
223
+ cf_opts->max_compaction_bytes = moptions.max_compaction_bytes;
224
+ cf_opts->target_file_size_base = moptions.target_file_size_base;
225
+ cf_opts->target_file_size_multiplier = moptions.target_file_size_multiplier;
226
+ cf_opts->max_bytes_for_level_base = moptions.max_bytes_for_level_base;
227
+ cf_opts->max_bytes_for_level_multiplier =
228
+ moptions.max_bytes_for_level_multiplier;
229
+ cf_opts->ttl = moptions.ttl;
230
+ cf_opts->periodic_compaction_seconds = moptions.periodic_compaction_seconds;
231
+
232
+ cf_opts->max_bytes_for_level_multiplier_additional.clear();
233
+ for (auto value : moptions.max_bytes_for_level_multiplier_additional) {
234
+ cf_opts->max_bytes_for_level_multiplier_additional.emplace_back(value);
222
235
  }
223
236
 
224
- cf_opts.compaction_options_fifo = mutable_cf_options.compaction_options_fifo;
225
- cf_opts.compaction_options_universal =
226
- mutable_cf_options.compaction_options_universal;
237
+ cf_opts->compaction_options_fifo = moptions.compaction_options_fifo;
238
+ cf_opts->compaction_options_universal = moptions.compaction_options_universal;
227
239
 
228
240
  // Blob file related options
229
- cf_opts.enable_blob_files = mutable_cf_options.enable_blob_files;
230
- cf_opts.min_blob_size = mutable_cf_options.min_blob_size;
231
- cf_opts.blob_file_size = mutable_cf_options.blob_file_size;
232
- cf_opts.blob_compression_type = mutable_cf_options.blob_compression_type;
233
- cf_opts.enable_blob_garbage_collection =
234
- mutable_cf_options.enable_blob_garbage_collection;
235
- cf_opts.blob_garbage_collection_age_cutoff =
236
- mutable_cf_options.blob_garbage_collection_age_cutoff;
241
+ cf_opts->enable_blob_files = moptions.enable_blob_files;
242
+ cf_opts->min_blob_size = moptions.min_blob_size;
243
+ cf_opts->blob_file_size = moptions.blob_file_size;
244
+ cf_opts->blob_compression_type = moptions.blob_compression_type;
245
+ cf_opts->enable_blob_garbage_collection =
246
+ moptions.enable_blob_garbage_collection;
247
+ cf_opts->blob_garbage_collection_age_cutoff =
248
+ moptions.blob_garbage_collection_age_cutoff;
249
+ cf_opts->blob_garbage_collection_force_threshold =
250
+ moptions.blob_garbage_collection_force_threshold;
251
+ cf_opts->blob_compaction_readahead_size =
252
+ moptions.blob_compaction_readahead_size;
237
253
 
238
254
  // Misc options
239
- cf_opts.max_sequential_skip_in_iterations =
240
- mutable_cf_options.max_sequential_skip_in_iterations;
241
- cf_opts.check_flush_compaction_key_order =
242
- mutable_cf_options.check_flush_compaction_key_order;
243
- cf_opts.paranoid_file_checks = mutable_cf_options.paranoid_file_checks;
244
- cf_opts.report_bg_io_stats = mutable_cf_options.report_bg_io_stats;
245
- cf_opts.compression = mutable_cf_options.compression;
246
- cf_opts.compression_opts = mutable_cf_options.compression_opts;
247
- cf_opts.bottommost_compression = mutable_cf_options.bottommost_compression;
248
- cf_opts.bottommost_compression_opts =
249
- mutable_cf_options.bottommost_compression_opts;
250
- cf_opts.sample_for_compression = mutable_cf_options.sample_for_compression;
251
-
252
- cf_opts.table_factory = options.table_factory;
255
+ cf_opts->max_sequential_skip_in_iterations =
256
+ moptions.max_sequential_skip_in_iterations;
257
+ cf_opts->check_flush_compaction_key_order =
258
+ moptions.check_flush_compaction_key_order;
259
+ cf_opts->paranoid_file_checks = moptions.paranoid_file_checks;
260
+ cf_opts->report_bg_io_stats = moptions.report_bg_io_stats;
261
+ cf_opts->compression = moptions.compression;
262
+ cf_opts->compression_opts = moptions.compression_opts;
263
+ cf_opts->bottommost_compression = moptions.bottommost_compression;
264
+ cf_opts->bottommost_compression_opts = moptions.bottommost_compression_opts;
265
+ cf_opts->sample_for_compression = moptions.sample_for_compression;
266
+ cf_opts->compression_per_level = moptions.compression_per_level;
267
+ cf_opts->bottommost_temperature = moptions.bottommost_temperature;
268
+ }
269
+
270
+ void UpdateColumnFamilyOptions(const ImmutableCFOptions& ioptions,
271
+ ColumnFamilyOptions* cf_opts) {
272
+ cf_opts->compaction_style = ioptions.compaction_style;
273
+ cf_opts->compaction_pri = ioptions.compaction_pri;
274
+ cf_opts->comparator = ioptions.user_comparator;
275
+ cf_opts->merge_operator = ioptions.merge_operator;
276
+ cf_opts->compaction_filter = ioptions.compaction_filter;
277
+ cf_opts->compaction_filter_factory = ioptions.compaction_filter_factory;
278
+ cf_opts->min_write_buffer_number_to_merge =
279
+ ioptions.min_write_buffer_number_to_merge;
280
+ cf_opts->max_write_buffer_number_to_maintain =
281
+ ioptions.max_write_buffer_number_to_maintain;
282
+ cf_opts->max_write_buffer_size_to_maintain =
283
+ ioptions.max_write_buffer_size_to_maintain;
284
+ cf_opts->inplace_update_support = ioptions.inplace_update_support;
285
+ cf_opts->inplace_callback = ioptions.inplace_callback;
286
+ cf_opts->memtable_factory = ioptions.memtable_factory;
287
+ cf_opts->table_factory = ioptions.table_factory;
288
+ cf_opts->table_properties_collector_factories =
289
+ ioptions.table_properties_collector_factories;
290
+ cf_opts->bloom_locality = ioptions.bloom_locality;
291
+ cf_opts->level_compaction_dynamic_level_bytes =
292
+ ioptions.level_compaction_dynamic_level_bytes;
293
+ cf_opts->num_levels = ioptions.num_levels;
294
+ cf_opts->optimize_filters_for_hits = ioptions.optimize_filters_for_hits;
295
+ cf_opts->force_consistency_checks = ioptions.force_consistency_checks;
296
+ cf_opts->memtable_insert_with_hint_prefix_extractor =
297
+ ioptions.memtable_insert_with_hint_prefix_extractor;
298
+ cf_opts->cf_paths = ioptions.cf_paths;
299
+ cf_opts->compaction_thread_limiter = ioptions.compaction_thread_limiter;
300
+ cf_opts->sst_partitioner_factory = ioptions.sst_partitioner_factory;
301
+
253
302
  // TODO(yhchiang): find some way to handle the following derived options
254
303
  // * max_file_size
255
-
256
- return cf_opts;
257
304
  }
258
305
 
259
306
  std::map<CompactionStyle, std::string>
@@ -274,11 +321,18 @@ std::map<CompactionStopStyle, std::string>
274
321
  {kCompactionStopStyleSimilarSize, "kCompactionStopStyleSimilarSize"},
275
322
  {kCompactionStopStyleTotalSize, "kCompactionStopStyleTotalSize"}};
276
323
 
324
+ std::map<Temperature, std::string> OptionsHelper::temperature_to_string = {
325
+ {Temperature::kUnknown, "kUnknown"},
326
+ {Temperature::kHot, "kHot"},
327
+ {Temperature::kWarm, "kWarm"},
328
+ {Temperature::kCold, "kCold"}};
329
+
277
330
  std::unordered_map<std::string, ChecksumType>
278
331
  OptionsHelper::checksum_type_string_map = {{"kNoChecksum", kNoChecksum},
279
332
  {"kCRC32c", kCRC32c},
280
333
  {"kxxHash", kxxHash},
281
- {"kxxHash64", kxxHash64}};
334
+ {"kxxHash64", kxxHash64},
335
+ {"kXXH3", kXXH3}};
282
336
 
283
337
  std::unordered_map<std::string, CompressionType>
284
338
  OptionsHelper::compression_type_string_map = {
@@ -294,288 +348,198 @@ std::unordered_map<std::string, CompressionType>
294
348
  {"kDisableCompressionOption", kDisableCompressionOption}};
295
349
 
296
350
  std::vector<CompressionType> GetSupportedCompressions() {
297
- std::vector<CompressionType> supported_compressions;
351
+ // std::set internally to deduplicate potential name aliases
352
+ std::set<CompressionType> supported_compressions;
298
353
  for (const auto& comp_to_name : OptionsHelper::compression_type_string_map) {
299
354
  CompressionType t = comp_to_name.second;
300
355
  if (t != kDisableCompressionOption && CompressionTypeSupported(t)) {
301
- supported_compressions.push_back(t);
356
+ supported_compressions.insert(t);
302
357
  }
303
358
  }
304
- return supported_compressions;
359
+ return std::vector<CompressionType>(supported_compressions.begin(),
360
+ supported_compressions.end());
305
361
  }
306
362
 
307
363
  std::vector<CompressionType> GetSupportedDictCompressions() {
308
- std::vector<CompressionType> dict_compression_types;
364
+ std::set<CompressionType> dict_compression_types;
309
365
  for (const auto& comp_to_name : OptionsHelper::compression_type_string_map) {
310
366
  CompressionType t = comp_to_name.second;
311
367
  if (t != kDisableCompressionOption && DictCompressionTypeSupported(t)) {
312
- dict_compression_types.push_back(t);
368
+ dict_compression_types.insert(t);
313
369
  }
314
370
  }
315
- return dict_compression_types;
371
+ return std::vector<CompressionType>(dict_compression_types.begin(),
372
+ dict_compression_types.end());
316
373
  }
317
374
 
318
- #ifndef ROCKSDB_LITE
319
- bool ParseSliceTransformHelper(
320
- const std::string& kFixedPrefixName, const std::string& kCappedPrefixName,
321
- const std::string& value,
322
- std::shared_ptr<const SliceTransform>* slice_transform) {
323
- const char* no_op_name = "rocksdb.Noop";
324
- size_t no_op_length = strlen(no_op_name);
325
- auto& pe_value = value;
326
- if (pe_value.size() > kFixedPrefixName.size() &&
327
- pe_value.compare(0, kFixedPrefixName.size(), kFixedPrefixName) == 0) {
328
- int prefix_length = ParseInt(trim(value.substr(kFixedPrefixName.size())));
329
- slice_transform->reset(NewFixedPrefixTransform(prefix_length));
330
- } else if (pe_value.size() > kCappedPrefixName.size() &&
331
- pe_value.compare(0, kCappedPrefixName.size(), kCappedPrefixName) ==
332
- 0) {
333
- int prefix_length =
334
- ParseInt(trim(pe_value.substr(kCappedPrefixName.size())));
335
- slice_transform->reset(NewCappedPrefixTransform(prefix_length));
336
- } else if (pe_value.size() == no_op_length &&
337
- pe_value.compare(0, no_op_length, no_op_name) == 0) {
338
- const SliceTransform* no_op_transform = NewNoopTransform();
339
- slice_transform->reset(no_op_transform);
340
- } else if (value == kNullptrString) {
341
- slice_transform->reset();
342
- } else {
343
- return false;
344
- }
345
-
346
- return true;
347
- }
348
-
349
- bool ParseSliceTransform(
350
- const std::string& value,
351
- std::shared_ptr<const SliceTransform>* slice_transform) {
352
- // While we normally don't convert the string representation of a
353
- // pointer-typed option into its instance, here we do so for backward
354
- // compatibility as we allow this action in SetOption().
355
-
356
- // TODO(yhchiang): A possible better place for these serialization /
357
- // deserialization is inside the class definition of pointer-typed
358
- // option itself, but this requires a bigger change of public API.
359
- bool result =
360
- ParseSliceTransformHelper("fixed:", "capped:", value, slice_transform);
361
- if (result) {
362
- return result;
363
- }
364
- result = ParseSliceTransformHelper(
365
- "rocksdb.FixedPrefix.", "rocksdb.CappedPrefix.", value, slice_transform);
366
- if (result) {
367
- return result;
375
+ std::vector<ChecksumType> GetSupportedChecksums() {
376
+ std::set<ChecksumType> checksum_types;
377
+ for (const auto& e : OptionsHelper::checksum_type_string_map) {
378
+ checksum_types.insert(e.second);
368
379
  }
369
- // TODO(yhchiang): we can further support other default
370
- // SliceTransforms here.
371
- return false;
380
+ return std::vector<ChecksumType>(checksum_types.begin(),
381
+ checksum_types.end());
372
382
  }
373
383
 
374
- static bool ParseOptionHelper(char* opt_address, const OptionType& opt_type,
384
+ #ifndef ROCKSDB_LITE
385
+ static bool ParseOptionHelper(void* opt_address, const OptionType& opt_type,
375
386
  const std::string& value) {
376
387
  switch (opt_type) {
377
388
  case OptionType::kBoolean:
378
- *reinterpret_cast<bool*>(opt_address) = ParseBoolean("", value);
389
+ *static_cast<bool*>(opt_address) = ParseBoolean("", value);
379
390
  break;
380
391
  case OptionType::kInt:
381
- *reinterpret_cast<int*>(opt_address) = ParseInt(value);
392
+ *static_cast<int*>(opt_address) = ParseInt(value);
382
393
  break;
383
394
  case OptionType::kInt32T:
384
- *reinterpret_cast<int32_t*>(opt_address) = ParseInt32(value);
395
+ *static_cast<int32_t*>(opt_address) = ParseInt32(value);
385
396
  break;
386
397
  case OptionType::kInt64T:
387
- PutUnaligned(reinterpret_cast<int64_t*>(opt_address), ParseInt64(value));
398
+ PutUnaligned(static_cast<int64_t*>(opt_address), ParseInt64(value));
388
399
  break;
389
400
  case OptionType::kUInt:
390
- *reinterpret_cast<unsigned int*>(opt_address) = ParseUint32(value);
401
+ *static_cast<unsigned int*>(opt_address) = ParseUint32(value);
402
+ break;
403
+ case OptionType::kUInt8T:
404
+ *static_cast<uint8_t*>(opt_address) = ParseUint8(value);
391
405
  break;
392
406
  case OptionType::kUInt32T:
393
- *reinterpret_cast<uint32_t*>(opt_address) = ParseUint32(value);
407
+ *static_cast<uint32_t*>(opt_address) = ParseUint32(value);
394
408
  break;
395
409
  case OptionType::kUInt64T:
396
- PutUnaligned(reinterpret_cast<uint64_t*>(opt_address), ParseUint64(value));
410
+ PutUnaligned(static_cast<uint64_t*>(opt_address), ParseUint64(value));
397
411
  break;
398
412
  case OptionType::kSizeT:
399
- PutUnaligned(reinterpret_cast<size_t*>(opt_address), ParseSizeT(value));
413
+ PutUnaligned(static_cast<size_t*>(opt_address), ParseSizeT(value));
400
414
  break;
401
415
  case OptionType::kString:
402
- *reinterpret_cast<std::string*>(opt_address) = value;
416
+ *static_cast<std::string*>(opt_address) = value;
403
417
  break;
404
418
  case OptionType::kDouble:
405
- *reinterpret_cast<double*>(opt_address) = ParseDouble(value);
419
+ *static_cast<double*>(opt_address) = ParseDouble(value);
406
420
  break;
407
421
  case OptionType::kCompactionStyle:
408
422
  return ParseEnum<CompactionStyle>(
409
423
  compaction_style_string_map, value,
410
- reinterpret_cast<CompactionStyle*>(opt_address));
424
+ static_cast<CompactionStyle*>(opt_address));
411
425
  case OptionType::kCompactionPri:
412
- return ParseEnum<CompactionPri>(
413
- compaction_pri_string_map, value,
414
- reinterpret_cast<CompactionPri*>(opt_address));
426
+ return ParseEnum<CompactionPri>(compaction_pri_string_map, value,
427
+ static_cast<CompactionPri*>(opt_address));
415
428
  case OptionType::kCompressionType:
416
429
  return ParseEnum<CompressionType>(
417
430
  compression_type_string_map, value,
418
- reinterpret_cast<CompressionType*>(opt_address));
419
- case OptionType::kSliceTransform:
420
- return ParseSliceTransform(
421
- value, reinterpret_cast<std::shared_ptr<const SliceTransform>*>(
422
- opt_address));
431
+ static_cast<CompressionType*>(opt_address));
423
432
  case OptionType::kChecksumType:
424
- return ParseEnum<ChecksumType>(
425
- checksum_type_string_map, value,
426
- reinterpret_cast<ChecksumType*>(opt_address));
433
+ return ParseEnum<ChecksumType>(checksum_type_string_map, value,
434
+ static_cast<ChecksumType*>(opt_address));
427
435
  case OptionType::kEncodingType:
428
- return ParseEnum<EncodingType>(
429
- encoding_type_string_map, value,
430
- reinterpret_cast<EncodingType*>(opt_address));
436
+ return ParseEnum<EncodingType>(encoding_type_string_map, value,
437
+ static_cast<EncodingType*>(opt_address));
431
438
  case OptionType::kCompactionStopStyle:
432
439
  return ParseEnum<CompactionStopStyle>(
433
440
  compaction_stop_style_string_map, value,
434
- reinterpret_cast<CompactionStopStyle*>(opt_address));
441
+ static_cast<CompactionStopStyle*>(opt_address));
442
+ case OptionType::kEncodedString: {
443
+ std::string* output_addr = static_cast<std::string*>(opt_address);
444
+ (Slice(value)).DecodeHex(output_addr);
445
+ break;
446
+ }
447
+ case OptionType::kTemperature: {
448
+ return ParseEnum<Temperature>(temperature_string_map, value,
449
+ static_cast<Temperature*>(opt_address));
450
+ }
435
451
  default:
436
452
  return false;
437
453
  }
438
454
  return true;
439
455
  }
440
456
 
441
- bool SerializeSingleOptionHelper(const char* opt_address,
457
+ bool SerializeSingleOptionHelper(const void* opt_address,
442
458
  const OptionType opt_type,
443
459
  std::string* value) {
444
-
445
460
  assert(value);
446
461
  switch (opt_type) {
447
462
  case OptionType::kBoolean:
448
- *value = *(reinterpret_cast<const bool*>(opt_address)) ? "true" : "false";
463
+ *value = *(static_cast<const bool*>(opt_address)) ? "true" : "false";
449
464
  break;
450
465
  case OptionType::kInt:
451
- *value = ToString(*(reinterpret_cast<const int*>(opt_address)));
466
+ *value = ToString(*(static_cast<const int*>(opt_address)));
452
467
  break;
453
468
  case OptionType::kInt32T:
454
- *value = ToString(*(reinterpret_cast<const int32_t*>(opt_address)));
469
+ *value = ToString(*(static_cast<const int32_t*>(opt_address)));
455
470
  break;
456
471
  case OptionType::kInt64T:
457
472
  {
458
473
  int64_t v;
459
- GetUnaligned(reinterpret_cast<const int64_t*>(opt_address), &v);
474
+ GetUnaligned(static_cast<const int64_t*>(opt_address), &v);
460
475
  *value = ToString(v);
461
476
  }
462
477
  break;
463
478
  case OptionType::kUInt:
464
- *value = ToString(*(reinterpret_cast<const unsigned int*>(opt_address)));
479
+ *value = ToString(*(static_cast<const unsigned int*>(opt_address)));
480
+ break;
481
+ case OptionType::kUInt8T:
482
+ *value = ToString(*(static_cast<const uint8_t*>(opt_address)));
465
483
  break;
466
484
  case OptionType::kUInt32T:
467
- *value = ToString(*(reinterpret_cast<const uint32_t*>(opt_address)));
485
+ *value = ToString(*(static_cast<const uint32_t*>(opt_address)));
468
486
  break;
469
487
  case OptionType::kUInt64T:
470
488
  {
471
489
  uint64_t v;
472
- GetUnaligned(reinterpret_cast<const uint64_t*>(opt_address), &v);
490
+ GetUnaligned(static_cast<const uint64_t*>(opt_address), &v);
473
491
  *value = ToString(v);
474
492
  }
475
493
  break;
476
494
  case OptionType::kSizeT:
477
495
  {
478
496
  size_t v;
479
- GetUnaligned(reinterpret_cast<const size_t*>(opt_address), &v);
497
+ GetUnaligned(static_cast<const size_t*>(opt_address), &v);
480
498
  *value = ToString(v);
481
499
  }
482
500
  break;
483
501
  case OptionType::kDouble:
484
- *value = ToString(*(reinterpret_cast<const double*>(opt_address)));
502
+ *value = ToString(*(static_cast<const double*>(opt_address)));
485
503
  break;
486
504
  case OptionType::kString:
487
- *value = EscapeOptionString(
488
- *(reinterpret_cast<const std::string*>(opt_address)));
505
+ *value =
506
+ EscapeOptionString(*(static_cast<const std::string*>(opt_address)));
489
507
  break;
490
508
  case OptionType::kCompactionStyle:
491
509
  return SerializeEnum<CompactionStyle>(
492
510
  compaction_style_string_map,
493
- *(reinterpret_cast<const CompactionStyle*>(opt_address)), value);
511
+ *(static_cast<const CompactionStyle*>(opt_address)), value);
494
512
  case OptionType::kCompactionPri:
495
513
  return SerializeEnum<CompactionPri>(
496
514
  compaction_pri_string_map,
497
- *(reinterpret_cast<const CompactionPri*>(opt_address)), value);
515
+ *(static_cast<const CompactionPri*>(opt_address)), value);
498
516
  case OptionType::kCompressionType:
499
517
  return SerializeEnum<CompressionType>(
500
518
  compression_type_string_map,
501
- *(reinterpret_cast<const CompressionType*>(opt_address)), value);
502
- case OptionType::kSliceTransform: {
503
- const auto* slice_transform_ptr =
504
- reinterpret_cast<const std::shared_ptr<const SliceTransform>*>(
505
- opt_address);
506
- *value = slice_transform_ptr->get() ? slice_transform_ptr->get()->Name()
507
- : kNullptrString;
508
- break;
509
- }
510
- case OptionType::kComparator: {
511
- // it's a const pointer of const Comparator*
512
- const auto* ptr = reinterpret_cast<const Comparator* const*>(opt_address);
513
- // Since the user-specified comparator will be wrapped by
514
- // InternalKeyComparator, we should persist the user-specified one
515
- // instead of InternalKeyComparator.
516
- if (*ptr == nullptr) {
517
- *value = kNullptrString;
518
- } else {
519
- const Comparator* root_comp = (*ptr)->GetRootComparator();
520
- if (root_comp == nullptr) {
521
- root_comp = (*ptr);
522
- }
523
- *value = root_comp->Name();
524
- }
525
- break;
526
- }
527
- case OptionType::kCompactionFilter: {
528
- // it's a const pointer of const CompactionFilter*
529
- const auto* ptr =
530
- reinterpret_cast<const CompactionFilter* const*>(opt_address);
531
- *value = *ptr ? (*ptr)->Name() : kNullptrString;
532
- break;
533
- }
534
- case OptionType::kCompactionFilterFactory: {
535
- const auto* ptr =
536
- reinterpret_cast<const std::shared_ptr<CompactionFilterFactory>*>(
537
- opt_address);
538
- *value = ptr->get() ? ptr->get()->Name() : kNullptrString;
539
- break;
540
- }
541
- case OptionType::kMemTableRepFactory: {
542
- const auto* ptr =
543
- reinterpret_cast<const std::shared_ptr<MemTableRepFactory>*>(
544
- opt_address);
545
- *value = ptr->get() ? ptr->get()->Name() : kNullptrString;
546
- break;
547
- }
548
- case OptionType::kMergeOperator: {
549
- const auto* ptr =
550
- reinterpret_cast<const std::shared_ptr<MergeOperator>*>(opt_address);
551
- *value = ptr->get() ? ptr->get()->Name() : kNullptrString;
552
- break;
553
- }
554
- case OptionType::kFilterPolicy: {
555
- const auto* ptr =
556
- reinterpret_cast<const std::shared_ptr<FilterPolicy>*>(opt_address);
557
- *value = ptr->get() ? ptr->get()->Name() : kNullptrString;
519
+ *(static_cast<const CompressionType*>(opt_address)), value);
558
520
  break;
559
- }
560
521
  case OptionType::kChecksumType:
561
522
  return SerializeEnum<ChecksumType>(
562
523
  checksum_type_string_map,
563
- *reinterpret_cast<const ChecksumType*>(opt_address), value);
564
- case OptionType::kFlushBlockPolicyFactory: {
565
- const auto* ptr =
566
- reinterpret_cast<const std::shared_ptr<FlushBlockPolicyFactory>*>(
567
- opt_address);
568
- *value = ptr->get() ? ptr->get()->Name() : kNullptrString;
569
- break;
570
- }
524
+ *static_cast<const ChecksumType*>(opt_address), value);
571
525
  case OptionType::kEncodingType:
572
526
  return SerializeEnum<EncodingType>(
573
527
  encoding_type_string_map,
574
- *reinterpret_cast<const EncodingType*>(opt_address), value);
528
+ *static_cast<const EncodingType*>(opt_address), value);
575
529
  case OptionType::kCompactionStopStyle:
576
530
  return SerializeEnum<CompactionStopStyle>(
577
531
  compaction_stop_style_string_map,
578
- *reinterpret_cast<const CompactionStopStyle*>(opt_address), value);
532
+ *static_cast<const CompactionStopStyle*>(opt_address), value);
533
+ case OptionType::kEncodedString: {
534
+ const auto* ptr = static_cast<const std::string*>(opt_address);
535
+ *value = (Slice(*ptr)).ToString(true);
536
+ break;
537
+ }
538
+ case OptionType::kTemperature: {
539
+ return SerializeEnum<Temperature>(
540
+ temperature_string_map, *static_cast<const Temperature*>(opt_address),
541
+ value);
542
+ }
579
543
  default:
580
544
  return false;
581
545
  }
@@ -594,32 +558,6 @@ Status ConfigureFromMap(
594
558
  return s;
595
559
  }
596
560
 
597
- Status GetMutableOptionsFromStrings(
598
- const MutableCFOptions& base_options,
599
- const std::unordered_map<std::string, std::string>& options_map,
600
- Logger* /*info_log*/, MutableCFOptions* new_options) {
601
- assert(new_options);
602
- *new_options = base_options;
603
- ConfigOptions config_options;
604
- const auto config = CFOptionsAsConfigurable(base_options);
605
- return ConfigureFromMap<MutableCFOptions>(config_options, options_map,
606
- MutableCFOptions::kName(),
607
- config.get(), new_options);
608
- }
609
-
610
- Status GetMutableDBOptionsFromStrings(
611
- const MutableDBOptions& base_options,
612
- const std::unordered_map<std::string, std::string>& options_map,
613
- MutableDBOptions* new_options) {
614
- assert(new_options);
615
- *new_options = base_options;
616
- ConfigOptions config_options;
617
-
618
- auto config = DBOptionsAsConfigurable(base_options);
619
- return ConfigureFromMap<MutableDBOptions>(config_options, options_map,
620
- MutableDBOptions::kName(),
621
- config.get(), new_options);
622
- }
623
561
 
624
562
  Status StringToMap(const std::string& opts_str,
625
563
  std::unordered_map<std::string, std::string>* opts_map) {
@@ -635,10 +573,13 @@ Status StringToMap(const std::string& opts_str,
635
573
  }
636
574
 
637
575
  while (pos < opts.size()) {
638
- size_t eq_pos = opts.find('=', pos);
576
+ size_t eq_pos = opts.find_first_of("={};", pos);
639
577
  if (eq_pos == std::string::npos) {
640
578
  return Status::InvalidArgument("Mismatched key value pair, '=' expected");
579
+ } else if (opts[eq_pos] != '=') {
580
+ return Status::InvalidArgument("Unexpected char in key");
641
581
  }
582
+
642
583
  std::string key = trim(opts.substr(pos, eq_pos - pos));
643
584
  if (key.empty()) {
644
585
  return Status::InvalidArgument("Empty key found");
@@ -661,17 +602,11 @@ Status StringToMap(const std::string& opts_str,
661
602
  return Status::OK();
662
603
  }
663
604
 
664
- Status GetStringFromMutableDBOptions(const ConfigOptions& config_options,
665
- const MutableDBOptions& mutable_opts,
666
- std::string* opt_string) {
667
- auto config = DBOptionsAsConfigurable(mutable_opts);
668
- return config->GetOptionString(config_options, opt_string);
669
- }
670
605
 
671
606
  Status GetStringFromDBOptions(std::string* opt_string,
672
607
  const DBOptions& db_options,
673
608
  const std::string& delimiter) {
674
- ConfigOptions config_options;
609
+ ConfigOptions config_options(db_options);
675
610
  config_options.delimiter = delimiter;
676
611
  return GetStringFromDBOptions(config_options, db_options, opt_string);
677
612
  }
@@ -685,14 +620,6 @@ Status GetStringFromDBOptions(const ConfigOptions& config_options,
685
620
  return config->GetOptionString(config_options, opt_string);
686
621
  }
687
622
 
688
- Status GetStringFromMutableCFOptions(const ConfigOptions& config_options,
689
- const MutableCFOptions& mutable_opts,
690
- std::string* opt_string) {
691
- assert(opt_string);
692
- opt_string->clear();
693
- const auto config = CFOptionsAsConfigurable(mutable_opts);
694
- return config->GetOptionString(config_options, opt_string);
695
- }
696
623
 
697
624
  Status GetStringFromColumnFamilyOptions(std::string* opt_string,
698
625
  const ColumnFamilyOptions& cf_options,
@@ -784,7 +711,7 @@ Status GetDBOptionsFromMap(
784
711
  const std::unordered_map<std::string, std::string>& opts_map,
785
712
  DBOptions* new_options, bool input_strings_escaped,
786
713
  bool ignore_unknown_options) {
787
- ConfigOptions config_options;
714
+ ConfigOptions config_options(base_options);
788
715
  config_options.input_strings_escaped = input_strings_escaped;
789
716
  config_options.ignore_unknown_options = ignore_unknown_options;
790
717
  return GetDBOptionsFromMap(config_options, base_options, opts_map,
@@ -812,7 +739,7 @@ Status GetDBOptionsFromMap(
812
739
  Status GetDBOptionsFromString(const DBOptions& base_options,
813
740
  const std::string& opts_str,
814
741
  DBOptions* new_options) {
815
- ConfigOptions config_options;
742
+ ConfigOptions config_options(base_options);
816
743
  config_options.input_strings_escaped = false;
817
744
  config_options.ignore_unknown_options = false;
818
745
 
@@ -836,7 +763,7 @@ Status GetDBOptionsFromString(const ConfigOptions& config_options,
836
763
 
837
764
  Status GetOptionsFromString(const Options& base_options,
838
765
  const std::string& opts_str, Options* new_options) {
839
- ConfigOptions config_options;
766
+ ConfigOptions config_options(base_options);
840
767
  config_options.input_strings_escaped = false;
841
768
  config_options.ignore_unknown_options = false;
842
769
 
@@ -851,6 +778,7 @@ Status GetOptionsFromString(const ConfigOptions& config_options,
851
778
  std::unordered_map<std::string, std::string> unused_opts;
852
779
  std::unordered_map<std::string, std::string> opts_map;
853
780
 
781
+ assert(new_options);
854
782
  *new_options = base_options;
855
783
  Status s = StringToMap(opts_str, &opts_map);
856
784
  if (!s.ok()) {
@@ -903,6 +831,13 @@ std::unordered_map<std::string, CompactionStopStyle>
903
831
  {"kCompactionStopStyleSimilarSize", kCompactionStopStyleSimilarSize},
904
832
  {"kCompactionStopStyleTotalSize", kCompactionStopStyleTotalSize}};
905
833
 
834
+ std::unordered_map<std::string, Temperature>
835
+ OptionsHelper::temperature_string_map = {
836
+ {"kUnknown", Temperature::kUnknown},
837
+ {"kHot", Temperature::kHot},
838
+ {"kWarm", Temperature::kWarm},
839
+ {"kCold", Temperature::kCold}};
840
+
906
841
  Status OptionTypeInfo::NextToken(const std::string& opts, char delimiter,
907
842
  size_t pos, size_t* end, std::string* token) {
908
843
  while (pos < opts.size() && isspace(opts[pos])) {
@@ -963,7 +898,7 @@ Status OptionTypeInfo::Parse(const ConfigOptions& config_options,
963
898
  return Status::OK();
964
899
  }
965
900
  try {
966
- char* opt_addr = reinterpret_cast<char*>(opt_ptr) + offset_;
901
+ void* opt_addr = static_cast<char*>(opt_ptr) + offset_;
967
902
  const std::string& opt_value = config_options.input_strings_escaped
968
903
  ? UnescapeOptionString(value)
969
904
  : value;
@@ -1005,28 +940,56 @@ Status OptionTypeInfo::Parse(const ConfigOptions& config_options,
1005
940
  }
1006
941
  }
1007
942
 
943
+ Status OptionTypeInfo::ParseType(
944
+ const ConfigOptions& config_options, const std::string& opts_str,
945
+ const std::unordered_map<std::string, OptionTypeInfo>& type_map,
946
+ void* opt_addr, std::unordered_map<std::string, std::string>* unused) {
947
+ std::unordered_map<std::string, std::string> opts_map;
948
+ Status status = StringToMap(opts_str, &opts_map);
949
+ if (!status.ok()) {
950
+ return status;
951
+ } else {
952
+ return ParseType(config_options, opts_map, type_map, opt_addr, unused);
953
+ }
954
+ }
955
+
956
+ Status OptionTypeInfo::ParseType(
957
+ const ConfigOptions& config_options,
958
+ const std::unordered_map<std::string, std::string>& opts_map,
959
+ const std::unordered_map<std::string, OptionTypeInfo>& type_map,
960
+ void* opt_addr, std::unordered_map<std::string, std::string>* unused) {
961
+ for (const auto& opts_iter : opts_map) {
962
+ std::string opt_name;
963
+ const auto* opt_info = Find(opts_iter.first, type_map, &opt_name);
964
+ if (opt_info != nullptr) {
965
+ Status status =
966
+ opt_info->Parse(config_options, opt_name, opts_iter.second, opt_addr);
967
+ if (!status.ok()) {
968
+ return status;
969
+ }
970
+ } else if (unused != nullptr) {
971
+ (*unused)[opts_iter.first] = opts_iter.second;
972
+ } else if (!config_options.ignore_unknown_options) {
973
+ return Status::NotFound("Unrecognized option", opts_iter.first);
974
+ }
975
+ }
976
+ return Status::OK();
977
+ }
978
+
1008
979
  Status OptionTypeInfo::ParseStruct(
1009
980
  const ConfigOptions& config_options, const std::string& struct_name,
1010
981
  const std::unordered_map<std::string, OptionTypeInfo>* struct_map,
1011
- const std::string& opt_name, const std::string& opt_value, char* opt_addr) {
982
+ const std::string& opt_name, const std::string& opt_value, void* opt_addr) {
1012
983
  assert(struct_map);
1013
984
  Status status;
1014
985
  if (opt_name == struct_name || EndsWith(opt_name, "." + struct_name)) {
1015
986
  // This option represents the entire struct
1016
- std::unordered_map<std::string, std::string> opt_map;
1017
- status = StringToMap(opt_value, &opt_map);
1018
- for (const auto& map_iter : opt_map) {
1019
- if (!status.ok()) {
1020
- break;
1021
- }
1022
- const auto iter = struct_map->find(map_iter.first);
1023
- if (iter != struct_map->end()) {
1024
- status = iter->second.Parse(config_options, map_iter.first,
1025
- map_iter.second, opt_addr);
1026
- } else {
1027
- status = Status::InvalidArgument("Unrecognized option",
1028
- struct_name + "." + map_iter.first);
1029
- }
987
+ std::unordered_map<std::string, std::string> unused;
988
+ status =
989
+ ParseType(config_options, opt_value, *struct_map, opt_addr, &unused);
990
+ if (status.ok() && !unused.empty()) {
991
+ status = Status::InvalidArgument(
992
+ "Unrecognized option", struct_name + "." + unused.begin()->first);
1030
993
  }
1031
994
  } else if (StartsWith(opt_name, struct_name + ".")) {
1032
995
  // This option represents a nested field in the struct (e.g, struct.field)
@@ -1058,26 +1021,47 @@ Status OptionTypeInfo::Serialize(const ConfigOptions& config_options,
1058
1021
  std::string* opt_value) const {
1059
1022
  // If the option is no longer used in rocksdb and marked as deprecated,
1060
1023
  // we skip it in the serialization.
1061
- const char* opt_addr = reinterpret_cast<const char*>(opt_ptr) + offset_;
1024
+ const void* opt_addr = static_cast<const char*>(opt_ptr) + offset_;
1062
1025
  if (opt_addr == nullptr || IsDeprecated()) {
1063
1026
  return Status::OK();
1064
1027
  } else if (IsEnabled(OptionTypeFlags::kDontSerialize)) {
1065
1028
  return Status::NotSupported("Cannot serialize option: ", opt_name);
1066
1029
  } else if (serialize_func_ != nullptr) {
1067
1030
  return serialize_func_(config_options, opt_name, opt_addr, opt_value);
1068
- } else if (SerializeSingleOptionHelper(opt_addr, type_, opt_value)) {
1069
- return Status::OK();
1070
1031
  } else if (IsCustomizable()) {
1071
1032
  const Customizable* custom = AsRawPointer<Customizable>(opt_ptr);
1033
+ opt_value->clear();
1072
1034
  if (custom == nullptr) {
1073
- *opt_value = kNullptrString;
1035
+ // We do not have a custom object to serialize.
1036
+ // If the option is not mutable and we are doing only mutable options,
1037
+ // we return an empty string (which will cause the option not to be
1038
+ // printed). Otherwise, we return the "nullptr" string, which will result
1039
+ // in "option=nullptr" being printed.
1040
+ if (IsMutable() || !config_options.mutable_options_only) {
1041
+ *opt_value = kNullptrString;
1042
+ } else {
1043
+ *opt_value = "";
1044
+ }
1074
1045
  } else if (IsEnabled(OptionTypeFlags::kStringNameOnly) &&
1075
1046
  !config_options.IsDetailed()) {
1076
- *opt_value = custom->GetId();
1047
+ if (!config_options.mutable_options_only || IsMutable()) {
1048
+ *opt_value = custom->GetId();
1049
+ }
1077
1050
  } else {
1078
1051
  ConfigOptions embedded = config_options;
1079
1052
  embedded.delimiter = ";";
1080
- *opt_value = custom->ToString(embedded);
1053
+ // If this option is mutable, everything inside it should be considered
1054
+ // mutable
1055
+ if (IsMutable()) {
1056
+ embedded.mutable_options_only = false;
1057
+ }
1058
+ std::string value = custom->ToString(embedded);
1059
+ if (!embedded.mutable_options_only ||
1060
+ value.find("=") != std::string::npos) {
1061
+ *opt_value = value;
1062
+ } else {
1063
+ *opt_value = "";
1064
+ }
1081
1065
  }
1082
1066
  return Status::OK();
1083
1067
  } else if (IsConfigurable()) {
@@ -1088,15 +1072,40 @@ Status OptionTypeInfo::Serialize(const ConfigOptions& config_options,
1088
1072
  *opt_value = config->ToString(embedded);
1089
1073
  }
1090
1074
  return Status::OK();
1075
+ } else if (config_options.mutable_options_only && !IsMutable()) {
1076
+ return Status::OK();
1077
+ } else if (SerializeSingleOptionHelper(opt_addr, type_, opt_value)) {
1078
+ return Status::OK();
1091
1079
  } else {
1092
1080
  return Status::InvalidArgument("Cannot serialize option: ", opt_name);
1093
1081
  }
1094
1082
  }
1095
1083
 
1084
+ Status OptionTypeInfo::SerializeType(
1085
+ const ConfigOptions& config_options,
1086
+ const std::unordered_map<std::string, OptionTypeInfo>& type_map,
1087
+ const void* opt_addr, std::string* result) {
1088
+ Status status;
1089
+ for (const auto& iter : type_map) {
1090
+ std::string single;
1091
+ const auto& opt_info = iter.second;
1092
+ if (opt_info.ShouldSerialize()) {
1093
+ status =
1094
+ opt_info.Serialize(config_options, iter.first, opt_addr, &single);
1095
+ if (!status.ok()) {
1096
+ return status;
1097
+ } else {
1098
+ result->append(iter.first + "=" + single + config_options.delimiter);
1099
+ }
1100
+ }
1101
+ }
1102
+ return status;
1103
+ }
1104
+
1096
1105
  Status OptionTypeInfo::SerializeStruct(
1097
1106
  const ConfigOptions& config_options, const std::string& struct_name,
1098
1107
  const std::unordered_map<std::string, OptionTypeInfo>* struct_map,
1099
- const std::string& opt_name, const char* opt_addr, std::string* value) {
1108
+ const std::string& opt_name, const void* opt_addr, std::string* value) {
1100
1109
  assert(struct_map);
1101
1110
  Status status;
1102
1111
  if (EndsWith(opt_name, struct_name)) {
@@ -1107,19 +1116,12 @@ Status OptionTypeInfo::SerializeStruct(
1107
1116
 
1108
1117
  // This option represents the entire struct
1109
1118
  std::string result;
1110
- for (const auto& iter : *struct_map) {
1111
- std::string single;
1112
- const auto& opt_info = iter.second;
1113
- if (opt_info.ShouldSerialize()) {
1114
- status = opt_info.Serialize(embedded, iter.first, opt_addr, &single);
1115
- if (!status.ok()) {
1116
- return status;
1117
- } else {
1118
- result.append(iter.first + "=" + single + embedded.delimiter);
1119
- }
1120
- }
1119
+ status = SerializeType(embedded, *struct_map, opt_addr, &result);
1120
+ if (!status.ok()) {
1121
+ return status;
1122
+ } else {
1123
+ *value = "{" + result + "}";
1121
1124
  }
1122
- *value = "{" + result + "}";
1123
1125
  } else if (StartsWith(opt_name, struct_name + ".")) {
1124
1126
  // This option represents a nested field in the struct (e.g, struct.field)
1125
1127
  std::string elem_name;
@@ -1145,17 +1147,16 @@ Status OptionTypeInfo::SerializeStruct(
1145
1147
  }
1146
1148
 
1147
1149
  template <typename T>
1148
- bool IsOptionEqual(const char* offset1, const char* offset2) {
1149
- return (*reinterpret_cast<const T*>(offset1) ==
1150
- *reinterpret_cast<const T*>(offset2));
1150
+ bool IsOptionEqual(const void* offset1, const void* offset2) {
1151
+ return (*static_cast<const T*>(offset1) == *static_cast<const T*>(offset2));
1151
1152
  }
1152
1153
 
1153
1154
  static bool AreEqualDoubles(const double a, const double b) {
1154
1155
  return (fabs(a - b) < 0.00001);
1155
1156
  }
1156
1157
 
1157
- static bool AreOptionsEqual(OptionType type, const char* this_offset,
1158
- const char* that_offset) {
1158
+ static bool AreOptionsEqual(OptionType type, const void* this_offset,
1159
+ const void* that_offset) {
1159
1160
  switch (type) {
1160
1161
  case OptionType::kBoolean:
1161
1162
  return IsOptionEqual<bool>(this_offset, that_offset);
@@ -1167,29 +1168,31 @@ static bool AreOptionsEqual(OptionType type, const char* this_offset,
1167
1168
  return IsOptionEqual<int32_t>(this_offset, that_offset);
1168
1169
  case OptionType::kInt64T: {
1169
1170
  int64_t v1, v2;
1170
- GetUnaligned(reinterpret_cast<const int64_t*>(this_offset), &v1);
1171
- GetUnaligned(reinterpret_cast<const int64_t*>(that_offset), &v2);
1171
+ GetUnaligned(static_cast<const int64_t*>(this_offset), &v1);
1172
+ GetUnaligned(static_cast<const int64_t*>(that_offset), &v2);
1172
1173
  return (v1 == v2);
1173
1174
  }
1175
+ case OptionType::kUInt8T:
1176
+ return IsOptionEqual<uint8_t>(this_offset, that_offset);
1174
1177
  case OptionType::kUInt32T:
1175
1178
  return IsOptionEqual<uint32_t>(this_offset, that_offset);
1176
1179
  case OptionType::kUInt64T: {
1177
1180
  uint64_t v1, v2;
1178
- GetUnaligned(reinterpret_cast<const uint64_t*>(this_offset), &v1);
1179
- GetUnaligned(reinterpret_cast<const uint64_t*>(that_offset), &v2);
1181
+ GetUnaligned(static_cast<const uint64_t*>(this_offset), &v1);
1182
+ GetUnaligned(static_cast<const uint64_t*>(that_offset), &v2);
1180
1183
  return (v1 == v2);
1181
1184
  }
1182
1185
  case OptionType::kSizeT: {
1183
1186
  size_t v1, v2;
1184
- GetUnaligned(reinterpret_cast<const size_t*>(this_offset), &v1);
1185
- GetUnaligned(reinterpret_cast<const size_t*>(that_offset), &v2);
1187
+ GetUnaligned(static_cast<const size_t*>(this_offset), &v1);
1188
+ GetUnaligned(static_cast<const size_t*>(that_offset), &v2);
1186
1189
  return (v1 == v2);
1187
1190
  }
1188
1191
  case OptionType::kString:
1189
1192
  return IsOptionEqual<std::string>(this_offset, that_offset);
1190
1193
  case OptionType::kDouble:
1191
- return AreEqualDoubles(*reinterpret_cast<const double*>(this_offset),
1192
- *reinterpret_cast<const double*>(that_offset));
1194
+ return AreEqualDoubles(*static_cast<const double*>(this_offset),
1195
+ *static_cast<const double*>(that_offset));
1193
1196
  case OptionType::kCompactionStyle:
1194
1197
  return IsOptionEqual<CompactionStyle>(this_offset, that_offset);
1195
1198
  case OptionType::kCompactionStopStyle:
@@ -1202,6 +1205,10 @@ static bool AreOptionsEqual(OptionType type, const char* this_offset,
1202
1205
  return IsOptionEqual<ChecksumType>(this_offset, that_offset);
1203
1206
  case OptionType::kEncodingType:
1204
1207
  return IsOptionEqual<EncodingType>(this_offset, that_offset);
1208
+ case OptionType::kEncodedString:
1209
+ return IsOptionEqual<std::string>(this_offset, that_offset);
1210
+ case OptionType::kTemperature:
1211
+ return IsOptionEqual<Temperature>(this_offset, that_offset);
1205
1212
  default:
1206
1213
  return false;
1207
1214
  } // End switch
@@ -1216,8 +1223,8 @@ bool OptionTypeInfo::AreEqual(const ConfigOptions& config_options,
1216
1223
  if (!config_options.IsCheckEnabled(level)) {
1217
1224
  return true; // If the sanity level is not being checked, skip it
1218
1225
  }
1219
- const auto this_addr = reinterpret_cast<const char*>(this_ptr) + offset_;
1220
- const auto that_addr = reinterpret_cast<const char*>(that_ptr) + offset_;
1226
+ const void* this_addr = static_cast<const char*>(this_ptr) + offset_;
1227
+ const void* that_addr = static_cast<const char*>(that_ptr) + offset_;
1221
1228
  if (this_addr == nullptr || that_addr == nullptr) {
1222
1229
  if (this_addr == that_addr) {
1223
1230
  return true;
@@ -1257,25 +1264,35 @@ bool OptionTypeInfo::AreEqual(const ConfigOptions& config_options,
1257
1264
  return false;
1258
1265
  }
1259
1266
 
1267
+ bool OptionTypeInfo::TypesAreEqual(
1268
+ const ConfigOptions& config_options,
1269
+ const std::unordered_map<std::string, OptionTypeInfo>& type_map,
1270
+ const void* this_addr, const void* that_addr, std::string* mismatch) {
1271
+ for (const auto& iter : type_map) {
1272
+ const auto& opt_info = iter.second;
1273
+ if (!opt_info.AreEqual(config_options, iter.first, this_addr, that_addr,
1274
+ mismatch)) {
1275
+ return false;
1276
+ }
1277
+ }
1278
+ return true;
1279
+ }
1280
+
1260
1281
  bool OptionTypeInfo::StructsAreEqual(
1261
1282
  const ConfigOptions& config_options, const std::string& struct_name,
1262
1283
  const std::unordered_map<std::string, OptionTypeInfo>* struct_map,
1263
- const std::string& opt_name, const char* this_addr, const char* that_addr,
1284
+ const std::string& opt_name, const void* this_addr, const void* that_addr,
1264
1285
  std::string* mismatch) {
1265
1286
  assert(struct_map);
1266
1287
  bool matches = true;
1267
1288
  std::string result;
1268
1289
  if (EndsWith(opt_name, struct_name)) {
1269
1290
  // This option represents the entire struct
1270
- for (const auto& iter : *struct_map) {
1271
- const auto& opt_info = iter.second;
1272
-
1273
- matches = opt_info.AreEqual(config_options, iter.first, this_addr,
1274
- that_addr, &result);
1275
- if (!matches) {
1276
- *mismatch = struct_name + "." + result;
1277
- return false;
1278
- }
1291
+ matches = TypesAreEqual(config_options, *struct_map, this_addr, that_addr,
1292
+ &result);
1293
+ if (!matches) {
1294
+ *mismatch = struct_name + "." + result;
1295
+ return false;
1279
1296
  }
1280
1297
  } else if (StartsWith(opt_name, struct_name + ".")) {
1281
1298
  // This option represents a nested field in the struct (e.g, struct.field)