@nxtedition/rocksdb 13.5.8 → 13.5.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (508) hide show
  1. package/binding.cc +209 -2
  2. package/deps/rocksdb/rocksdb/BUCK +12 -0
  3. package/deps/rocksdb/rocksdb/CMakeLists.txt +7 -0
  4. package/deps/rocksdb/rocksdb/Makefile +28 -23
  5. package/deps/rocksdb/rocksdb/cache/cache.cc +0 -1
  6. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +1 -2
  7. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +43 -39
  8. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +2 -0
  9. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +0 -1
  10. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +2 -3
  11. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +2 -2
  12. package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +1 -3
  13. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +11 -1
  14. package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache_test.cc +13 -5
  15. package/deps/rocksdb/rocksdb/crash_test.mk +61 -15
  16. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +136 -45
  17. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +34 -16
  18. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +10 -7
  19. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +1 -2
  20. package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.h +1 -0
  21. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +12 -9
  22. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +3 -4
  23. package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +2 -2
  24. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +3 -4
  25. package/deps/rocksdb/rocksdb/db/builder.cc +22 -8
  26. package/deps/rocksdb/rocksdb/db/builder.h +5 -4
  27. package/deps/rocksdb/rocksdb/db/c.cc +556 -15
  28. package/deps/rocksdb/rocksdb/db/c_test.c +133 -12
  29. package/deps/rocksdb/rocksdb/db/column_family.cc +114 -50
  30. package/deps/rocksdb/rocksdb/db/column_family.h +53 -36
  31. package/deps/rocksdb/rocksdb/db/column_family_test.cc +6 -6
  32. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +0 -1
  33. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +95 -70
  34. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +71 -51
  35. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +7 -86
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +26 -68
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +0 -122
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +453 -258
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +117 -92
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +0 -1
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +38 -38
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +24 -17
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +34 -45
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +32 -31
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +12 -3
  46. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +1 -1
  47. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +2 -1
  48. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +10 -10
  49. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +2 -1
  50. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +82 -34
  51. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +267 -179
  52. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +4 -1
  53. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +273 -89
  54. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +300 -14
  55. package/deps/rocksdb/rocksdb/db/compaction/compaction_state.cc +4 -4
  56. package/deps/rocksdb/rocksdb/db/compaction/compaction_state.h +2 -2
  57. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +28 -23
  58. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +69 -51
  59. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +522 -245
  60. package/deps/rocksdb/rocksdb/db/convenience.cc +15 -4
  61. package/deps/rocksdb/rocksdb/db/corruption_test.cc +1 -3
  62. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +0 -2
  63. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +196 -17
  64. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +74 -62
  65. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +48 -0
  66. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +682 -250
  67. package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +0 -1
  68. package/deps/rocksdb/rocksdb/db/db_encryption_test.cc +3 -4
  69. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +11 -16
  70. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +57 -0
  71. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +2 -2
  72. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +1 -1
  73. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +540 -490
  74. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +347 -188
  75. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +584 -217
  76. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +13 -9
  77. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +5 -7
  78. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +40 -36
  79. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +1 -3
  80. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +751 -372
  81. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +35 -32
  82. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +24 -2
  83. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +125 -63
  84. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +2 -2
  85. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +311 -196
  86. package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +15 -5
  87. package/deps/rocksdb/rocksdb/db/db_iter.cc +42 -29
  88. package/deps/rocksdb/rocksdb/db/db_iter.h +96 -31
  89. package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +3 -4
  90. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +168 -228
  91. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +454 -0
  92. package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +8 -8
  93. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +0 -1
  94. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +90 -0
  95. package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +60 -2
  96. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +7 -3
  97. package/deps/rocksdb/rocksdb/db/db_options_test.cc +85 -27
  98. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +3 -1
  99. package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +0 -2
  100. package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +114 -2
  101. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +0 -1
  102. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +0 -1
  103. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +51 -3
  104. package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +0 -1
  105. package/deps/rocksdb/rocksdb/db/db_test.cc +325 -18
  106. package/deps/rocksdb/rocksdb/db/db_test2.cc +644 -20
  107. package/deps/rocksdb/rocksdb/db/db_test_util.cc +14 -6
  108. package/deps/rocksdb/rocksdb/db/db_test_util.h +9 -0
  109. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +64 -45
  110. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +203 -14
  111. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +259 -30
  112. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +0 -1
  113. package/deps/rocksdb/rocksdb/db/db_write_test.cc +75 -1
  114. package/deps/rocksdb/rocksdb/db/dbformat.h +70 -6
  115. package/deps/rocksdb/rocksdb/db/deletefile_test.cc +0 -190
  116. package/deps/rocksdb/rocksdb/db/error_handler.cc +22 -7
  117. package/deps/rocksdb/rocksdb/db/error_handler.h +16 -1
  118. package/deps/rocksdb/rocksdb/db/event_helpers.cc +41 -26
  119. package/deps/rocksdb/rocksdb/db/experimental.cc +4 -3
  120. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +464 -78
  121. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +166 -69
  122. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +54 -25
  123. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +1 -3
  124. package/deps/rocksdb/rocksdb/db/flush_job.cc +98 -81
  125. package/deps/rocksdb/rocksdb/db/flush_job.h +4 -9
  126. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +80 -84
  127. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +1 -1
  128. package/deps/rocksdb/rocksdb/db/forward_iterator.h +2 -2
  129. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +12 -19
  130. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +0 -2
  131. package/deps/rocksdb/rocksdb/db/internal_stats.cc +41 -15
  132. package/deps/rocksdb/rocksdb/db/internal_stats.h +63 -52
  133. package/deps/rocksdb/rocksdb/db/job_context.h +59 -24
  134. package/deps/rocksdb/rocksdb/db/listener_test.cc +69 -10
  135. package/deps/rocksdb/rocksdb/db/log_format.h +11 -2
  136. package/deps/rocksdb/rocksdb/db/log_reader.cc +147 -34
  137. package/deps/rocksdb/rocksdb/db/log_reader.h +40 -11
  138. package/deps/rocksdb/rocksdb/db/log_test.cc +16 -3
  139. package/deps/rocksdb/rocksdb/db/log_writer.cc +102 -55
  140. package/deps/rocksdb/rocksdb/db/log_writer.h +21 -2
  141. package/deps/rocksdb/rocksdb/db/malloc_stats.h +0 -2
  142. package/deps/rocksdb/rocksdb/db/memtable.cc +16 -47
  143. package/deps/rocksdb/rocksdb/db/memtable.h +76 -12
  144. package/deps/rocksdb/rocksdb/db/memtable_list.cc +23 -20
  145. package/deps/rocksdb/rocksdb/db/memtable_list.h +9 -11
  146. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +18 -37
  147. package/deps/rocksdb/rocksdb/db/merge_context.h +2 -1
  148. package/deps/rocksdb/rocksdb/db/merge_test.cc +8 -0
  149. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +3 -5
  150. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +15 -7
  151. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.h +6 -3
  152. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +22 -4
  153. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +41 -1
  154. package/deps/rocksdb/rocksdb/db/prefix_test.cc +0 -1
  155. package/deps/rocksdb/rocksdb/db/repair.cc +29 -34
  156. package/deps/rocksdb/rocksdb/db/repair_test.cc +0 -1
  157. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +14 -15
  158. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +1 -3
  159. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +47 -1
  160. package/deps/rocksdb/rocksdb/db/table_cache.cc +3 -3
  161. package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +1 -3
  162. package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +2 -1
  163. package/deps/rocksdb/rocksdb/db/version_builder.cc +2 -2
  164. package/deps/rocksdb/rocksdb/db/version_edit.cc +8 -37
  165. package/deps/rocksdb/rocksdb/db/version_edit.h +32 -1
  166. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +26 -18
  167. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +7 -5
  168. package/deps/rocksdb/rocksdb/db/version_set.cc +282 -197
  169. package/deps/rocksdb/rocksdb/db/version_set.h +54 -57
  170. package/deps/rocksdb/rocksdb/db/version_set_test.cc +28 -35
  171. package/deps/rocksdb/rocksdb/db/version_util.h +2 -3
  172. package/deps/rocksdb/rocksdb/db/wal_manager.cc +3 -2
  173. package/deps/rocksdb/rocksdb/db/wal_manager.h +0 -1
  174. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +0 -1
  175. package/deps/rocksdb/rocksdb/db/wide/wide_columns.cc +1 -0
  176. package/deps/rocksdb/rocksdb/db/write_batch.cc +22 -8
  177. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +5 -4
  178. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +7 -6
  179. package/deps/rocksdb/rocksdb/db/write_callback_test.cc +3 -4
  180. package/deps/rocksdb/rocksdb/db/write_thread.h +3 -3
  181. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +13 -5
  182. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +9 -2
  183. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_service.h +39 -0
  184. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compression_manager.h +65 -0
  185. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +45 -22
  186. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +7 -4
  187. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +22 -5
  188. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +28 -3
  189. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +143 -38
  190. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +4 -3
  191. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +80 -32
  192. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.h +51 -2
  193. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +23 -1
  194. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +305 -15
  195. package/deps/rocksdb/rocksdb/env/env.cc +32 -2
  196. package/deps/rocksdb/rocksdb/env/env_encryption.cc +0 -2
  197. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +2 -4
  198. package/deps/rocksdb/rocksdb/env/env_posix.cc +4 -2
  199. package/deps/rocksdb/rocksdb/env/env_test.cc +0 -1
  200. package/deps/rocksdb/rocksdb/env/fs_posix.cc +20 -11
  201. package/deps/rocksdb/rocksdb/env/fs_readonly.h +0 -2
  202. package/deps/rocksdb/rocksdb/env/fs_remap.cc +0 -2
  203. package/deps/rocksdb/rocksdb/env/fs_remap.h +0 -2
  204. package/deps/rocksdb/rocksdb/env/io_posix.cc +6 -4
  205. package/deps/rocksdb/rocksdb/env/io_posix.h +3 -2
  206. package/deps/rocksdb/rocksdb/env/mock_env.cc +0 -1
  207. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +2 -2
  208. package/deps/rocksdb/rocksdb/file/delete_scheduler.h +0 -2
  209. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +0 -2
  210. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +30 -21
  211. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +16 -0
  212. package/deps/rocksdb/rocksdb/file/file_util.cc +32 -14
  213. package/deps/rocksdb/rocksdb/file/file_util.h +22 -5
  214. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +229 -76
  215. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +21 -12
  216. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +10 -7
  217. package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +12 -8
  218. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +1 -2
  219. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +0 -2
  220. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +3 -3
  221. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +598 -0
  222. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_iterator.h +36 -0
  223. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +70 -11
  224. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +232 -11
  225. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +1 -1
  226. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +3 -1
  227. package/deps/rocksdb/rocksdb/include/rocksdb/compression_type.h +149 -15
  228. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +17 -2
  229. package/deps/rocksdb/rocksdb/include/rocksdb/data_structure.h +132 -34
  230. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +158 -79
  231. package/deps/rocksdb/rocksdb/include/rocksdb/db_bench_tool.h +2 -1
  232. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +4 -5
  233. package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +1 -3
  234. package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +5 -0
  235. package/deps/rocksdb/rocksdb/include/rocksdb/external_table.h +275 -0
  236. package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +2 -1
  237. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +50 -5
  238. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +10 -0
  239. package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +13 -0
  240. package/deps/rocksdb/rocksdb/include/rocksdb/ldb_tool.h +0 -1
  241. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +5 -2
  242. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +13 -0
  243. package/deps/rocksdb/rocksdb/include/rocksdb/multi_scan.h +237 -0
  244. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +230 -39
  245. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +15 -0
  246. package/deps/rocksdb/rocksdb/include/rocksdb/perf_level.h +31 -11
  247. package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +41 -0
  248. package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +1 -1
  249. package/deps/rocksdb/rocksdb/include/rocksdb/sst_dump_tool.h +0 -1
  250. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +5 -1
  251. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +0 -1
  252. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +18 -3
  253. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +2 -0
  254. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +20 -8
  255. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +19 -2
  256. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -1
  257. package/deps/rocksdb/rocksdb/include/rocksdb/tool_hooks.h +124 -0
  258. package/deps/rocksdb/rocksdb/include/rocksdb/trace_record.h +1 -0
  259. package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +26 -1
  260. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backup_engine.h +55 -6
  261. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/debug.h +3 -5
  262. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_mirror.h +0 -2
  263. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +1 -2
  264. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/memory_util.h +0 -1
  265. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +1 -2
  266. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +0 -1
  267. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/secondary_index.h +96 -8
  268. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/secondary_index_faiss.h +117 -0
  269. package/deps/rocksdb/rocksdb/{utilities/secondary_index/faiss_ivf_index.h → include/rocksdb/utilities/secondary_index_simple.h} +11 -14
  270. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +26 -11
  271. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +16 -3
  272. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +0 -2
  273. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +63 -7
  274. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db_mutex.h +0 -1
  275. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +28 -12
  276. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +3 -3
  277. package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +0 -2
  278. package/deps/rocksdb/rocksdb/logging/event_logger_test.cc +1 -2
  279. package/deps/rocksdb/rocksdb/memory/memory_allocator_impl.h +1 -1
  280. package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +0 -1
  281. package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +0 -1
  282. package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +3 -1
  283. package/deps/rocksdb/rocksdb/memtable/skiplist.h +2 -2
  284. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +2 -4
  285. package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +69 -8
  286. package/deps/rocksdb/rocksdb/memtable/wbwi_memtable.cc +32 -9
  287. package/deps/rocksdb/rocksdb/memtable/wbwi_memtable.h +58 -45
  288. package/deps/rocksdb/rocksdb/monitoring/histogram.h +1 -1
  289. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +5 -3
  290. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +5 -0
  291. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +1 -1
  292. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +3 -2
  293. package/deps/rocksdb/rocksdb/options/cf_options.cc +44 -13
  294. package/deps/rocksdb/rocksdb/options/cf_options.h +21 -7
  295. package/deps/rocksdb/rocksdb/options/configurable.cc +5 -5
  296. package/deps/rocksdb/rocksdb/options/configurable_test.h +1 -2
  297. package/deps/rocksdb/rocksdb/options/customizable.cc +0 -1
  298. package/deps/rocksdb/rocksdb/options/customizable_test.cc +4 -11
  299. package/deps/rocksdb/rocksdb/options/db_options.cc +18 -15
  300. package/deps/rocksdb/rocksdb/options/db_options.h +2 -2
  301. package/deps/rocksdb/rocksdb/options/options.cc +296 -305
  302. package/deps/rocksdb/rocksdb/options/options_helper.cc +188 -62
  303. package/deps/rocksdb/rocksdb/options/options_helper.h +3 -3
  304. package/deps/rocksdb/rocksdb/options/options_parser.cc +2 -4
  305. package/deps/rocksdb/rocksdb/options/options_parser.h +0 -1
  306. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +17 -4
  307. package/deps/rocksdb/rocksdb/options/options_test.cc +101 -76
  308. package/deps/rocksdb/rocksdb/port/lang.h +2 -1
  309. package/deps/rocksdb/rocksdb/port/port_posix.cc +2 -1
  310. package/deps/rocksdb/rocksdb/port/stack_trace.cc +5 -4
  311. package/deps/rocksdb/rocksdb/port/win/env_win.cc +3 -2
  312. package/deps/rocksdb/rocksdb/port/win/xpress_win.cc +99 -1
  313. package/deps/rocksdb/rocksdb/port/win/xpress_win.h +6 -0
  314. package/deps/rocksdb/rocksdb/src.mk +17 -11
  315. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +0 -1
  316. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +1094 -929
  317. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +6 -19
  318. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +76 -22
  319. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +2 -0
  320. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +221 -131
  321. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +12 -9
  322. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +23 -24
  323. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +38 -38
  324. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +7 -4
  325. package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +5 -5
  326. package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +10 -12
  327. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +6 -4
  328. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +35 -43
  329. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +2 -1
  330. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +1 -1
  331. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +1 -2
  332. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +0 -4
  333. package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +0 -1
  334. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +3 -3
  335. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +3 -3
  336. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +4 -4
  337. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +1 -1
  338. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +4 -5
  339. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +4 -4
  340. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +37 -35
  341. package/deps/rocksdb/rocksdb/table/block_fetcher.h +11 -7
  342. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +4 -3
  343. package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +31 -5
  344. package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.h +2 -1
  345. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +0 -1
  346. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +0 -1
  347. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +0 -1
  348. package/deps/rocksdb/rocksdb/table/external_table.cc +483 -0
  349. package/deps/rocksdb/rocksdb/table/format.cc +62 -44
  350. package/deps/rocksdb/rocksdb/table/format.h +35 -12
  351. package/deps/rocksdb/rocksdb/table/internal_iterator.h +3 -13
  352. package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +8 -0
  353. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +6 -0
  354. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +150 -141
  355. package/deps/rocksdb/rocksdb/table/meta_blocks.h +5 -0
  356. package/deps/rocksdb/rocksdb/table/multiget_context.h +3 -2
  357. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +8 -0
  358. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +0 -1
  359. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +0 -2
  360. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.h +0 -2
  361. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +0 -1
  362. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +6 -6
  363. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +0 -1
  364. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +86 -7
  365. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +88 -2
  366. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +0 -1
  367. package/deps/rocksdb/rocksdb/table/table_builder.h +10 -1
  368. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +3 -2
  369. package/deps/rocksdb/rocksdb/table/table_test.cc +899 -22
  370. package/deps/rocksdb/rocksdb/test_util/testutil.cc +3 -4
  371. package/deps/rocksdb/rocksdb/test_util/testutil.h +132 -1
  372. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +0 -1
  373. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +0 -2
  374. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +163 -77
  375. package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +0 -2
  376. package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +0 -1
  377. package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +0 -1
  378. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +120 -52
  379. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +1 -0
  380. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -1
  381. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +0 -2
  382. package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.cc +2 -2
  383. package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.h +0 -2
  384. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +2 -1
  385. package/deps/rocksdb/rocksdb/tools/tool_hooks.cc +94 -0
  386. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +0 -1
  387. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.h +0 -1
  388. package/deps/rocksdb/rocksdb/trace_replay/io_tracer.cc +1 -1
  389. package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +2 -1
  390. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +3 -5
  391. package/deps/rocksdb/rocksdb/util/async_file_reader.cc +1 -1
  392. package/deps/rocksdb/rocksdb/util/async_file_reader.h +15 -8
  393. package/deps/rocksdb/rocksdb/util/auto_skip_compressor.cc +131 -0
  394. package/deps/rocksdb/rocksdb/util/auto_skip_compressor.h +90 -0
  395. package/deps/rocksdb/rocksdb/util/autovector.h +1 -1
  396. package/deps/rocksdb/rocksdb/util/autovector_test.cc +2 -2
  397. package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +0 -2
  398. package/deps/rocksdb/rocksdb/util/compression.cc +936 -4
  399. package/deps/rocksdb/rocksdb/util/compression.h +348 -232
  400. package/deps/rocksdb/rocksdb/util/compression_test.cc +229 -0
  401. package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +10 -10
  402. package/deps/rocksdb/rocksdb/util/crc32c_ppc.c +1 -0
  403. package/deps/rocksdb/rocksdb/util/data_structure.cc +2 -0
  404. package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +1 -3
  405. package/deps/rocksdb/rocksdb/util/ppc-opcode.h +5 -5
  406. package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +108 -0
  407. package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +67 -0
  408. package/deps/rocksdb/rocksdb/util/slice_test.cc +83 -0
  409. package/deps/rocksdb/rocksdb/util/string_util.cc +0 -2
  410. package/deps/rocksdb/rocksdb/util/string_util.h +10 -0
  411. package/deps/rocksdb/rocksdb/util/thread_operation.h +2 -1
  412. package/deps/rocksdb/rocksdb/util/udt_util.cc +18 -5
  413. package/deps/rocksdb/rocksdb/util/udt_util.h +10 -7
  414. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +650 -154
  415. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +438 -144
  416. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +0 -1
  417. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +0 -1
  418. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_gc_stats.h +0 -1
  419. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +16 -17
  420. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +2 -1
  421. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +0 -1
  422. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +0 -1
  423. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +7 -8
  424. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +4 -3
  425. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.h +0 -1
  426. package/deps/rocksdb/rocksdb/utilities/cache_dump_load.cc +0 -1
  427. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +2 -2
  428. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +1 -1
  429. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +0 -48
  430. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +0 -1
  431. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.h +0 -1
  432. package/deps/rocksdb/rocksdb/utilities/debug.cc +7 -14
  433. package/deps/rocksdb/rocksdb/utilities/env_mirror.cc +0 -1
  434. package/deps/rocksdb/rocksdb/utilities/env_mirror_test.cc +0 -2
  435. package/deps/rocksdb/rocksdb/utilities/env_timed.cc +0 -1
  436. package/deps/rocksdb/rocksdb/utilities/env_timed_test.cc +0 -2
  437. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +5 -3
  438. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +10 -9
  439. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +0 -1
  440. package/deps/rocksdb/rocksdb/utilities/memory/memory_util.cc +0 -1
  441. package/deps/rocksdb/rocksdb/utilities/memory_allocators.h +1 -0
  442. package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +0 -2
  443. package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +0 -1
  444. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +0 -1
  445. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +0 -1
  446. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +0 -2
  447. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +0 -2
  448. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.cc +0 -1
  449. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +0 -2
  450. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table.h +0 -2
  451. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_evictable.h +0 -2
  452. package/deps/rocksdb/rocksdb/utilities/persistent_cache/lrulist.h +0 -2
  453. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.h +0 -2
  454. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.cc +0 -1
  455. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +0 -2
  456. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +0 -1
  457. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +0 -2
  458. package/deps/rocksdb/rocksdb/utilities/secondary_index/faiss_ivf_index.cc +183 -32
  459. package/deps/rocksdb/rocksdb/utilities/secondary_index/faiss_ivf_index_test.cc +258 -12
  460. package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_helper.h +33 -0
  461. package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_iterator.cc +99 -0
  462. package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_mixin.h +280 -120
  463. package/deps/rocksdb/rocksdb/utilities/secondary_index/simple_secondary_index.cc +79 -0
  464. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +52 -16
  465. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.h +10 -6
  466. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector_test.cc +55 -0
  467. package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.cc +0 -1
  468. package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.cc +0 -2
  469. package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.h +0 -1
  470. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +37 -12
  471. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +2 -0
  472. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +0 -2
  473. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +0 -2
  474. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +1 -1
  475. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/db.h +1 -1
  476. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +1 -1
  477. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc +2 -1
  478. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +2 -2
  479. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +0 -1
  480. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.h +0 -2
  481. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +1 -3
  482. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +36 -10
  483. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +5 -7
  484. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +4 -5
  485. package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +1 -4
  486. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +1 -2
  487. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.cc +0 -2
  488. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.h +0 -1
  489. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +1118 -37
  490. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +4 -7
  491. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +0 -2
  492. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.h +0 -2
  493. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +3 -3
  494. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +0 -1
  495. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +0 -2
  496. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +1 -2
  497. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +1 -2
  498. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +0 -1
  499. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +0 -3
  500. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +125 -127
  501. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +45 -23
  502. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +54 -22
  503. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +477 -58
  504. package/deps/rocksdb/rocksdb.gyp +5 -0
  505. package/index.js +47 -2
  506. package/package.json +8 -1
  507. package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
  508. package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
@@ -630,7 +630,8 @@ class VersionStorageInfo {
630
630
  const Slice& largest_user_key,
631
631
  int last_level, int last_l0_idx);
632
632
 
633
- Env::WriteLifeTimeHint CalculateSSTWriteHint(int level) const;
633
+ Env::WriteLifeTimeHint CalculateSSTWriteHint(
634
+ int level, CompactionStyleSet compaction_style_set) const;
634
635
 
635
636
  const Comparator* user_comparator() const { return user_comparator_; }
636
637
 
@@ -703,13 +704,6 @@ class VersionStorageInfo {
703
704
  // file that is not yet compacted
704
705
  std::vector<int> next_file_to_compact_by_size_;
705
706
 
706
- // Only the first few entries of files_by_compaction_pri_ are sorted.
707
- // There is no need to sort all the files because it is likely
708
- // that on a running system, we need to look at only the first
709
- // few largest files because a new version is created every few
710
- // seconds/minutes (because of concurrent compactions).
711
- static const size_t number_of_files_to_sort_ = 50;
712
-
713
707
  // This vector contains list of files marked for compaction and also not
714
708
  // currently being compacted. It is protected by DB mutex. It is calculated in
715
709
  // ComputeCompactionScore(). Used by Leveled and Universal Compaction.
@@ -965,8 +959,7 @@ class Version {
965
959
  // Loads some stats information from files (if update_stats is set) and
966
960
  // populates derived data structures. Call without mutex held. It needs to be
967
961
  // called before appending the version to the version set.
968
- void PrepareAppend(const MutableCFOptions& mutable_cf_options,
969
- const ReadOptions& read_options, bool update_stats);
962
+ void PrepareAppend(const ReadOptions& read_options, bool update_stats);
970
963
 
971
964
  // Reference count management (so Versions do not disappear out from
972
965
  // under live iterators)
@@ -1001,17 +994,21 @@ class Version {
1001
994
  const FileMetaData* file_meta,
1002
995
  const std::string* fname = nullptr) const;
1003
996
 
1004
- // REQUIRES: lock is held
1005
997
  // On success, *props will be populated with all SSTables' table properties.
1006
998
  // The keys of `props` are the sst file name, the values of `props` are the
1007
999
  // tables' properties, represented as std::shared_ptr.
1008
1000
  Status GetPropertiesOfAllTables(const ReadOptions& read_options,
1009
- TablePropertiesCollection* props);
1001
+ TablePropertiesCollection* props) const;
1010
1002
  Status GetPropertiesOfAllTables(const ReadOptions& read_options,
1011
- TablePropertiesCollection* props, int level);
1003
+ TablePropertiesCollection* props,
1004
+ int level) const;
1012
1005
  Status GetPropertiesOfTablesInRange(const ReadOptions& read_options,
1013
1006
  const autovector<UserKeyRange>& ranges,
1014
1007
  TablePropertiesCollection* props) const;
1008
+ Status GetPropertiesOfTablesByLevel(
1009
+ const ReadOptions& read_options,
1010
+ std::vector<std::unique_ptr<TablePropertiesCollection>>* props_by_level)
1011
+ const;
1015
1012
 
1016
1013
  // Print summary of range delete tombstones in SST files into out_str,
1017
1014
  // with maximum max_entries_to_print entries printed out.
@@ -1146,7 +1143,7 @@ class Version {
1146
1143
  bool use_async_io_;
1147
1144
 
1148
1145
  Version(ColumnFamilyData* cfd, VersionSet* vset, const FileOptions& file_opt,
1149
- MutableCFOptions mutable_cf_options,
1146
+ const MutableCFOptions& mutable_cf_options,
1150
1147
  const std::shared_ptr<IOTracer>& io_tracer,
1151
1148
  uint64_t version_number = 0,
1152
1149
  EpochNumberRequirement epoch_number_requirement =
@@ -1182,6 +1179,9 @@ class AtomicGroupReadBuffer {
1182
1179
  // VersionSet is the collection of versions of all the column families of the
1183
1180
  // database. Each database owns one VersionSet. A VersionSet has access to all
1184
1181
  // column families via ColumnFamilySet, i.e. set of the column families.
1182
+ // `unchanging` means the LSM tree structure of the column families will not
1183
+ // change during the lifetime of this VersionSet (true for read-only instance,
1184
+ // but false for secondary instance or writable DB).
1185
1185
  class VersionSet {
1186
1186
  public:
1187
1187
  VersionSet(const std::string& dbname, const ImmutableDBOptions* db_options,
@@ -1192,7 +1192,7 @@ class VersionSet {
1192
1192
  const std::shared_ptr<IOTracer>& io_tracer,
1193
1193
  const std::string& db_id, const std::string& db_session_id,
1194
1194
  const std::string& daily_offpeak_time_utc,
1195
- ErrorHandler* const error_handler, const bool read_only);
1195
+ ErrorHandler* error_handler, bool unchanging);
1196
1196
  // No copying allowed
1197
1197
  VersionSet(const VersionSet&) = delete;
1198
1198
  void operator=(const VersionSet&) = delete;
@@ -1207,60 +1207,52 @@ class VersionSet {
1207
1207
  FSDirectory* dir_contains_current_file, bool new_descriptor_log = false,
1208
1208
  const ColumnFamilyOptions* column_family_options = nullptr) {
1209
1209
  ColumnFamilyData* default_cf = GetColumnFamilySet()->GetDefault();
1210
- const MutableCFOptions* cf_options =
1211
- default_cf->GetLatestMutableCFOptions();
1212
- return LogAndApply(default_cf, *cf_options, read_options, write_options,
1213
- edit, mu, dir_contains_current_file, new_descriptor_log,
1210
+ return LogAndApply(default_cf, read_options, write_options, edit, mu,
1211
+ dir_contains_current_file, new_descriptor_log,
1214
1212
  column_family_options);
1215
1213
  }
1216
1214
 
1217
1215
  // Apply *edit to the current version to form a new descriptor that
1218
1216
  // is both saved to persistent state and installed as the new
1219
1217
  // current version. Will release *mu while actually writing to the file.
1220
- // column_family_options has to be set if edit is column family add
1218
+ // column_family_options has to be set if edit is column family add.
1221
1219
  // REQUIRES: *mu is held on entry.
1222
1220
  // REQUIRES: no other thread concurrently calls LogAndApply()
1223
1221
  Status LogAndApply(
1224
- ColumnFamilyData* column_family_data,
1225
- const MutableCFOptions& mutable_cf_options,
1226
- const ReadOptions& read_options, const WriteOptions& write_options,
1227
- VersionEdit* edit, InstrumentedMutex* mu,
1228
- FSDirectory* dir_contains_current_file, bool new_descriptor_log = false,
1222
+ ColumnFamilyData* column_family_data, const ReadOptions& read_options,
1223
+ const WriteOptions& write_options, VersionEdit* edit,
1224
+ InstrumentedMutex* mu, FSDirectory* dir_contains_current_file,
1225
+ bool new_descriptor_log = false,
1229
1226
  const ColumnFamilyOptions* column_family_options = nullptr,
1230
- const std::function<void(const Status&)>& manifest_wcb = {}) {
1227
+ const std::function<void(const Status&)>& manifest_wcb = {},
1228
+ const std::function<Status()>& pre_cb = {}) {
1231
1229
  autovector<ColumnFamilyData*> cfds;
1232
1230
  cfds.emplace_back(column_family_data);
1233
- autovector<const MutableCFOptions*> mutable_cf_options_list;
1234
- mutable_cf_options_list.emplace_back(&mutable_cf_options);
1235
1231
  autovector<autovector<VersionEdit*>> edit_lists;
1236
1232
  autovector<VersionEdit*> edit_list;
1237
1233
  edit_list.emplace_back(edit);
1238
1234
  edit_lists.emplace_back(edit_list);
1239
- return LogAndApply(cfds, mutable_cf_options_list, read_options,
1240
- write_options, edit_lists, mu, dir_contains_current_file,
1241
- new_descriptor_log, column_family_options,
1242
- {manifest_wcb});
1235
+ return LogAndApply(cfds, read_options, write_options, edit_lists, mu,
1236
+ dir_contains_current_file, new_descriptor_log,
1237
+ column_family_options, {manifest_wcb}, pre_cb);
1243
1238
  }
1244
1239
  // The batch version. If edit_list.size() > 1, caller must ensure that
1245
1240
  // no edit in the list column family add or drop
1246
1241
  Status LogAndApply(
1247
- ColumnFamilyData* column_family_data,
1248
- const MutableCFOptions& mutable_cf_options,
1249
- const ReadOptions& read_options, const WriteOptions& write_options,
1242
+ ColumnFamilyData* column_family_data, const ReadOptions& read_options,
1243
+ const WriteOptions& write_options,
1250
1244
  const autovector<VersionEdit*>& edit_list, InstrumentedMutex* mu,
1251
1245
  FSDirectory* dir_contains_current_file, bool new_descriptor_log = false,
1252
1246
  const ColumnFamilyOptions* column_family_options = nullptr,
1253
- const std::function<void(const Status&)>& manifest_wcb = {}) {
1247
+ const std::function<void(const Status&)>& manifest_wcb = {},
1248
+ const std::function<Status()>& pre_cb = {}) {
1254
1249
  autovector<ColumnFamilyData*> cfds;
1255
1250
  cfds.emplace_back(column_family_data);
1256
- autovector<const MutableCFOptions*> mutable_cf_options_list;
1257
- mutable_cf_options_list.emplace_back(&mutable_cf_options);
1258
1251
  autovector<autovector<VersionEdit*>> edit_lists;
1259
1252
  edit_lists.emplace_back(edit_list);
1260
- return LogAndApply(cfds, mutable_cf_options_list, read_options,
1261
- write_options, edit_lists, mu, dir_contains_current_file,
1262
- new_descriptor_log, column_family_options,
1263
- {manifest_wcb});
1253
+ return LogAndApply(cfds, read_options, write_options, edit_lists, mu,
1254
+ dir_contains_current_file, new_descriptor_log,
1255
+ column_family_options, {manifest_wcb}, pre_cb);
1264
1256
  }
1265
1257
 
1266
1258
  // The across-multi-cf batch version. If edit_lists contain more than
@@ -1268,20 +1260,22 @@ class VersionSet {
1268
1260
  // family manipulation.
1269
1261
  virtual Status LogAndApply(
1270
1262
  const autovector<ColumnFamilyData*>& cfds,
1271
- const autovector<const MutableCFOptions*>& mutable_cf_options_list,
1272
1263
  const ReadOptions& read_options, const WriteOptions& write_options,
1273
1264
  const autovector<autovector<VersionEdit*>>& edit_lists,
1274
1265
  InstrumentedMutex* mu, FSDirectory* dir_contains_current_file,
1275
1266
  bool new_descriptor_log = false,
1276
1267
  const ColumnFamilyOptions* new_cf_options = nullptr,
1277
- const std::vector<std::function<void(const Status&)>>& manifest_wcbs =
1278
- {});
1268
+ const std::vector<std::function<void(const Status&)>>& manifest_wcbs = {},
1269
+ const std::function<Status()>& pre_cb = {});
1279
1270
 
1280
1271
  void WakeUpWaitingManifestWriters();
1281
1272
 
1282
1273
  // Recover the last saved descriptor (MANIFEST) from persistent storage.
1283
- // If read_only == true, Recover() will not complain if some column families
1284
- // are not opened
1274
+ // Unlike `unchanging` on the VersionSet, `read_only` here and in other
1275
+ // functions below refers to the CF receiving no writes or modifications
1276
+ // through this VersionSet, but could through external manifest updates
1277
+ // etc. Thus, `read_only=true` for secondary instances as well as read-only
1278
+ // instances.
1285
1279
  Status Recover(const std::vector<ColumnFamilyDescriptor>& column_families,
1286
1280
  bool read_only = false, std::string* db_id = nullptr,
1287
1281
  bool no_error_if_files_missing = false, bool is_retry = false,
@@ -1359,6 +1353,8 @@ class VersionSet {
1359
1353
  return min_log_number_to_keep_.load();
1360
1354
  }
1361
1355
 
1356
+ bool unchanging() const { return unchanging_; }
1357
+
1362
1358
  // Allocate and return a new file number
1363
1359
  uint64_t NewFileNumber() { return next_file_number_.fetch_add(1); }
1364
1360
 
@@ -1580,17 +1576,18 @@ class VersionSet {
1580
1576
  void TEST_CreateAndAppendVersion(ColumnFamilyData* cfd) {
1581
1577
  assert(cfd);
1582
1578
 
1583
- const auto& mutable_cf_options = *cfd->GetLatestMutableCFOptions();
1584
- Version* const version =
1585
- new Version(cfd, this, file_options_, mutable_cf_options, io_tracer_);
1579
+ Version* const version = new Version(
1580
+ cfd, this, file_options_, cfd->GetLatestMutableCFOptions(), io_tracer_);
1586
1581
 
1587
1582
  constexpr bool update_stats = false;
1588
1583
  // TODO: plumb Env::IOActivity, Env::IOPriority
1589
1584
  const ReadOptions read_options;
1590
- version->PrepareAppend(mutable_cf_options, read_options, update_stats);
1585
+ version->PrepareAppend(read_options, update_stats);
1591
1586
  AppendVersion(cfd, version);
1592
1587
  }
1593
1588
 
1589
+ bool& TEST_unchanging() { return const_cast<bool&>(unchanging_); }
1590
+
1594
1591
  protected:
1595
1592
  struct ManifestWriter;
1596
1593
 
@@ -1603,7 +1600,8 @@ class VersionSet {
1603
1600
 
1604
1601
  struct LogReporter : public log::Reader::Reporter {
1605
1602
  Status* status;
1606
- void Corruption(size_t /*bytes*/, const Status& s) override {
1603
+ void Corruption(size_t /*bytes*/, const Status& s,
1604
+ uint64_t /*log_number*/ = kMaxSequenceNumber) override {
1607
1605
  if (status->ok()) {
1608
1606
  *status = s;
1609
1607
  }
@@ -1642,7 +1640,7 @@ class VersionSet {
1642
1640
 
1643
1641
  ColumnFamilyData* CreateColumnFamily(const ColumnFamilyOptions& cf_options,
1644
1642
  const ReadOptions& read_options,
1645
- const VersionEdit* edit);
1643
+ const VersionEdit* edit, bool read_only);
1646
1644
 
1647
1645
  Status VerifyFileMetadata(const ReadOptions& read_options,
1648
1646
  ColumnFamilyData* cfd, const std::string& fpath,
@@ -1739,7 +1737,7 @@ class VersionSet {
1739
1737
  VersionEdit* edit, SequenceNumber* max_last_sequence,
1740
1738
  InstrumentedMutex* mu);
1741
1739
 
1742
- const bool read_only_;
1740
+ const bool unchanging_;
1743
1741
  bool closed_;
1744
1742
  };
1745
1743
 
@@ -1798,14 +1796,13 @@ class ReactiveVersionSet : public VersionSet {
1798
1796
 
1799
1797
  Status LogAndApply(
1800
1798
  const autovector<ColumnFamilyData*>& /*cfds*/,
1801
- const autovector<const MutableCFOptions*>& /*mutable_cf_options_list*/,
1802
1799
  const ReadOptions& /* read_options */,
1803
1800
  const WriteOptions& /* write_options */,
1804
1801
  const autovector<autovector<VersionEdit*>>& /*edit_lists*/,
1805
1802
  InstrumentedMutex* /*mu*/, FSDirectory* /*dir_contains_current_file*/,
1806
1803
  bool /*new_descriptor_log*/, const ColumnFamilyOptions* /*new_cf_option*/,
1807
- const std::vector<std::function<void(const Status&)>>& /*manifest_wcbs*/)
1808
- override {
1804
+ const std::vector<std::function<void(const Status&)>>& /*manifest_wcbs*/,
1805
+ const std::function<Status()>& /*pre_cb*/) override {
1809
1806
  return Status::NotSupported("not supported in reactive mode");
1810
1807
  }
1811
1808
 
@@ -26,6 +26,7 @@
26
26
  #include "test_util/mock_time_env.h"
27
27
  #include "test_util/testharness.h"
28
28
  #include "test_util/testutil.h"
29
+ #include "util/defer.h"
29
30
  #include "util/string_util.h"
30
31
 
31
32
  namespace ROCKSDB_NAMESPACE {
@@ -1408,8 +1409,8 @@ class VersionSetTestBase {
1408
1409
  Status LogAndApplyToDefaultCF(VersionEdit& edit) {
1409
1410
  mutex_.Lock();
1410
1411
  Status s = versions_->LogAndApply(
1411
- versions_->GetColumnFamilySet()->GetDefault(), mutable_cf_options_,
1412
- read_options_, write_options_, &edit, &mutex_, nullptr);
1412
+ versions_->GetColumnFamilySet()->GetDefault(), read_options_,
1413
+ write_options_, &edit, &mutex_, nullptr);
1413
1414
  mutex_.Unlock();
1414
1415
  return s;
1415
1416
  }
@@ -1422,8 +1423,8 @@ class VersionSetTestBase {
1422
1423
  }
1423
1424
  mutex_.Lock();
1424
1425
  Status s = versions_->LogAndApply(
1425
- versions_->GetColumnFamilySet()->GetDefault(), mutable_cf_options_,
1426
- read_options_, write_options_, vedits, &mutex_, nullptr);
1426
+ versions_->GetColumnFamilySet()->GetDefault(), read_options_,
1427
+ write_options_, vedits, &mutex_, nullptr);
1427
1428
  mutex_.Unlock();
1428
1429
  return s;
1429
1430
  }
@@ -1434,9 +1435,8 @@ class VersionSetTestBase {
1434
1435
  mutex_.Lock();
1435
1436
  VersionEdit dummy;
1436
1437
  ASSERT_OK(versions_->LogAndApply(
1437
- versions_->GetColumnFamilySet()->GetDefault(), mutable_cf_options_,
1438
- read_options_, write_options_, &dummy, &mutex_, db_directory,
1439
- new_descriptor_log));
1438
+ versions_->GetColumnFamilySet()->GetDefault(), read_options_,
1439
+ write_options_, &dummy, &mutex_, db_directory, new_descriptor_log));
1440
1440
  mutex_.Unlock();
1441
1441
  }
1442
1442
 
@@ -1452,8 +1452,7 @@ class VersionSetTestBase {
1452
1452
  cf_options.persist_user_defined_timestamps);
1453
1453
  Status s;
1454
1454
  mutex_.Lock();
1455
- s = versions_->LogAndApply(/*column_family_data=*/nullptr,
1456
- MutableCFOptions(cf_options), read_options_,
1455
+ s = versions_->LogAndApply(/*column_family_data=*/nullptr, read_options_,
1457
1456
  write_options_, &new_cf, &mutex_,
1458
1457
  /*db_directory=*/nullptr,
1459
1458
  /*new_descriptor_log=*/false, &cf_options);
@@ -1510,11 +1509,9 @@ TEST_F(VersionSetTest, SameColumnFamilyGroupCommit) {
1510
1509
  edits.emplace_back(VersionEdit());
1511
1510
  }
1512
1511
  autovector<ColumnFamilyData*> cfds;
1513
- autovector<const MutableCFOptions*> all_mutable_cf_options;
1514
1512
  autovector<autovector<VersionEdit*>> edit_lists;
1515
1513
  for (int i = 0; i != kGroupSize; ++i) {
1516
1514
  cfds.emplace_back(versions_->GetColumnFamilySet()->GetDefault());
1517
- all_mutable_cf_options.emplace_back(&mutable_cf_options_);
1518
1515
  autovector<VersionEdit*> edit_list;
1519
1516
  edit_list.emplace_back(&edits[i]);
1520
1517
  edit_lists.emplace_back(edit_list);
@@ -1531,9 +1528,8 @@ TEST_F(VersionSetTest, SameColumnFamilyGroupCommit) {
1531
1528
  });
1532
1529
  SyncPoint::GetInstance()->EnableProcessing();
1533
1530
  mutex_.Lock();
1534
- Status s =
1535
- versions_->LogAndApply(cfds, all_mutable_cf_options, read_options,
1536
- write_options, edit_lists, &mutex_, nullptr);
1531
+ Status s = versions_->LogAndApply(cfds, read_options, write_options,
1532
+ edit_lists, &mutex_, nullptr);
1537
1533
  mutex_.Unlock();
1538
1534
  EXPECT_OK(s);
1539
1535
  EXPECT_EQ(kGroupSize - 1, count);
@@ -1734,8 +1730,8 @@ TEST_F(VersionSetTest, ObsoleteBlobFile) {
1734
1730
 
1735
1731
  mutex_.Lock();
1736
1732
  Status s = versions_->LogAndApply(
1737
- versions_->GetColumnFamilySet()->GetDefault(), mutable_cf_options_,
1738
- read_options_, write_options_, &edit, &mutex_, nullptr);
1733
+ versions_->GetColumnFamilySet()->GetDefault(), read_options_,
1734
+ write_options_, &edit, &mutex_, nullptr);
1739
1735
  mutex_.Unlock();
1740
1736
 
1741
1737
  ASSERT_OK(s);
@@ -1910,7 +1906,7 @@ TEST_F(VersionSetTest, WalAddition) {
1910
1906
  &write_buffer_manager_, &write_controller_,
1911
1907
  /*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
1912
1908
  /*db_id=*/"", /*db_session_id=*/"", /*daily_offpeak_time_utc=*/"",
1913
- /*error_handler=*/nullptr, /*read_only=*/false));
1909
+ /*error_handler=*/nullptr, /*unchanging=*/false));
1914
1910
  ASSERT_OK(new_versions->Recover(column_families_, /*read_only=*/false));
1915
1911
  const auto& wals = new_versions->GetWalSet().GetWals();
1916
1912
  ASSERT_EQ(wals.size(), 1);
@@ -1978,7 +1974,7 @@ TEST_F(VersionSetTest, WalCloseWithoutSync) {
1978
1974
  &write_buffer_manager_, &write_controller_,
1979
1975
  /*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
1980
1976
  /*db_id=*/"", /*db_session_id=*/"", /*daily_offpeak_time_utc=*/"",
1981
- /*error_handler=*/nullptr, /*read_only=*/false));
1977
+ /*error_handler=*/nullptr, /*unchanging=*/false));
1982
1978
  ASSERT_OK(new_versions->Recover(column_families_, false));
1983
1979
  const auto& wals = new_versions->GetWalSet().GetWals();
1984
1980
  ASSERT_EQ(wals.size(), 2);
@@ -2032,7 +2028,7 @@ TEST_F(VersionSetTest, WalDeletion) {
2032
2028
  &write_buffer_manager_, &write_controller_,
2033
2029
  /*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
2034
2030
  /*db_id=*/"", /*db_session_id=*/"", /*daily_offpeak_time_utc=*/"",
2035
- /*error_handler=*/nullptr, /*read_only=*/false));
2031
+ /*error_handler=*/nullptr, /*unchanging=*/false));
2036
2032
  ASSERT_OK(new_versions->Recover(column_families_, false));
2037
2033
  const auto& wals = new_versions->GetWalSet().GetWals();
2038
2034
  ASSERT_EQ(wals.size(), 1);
@@ -2071,7 +2067,7 @@ TEST_F(VersionSetTest, WalDeletion) {
2071
2067
  &write_buffer_manager_, &write_controller_,
2072
2068
  /*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
2073
2069
  /*db_id=*/"", /*db_session_id=*/"", /*daily_offpeak_time_utc=*/"",
2074
- /*error_handler=*/nullptr, /*read_only=*/false));
2070
+ /*error_handler=*/nullptr, /*unchanging=*/false));
2075
2071
  ASSERT_OK(new_versions->Recover(column_families_, false));
2076
2072
  const auto& wals = new_versions->GetWalSet().GetWals();
2077
2073
  ASSERT_EQ(wals.size(), 1);
@@ -2192,7 +2188,7 @@ TEST_F(VersionSetTest, DeleteWalsBeforeNonExistingWalNumber) {
2192
2188
  &write_buffer_manager_, &write_controller_,
2193
2189
  /*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
2194
2190
  /*db_id=*/"", /*db_session_id=*/"", /*daily_offpeak_time_utc=*/"",
2195
- /*error_handler=*/nullptr, /*read_only=*/false));
2191
+ /*error_handler=*/nullptr, /*unchanging=*/false));
2196
2192
  ASSERT_OK(new_versions->Recover(column_families_, false));
2197
2193
  const auto& wals = new_versions->GetWalSet().GetWals();
2198
2194
  ASSERT_EQ(wals.size(), 1);
@@ -2229,7 +2225,7 @@ TEST_F(VersionSetTest, DeleteAllWals) {
2229
2225
  &write_buffer_manager_, &write_controller_,
2230
2226
  /*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
2231
2227
  /*db_id=*/"", /*db_session_id=*/"", /*daily_offpeak_time_utc=*/"",
2232
- /*error_handler=*/nullptr, /*read_only=*/false));
2228
+ /*error_handler=*/nullptr, /*unchanging=*/false));
2233
2229
  ASSERT_OK(new_versions->Recover(column_families_, false));
2234
2230
  const auto& wals = new_versions->GetWalSet().GetWals();
2235
2231
  ASSERT_EQ(wals.size(), 0);
@@ -2272,7 +2268,7 @@ TEST_F(VersionSetTest, AtomicGroupWithWalEdits) {
2272
2268
  &write_buffer_manager_, &write_controller_,
2273
2269
  /*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
2274
2270
  /*db_id=*/"", /*db_session_id=*/"", /*daily_offpeak_time_utc=*/"",
2275
- /*error_handler=*/nullptr, /*read_only=*/false));
2271
+ /*error_handler=*/nullptr, /*unchanging=*/false));
2276
2272
  std::string db_id;
2277
2273
  ASSERT_OK(
2278
2274
  new_versions->Recover(column_families_, /*read_only=*/false, &db_id));
@@ -2425,7 +2421,6 @@ class VersionSetWithTimestampTest : public VersionSetTest {
2425
2421
  options.comparator = test::BytewiseComparatorWithU64TsWrapper();
2426
2422
  cfd_ = CreateColumnFamily(kNewCfName, options);
2427
2423
  EXPECT_NE(nullptr, cfd_);
2428
- EXPECT_NE(nullptr, cfd_->GetLatestMutableCFOptions());
2429
2424
  column_families_.emplace_back(kNewCfName, options);
2430
2425
  }
2431
2426
 
@@ -2453,7 +2448,7 @@ class VersionSetWithTimestampTest : public VersionSetTest {
2453
2448
  &write_buffer_manager_, &write_controller_,
2454
2449
  /*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
2455
2450
  /*db_id=*/"", /*db_session_id=*/"", /*daily_offpeak_time_utc=*/"",
2456
- /*error_handler=*/nullptr, /*read_only=*/false));
2451
+ /*error_handler=*/nullptr, /*unchanging=*/false));
2457
2452
  ASSERT_OK(vset->Recover(column_families_, /*read_only=*/false,
2458
2453
  /*db_id=*/nullptr));
2459
2454
  for (auto* cfd : *(vset->GetColumnFamilySet())) {
@@ -2475,9 +2470,8 @@ class VersionSetWithTimestampTest : public VersionSetTest {
2475
2470
 
2476
2471
  Status s;
2477
2472
  mutex_.Lock();
2478
- s = versions_->LogAndApply(cfd_, *(cfd_->GetLatestMutableCFOptions()),
2479
- read_options_, write_options_, edits_, &mutex_,
2480
- nullptr);
2473
+ s = versions_->LogAndApply(cfd_, read_options_, write_options_, edits_,
2474
+ &mutex_, nullptr);
2481
2475
  mutex_.Unlock();
2482
2476
  ASSERT_OK(s);
2483
2477
  VerifyFullHistoryTsLow(*std::max_element(ts_lbs.begin(), ts_lbs.end()));
@@ -3370,9 +3364,8 @@ TEST_P(VersionSetTestDropOneCF, HandleDroppedColumnFamilyInAtomicGroup) {
3370
3364
  cfd_to_drop->Ref();
3371
3365
  drop_cf_edit.SetColumnFamily(cfd_to_drop->GetID());
3372
3366
  mutex_.Lock();
3373
- Status s = versions_->LogAndApply(
3374
- cfd_to_drop, *cfd_to_drop->GetLatestMutableCFOptions(), read_options,
3375
- write_options, &drop_cf_edit, &mutex_, nullptr);
3367
+ Status s = versions_->LogAndApply(cfd_to_drop, read_options, write_options,
3368
+ &drop_cf_edit, &mutex_, nullptr);
3376
3369
  mutex_.Unlock();
3377
3370
  ASSERT_OK(s);
3378
3371
 
@@ -3380,7 +3373,6 @@ TEST_P(VersionSetTestDropOneCF, HandleDroppedColumnFamilyInAtomicGroup) {
3380
3373
  uint32_t remaining = kAtomicGroupSize;
3381
3374
  size_t i = 0;
3382
3375
  autovector<ColumnFamilyData*> cfds;
3383
- autovector<const MutableCFOptions*> mutable_cf_options_list;
3384
3376
  autovector<autovector<VersionEdit*>> edit_lists;
3385
3377
  for (const auto& cf_name : non_default_cf_names) {
3386
3378
  auto cfd = (cf_name != cf_to_drop_name)
@@ -3388,7 +3380,6 @@ TEST_P(VersionSetTestDropOneCF, HandleDroppedColumnFamilyInAtomicGroup) {
3388
3380
  : cfd_to_drop;
3389
3381
  ASSERT_NE(nullptr, cfd);
3390
3382
  cfds.push_back(cfd);
3391
- mutable_cf_options_list.emplace_back(cfd->GetLatestMutableCFOptions());
3392
3383
  edits[i].SetColumnFamily(cfd->GetID());
3393
3384
  edits[i].SetLogNumber(0);
3394
3385
  edits[i].SetNextFile(2);
@@ -3421,8 +3412,8 @@ TEST_P(VersionSetTestDropOneCF, HandleDroppedColumnFamilyInAtomicGroup) {
3421
3412
  });
3422
3413
  SyncPoint::GetInstance()->EnableProcessing();
3423
3414
  mutex_.Lock();
3424
- s = versions_->LogAndApply(cfds, mutable_cf_options_list, read_options,
3425
- write_options, edit_lists, &mutex_, nullptr);
3415
+ s = versions_->LogAndApply(cfds, read_options, write_options, edit_lists,
3416
+ &mutex_, nullptr);
3426
3417
  mutex_.Unlock();
3427
3418
  ASSERT_OK(s);
3428
3419
  ASSERT_EQ(1, called);
@@ -3759,6 +3750,8 @@ TEST_P(VersionSetTestEmptyDb, OpenCompleteManifest) {
3759
3750
  }
3760
3751
  std::string db_id;
3761
3752
  bool has_missing_table_file = false;
3753
+ SaveAndRestore<bool> override_unchanging(&versions_->TEST_unchanging(),
3754
+ read_only);
3762
3755
  s = versions_->TryRecoverFromOneManifest(manifest_path, column_families,
3763
3756
  read_only, &db_id,
3764
3757
  &has_missing_table_file);
@@ -43,9 +43,8 @@ class OfflineManifestWriter {
43
43
  // Use `mutex` to imitate a locked DB mutex when calling `LogAndApply()`.
44
44
  InstrumentedMutex mutex;
45
45
  mutex.Lock();
46
- Status s = versions_.LogAndApply(cfd, *cfd->GetLatestMutableCFOptions(),
47
- read_options, write_options, edit, &mutex,
48
- dir_contains_current_file,
46
+ Status s = versions_.LogAndApply(cfd, read_options, write_options, edit,
47
+ &mutex, dir_contains_current_file,
49
48
  false /* new_descriptor_log */);
50
49
  mutex.Unlock();
51
50
  return s;
@@ -34,7 +34,6 @@
34
34
 
35
35
  namespace ROCKSDB_NAMESPACE {
36
36
 
37
-
38
37
  Status WalManager::DeleteFile(const std::string& fname, uint64_t number) {
39
38
  auto s = env_->DeleteFile(wal_dir_ + "/" + fname);
40
39
  if (s.ok()) {
@@ -284,6 +283,7 @@ void WalManager::ArchiveWALFile(const std::string& fname, uint64_t number) {
284
283
  // The sync point below is used in (DBTest,TransactionLogIteratorRace)
285
284
  TEST_SYNC_POINT("WalManager::PurgeObsoleteFiles:1");
286
285
  Status s = env_->RenameFile(fname, archived_log_name);
286
+ IGNORE_STATUS_IF_ERROR(s);
287
287
  // The sync point below is used in (DBTest,TransactionLogIteratorRace)
288
288
  TEST_SYNC_POINT("WalManager::PurgeObsoleteFiles:2");
289
289
  // The sync point below is used in
@@ -469,7 +469,8 @@ Status WalManager::ReadFirstLine(const std::string& fname,
469
469
 
470
470
  Status* status;
471
471
  bool ignore_error; // true if db_options_.paranoid_checks==false
472
- void Corruption(size_t bytes, const Status& s) override {
472
+ void Corruption(size_t bytes, const Status& s,
473
+ uint64_t /*log_number*/ = kMaxSequenceNumber) override {
473
474
  ROCKS_LOG_WARN(info_log, "[WalManager] %s%s: dropping %d bytes; %s",
474
475
  (this->ignore_error ? "(ignoring error) " : ""), fname,
475
476
  static_cast<int>(bytes), s.ToString().c_str());
@@ -29,7 +29,6 @@
29
29
 
30
30
  namespace ROCKSDB_NAMESPACE {
31
31
 
32
-
33
32
  // WAL manager provides the abstraction for reading the WAL files as a single
34
33
  // unit. Internally, it opens and reads the files using Reader or Writer
35
34
  // abstraction.
@@ -3,7 +3,6 @@
3
3
  // COPYING file in the root directory) and Apache 2.0 License
4
4
  // (found in the LICENSE.Apache file in the root directory).
5
5
 
6
-
7
6
  #include "db/wal_manager.h"
8
7
 
9
8
  #include <map>
@@ -4,6 +4,7 @@
4
4
  // (found in the LICENSE.Apache file in the root directory).
5
5
 
6
6
  #include "rocksdb/wide_columns.h"
7
+
7
8
  #include "db/wide/wide_column_serialization.h"
8
9
 
9
10
  namespace ROCKSDB_NAMESPACE {
@@ -551,9 +551,6 @@ Status WriteBatchInternal::Iterate(const WriteBatch* wb,
551
551
 
552
552
  if (LIKELY(!s.IsTryAgain())) {
553
553
  last_was_try_again = false;
554
- tag = 0;
555
- column_family = 0; // default
556
-
557
554
  s = ReadRecordFromWriteBatch(&input, &tag, &column_family, &key, &value,
558
555
  &blob, &xid, &write_unix_time);
559
556
  if (!s.ok()) {
@@ -815,6 +812,12 @@ WriteBatchInternal::GetColumnFamilyIdAndTimestampSize(
815
812
  s = Status::InvalidArgument("Default cf timestamp size mismatch");
816
813
  }
817
814
  }
815
+ auto* cfd =
816
+ static_cast_with_check<ColumnFamilyHandleImpl>(column_family)->cfd();
817
+ if (cfd && cfd->ioptions().disallow_memtable_writes) {
818
+ s = Status::InvalidArgument(
819
+ "This column family has disallow_memtable_writes=true");
820
+ }
818
821
  } else if (b->default_cf_ts_sz_ > 0) {
819
822
  ts_sz = b->default_cf_ts_sz_;
820
823
  }
@@ -836,6 +839,12 @@ Status CheckColumnFamilyTimestampSize(ColumnFamilyHandle* column_family,
836
839
  if (cf_ts_sz != ts.size()) {
837
840
  return Status::InvalidArgument("timestamp size mismatch");
838
841
  }
842
+ auto* cfd =
843
+ static_cast_with_check<ColumnFamilyHandleImpl>(column_family)->cfd();
844
+ if (cfd && cfd->ioptions().disallow_memtable_writes) {
845
+ return Status::InvalidArgument(
846
+ "This column family has disallow_memtable_writes=true");
847
+ }
839
848
  return Status::OK();
840
849
  }
841
850
  } // anonymous namespace
@@ -1885,7 +1894,6 @@ Status WriteBatch::VerifyChecksum() const {
1885
1894
  // ReadRecordFromWriteBatch
1886
1895
  key.clear();
1887
1896
  value.clear();
1888
- column_family = 0;
1889
1897
  s = ReadRecordFromWriteBatch(&input, &tag, &column_family, &key, &value,
1890
1898
  &blob, &xid, /*write_unix_time=*/nullptr);
1891
1899
  if (!s.ok()) {
@@ -2185,6 +2193,13 @@ class MemTableInserter : public WriteBatch::Handler {
2185
2193
  }
2186
2194
  return false;
2187
2195
  }
2196
+ auto* current = cf_mems_->current();
2197
+ if (current && current->ioptions().disallow_memtable_writes) {
2198
+ *s = Status::InvalidArgument(
2199
+ "This column family has disallow_memtable_writes=true");
2200
+ return false;
2201
+ }
2202
+
2188
2203
  if (recovering_log_number_ != 0 &&
2189
2204
  recovering_log_number_ < cf_mems_->GetLogNumber()) {
2190
2205
  // This is true only in recovery environment (recovering_log_number_ is
@@ -2928,10 +2943,9 @@ class MemTableInserter : public WriteBatch::Handler {
2928
2943
  auto* cfd = cf_mems_->current();
2929
2944
 
2930
2945
  assert(cfd);
2931
- assert(cfd->ioptions());
2932
2946
 
2933
2947
  const size_t size_to_maintain = static_cast<size_t>(
2934
- cfd->ioptions()->max_write_buffer_size_to_maintain);
2948
+ cfd->ioptions().max_write_buffer_size_to_maintain);
2935
2949
 
2936
2950
  if (size_to_maintain > 0) {
2937
2951
  MemTableList* const imm = cfd->imm();
@@ -3196,11 +3210,11 @@ Status WriteBatchInternal::InsertInto(
3196
3210
  ColumnFamilyMemTables* memtables, FlushScheduler* flush_scheduler,
3197
3211
  TrimHistoryScheduler* trim_history_scheduler,
3198
3212
  bool ignore_missing_column_families, uint64_t recovery_log_number, DB* db,
3199
- bool concurrent_memtable_writes, bool seq_per_batch, bool batch_per_txn) {
3213
+ bool seq_per_batch, bool batch_per_txn) {
3200
3214
  MemTableInserter inserter(
3201
3215
  sequence, memtables, flush_scheduler, trim_history_scheduler,
3202
3216
  ignore_missing_column_families, recovery_log_number, db,
3203
- concurrent_memtable_writes, nullptr /* prot_info */,
3217
+ /*concurrent_memtable_writes=*/false, nullptr /* prot_info */,
3204
3218
  nullptr /*has_valid_writes*/, seq_per_batch, batch_per_txn);
3205
3219
  for (auto w : write_group) {
3206
3220
  if (w->CallbackFailed()) {