@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
@@ -0,0 +1,99 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+ // This source code is licensed under both the GPLv2 (found in the
3
+ // COPYING file in the root directory) and Apache 2.0 License
4
+ // (found in the LICENSE.Apache file in the root directory).
5
+
6
+ #include "rocksdb/utilities/secondary_index.h"
7
+ #include "utilities/secondary_index/secondary_index_helper.h"
8
+
9
+ namespace ROCKSDB_NAMESPACE {
10
+
11
+ SecondaryIndexIterator::SecondaryIndexIterator(
12
+ const SecondaryIndex* index, std::unique_ptr<Iterator>&& underlying_it)
13
+ : index_(index), underlying_it_(std::move(underlying_it)) {
14
+ assert(index_);
15
+ assert(underlying_it_);
16
+ }
17
+
18
+ bool SecondaryIndexIterator::Valid() const {
19
+ return status_.ok() && underlying_it_->Valid() &&
20
+ underlying_it_->key().starts_with(prefix_);
21
+ }
22
+
23
+ Status SecondaryIndexIterator::status() const {
24
+ if (!status_.ok()) {
25
+ return status_;
26
+ }
27
+
28
+ return underlying_it_->status();
29
+ }
30
+
31
+ void SecondaryIndexIterator::Seek(const Slice& target) {
32
+ status_ = Status::OK();
33
+
34
+ std::variant<Slice, std::string> prefix = target;
35
+
36
+ const Status s = index_->FinalizeSecondaryKeyPrefix(&prefix);
37
+ if (!s.ok()) {
38
+ status_ = s;
39
+ return;
40
+ }
41
+
42
+ prefix_ = SecondaryIndexHelper::AsString(prefix);
43
+
44
+ // FIXME: this works for BytewiseComparator but not for all comparators in
45
+ // general
46
+ underlying_it_->Seek(prefix_);
47
+ }
48
+
49
+ void SecondaryIndexIterator::Next() {
50
+ assert(Valid());
51
+
52
+ underlying_it_->Next();
53
+ }
54
+
55
+ void SecondaryIndexIterator::Prev() {
56
+ assert(Valid());
57
+
58
+ underlying_it_->Prev();
59
+ }
60
+
61
+ bool SecondaryIndexIterator::PrepareValue() {
62
+ assert(Valid());
63
+
64
+ return underlying_it_->PrepareValue();
65
+ }
66
+
67
+ Slice SecondaryIndexIterator::key() const {
68
+ assert(Valid());
69
+
70
+ Slice key = underlying_it_->key();
71
+ key.remove_prefix(prefix_.size());
72
+
73
+ return key;
74
+ }
75
+
76
+ Slice SecondaryIndexIterator::value() const {
77
+ assert(Valid());
78
+
79
+ return underlying_it_->value();
80
+ }
81
+
82
+ const WideColumns& SecondaryIndexIterator::columns() const {
83
+ assert(Valid());
84
+
85
+ return underlying_it_->columns();
86
+ }
87
+
88
+ Slice SecondaryIndexIterator::timestamp() const {
89
+ assert(Valid());
90
+
91
+ return underlying_it_->timestamp();
92
+ }
93
+
94
+ Status SecondaryIndexIterator::GetProperty(std::string prop_name,
95
+ std::string* prop) const {
96
+ return underlying_it_->GetProperty(std::move(prop_name), prop);
97
+ }
98
+
99
+ } // namespace ROCKSDB_NAMESPACE
@@ -17,7 +17,7 @@
17
17
  #include "rocksdb/utilities/secondary_index.h"
18
18
  #include "rocksdb/wide_columns.h"
19
19
  #include "util/autovector.h"
20
- #include "util/overload.h"
20
+ #include "utilities/secondary_index/secondary_index_helper.h"
21
21
 
22
22
  namespace ROCKSDB_NAMESPACE {
23
23
 
@@ -35,15 +35,23 @@ class SecondaryIndexMixin : public Txn {
35
35
  }
36
36
 
37
37
  using Txn::Put;
38
- Status Put(ColumnFamilyHandle* /* column_family */, const Slice& /* key */,
39
- const Slice& /* value */,
40
- const bool /* assume_tracked */ = false) override {
41
- return Status::NotSupported("Put with secondary indices not yet supported");
38
+ Status Put(ColumnFamilyHandle* column_family, const Slice& key,
39
+ const Slice& value, const bool assume_tracked = false) override {
40
+ return PerformWithSavePoint([&]() {
41
+ const bool do_validate = !assume_tracked;
42
+ return PutWithSecondaryIndices(column_family, key, value, do_validate);
43
+ });
42
44
  }
43
- Status Put(ColumnFamilyHandle* /* column_family */,
44
- const SliceParts& /* key */, const SliceParts& /* value */,
45
- const bool /* assume_tracked */ = false) override {
46
- return Status::NotSupported("Put with secondary indices not yet supported");
45
+ Status Put(ColumnFamilyHandle* column_family, const SliceParts& key,
46
+ const SliceParts& value,
47
+ const bool assume_tracked = false) override {
48
+ std::string key_str;
49
+ const Slice key_slice(key, &key_str);
50
+
51
+ std::string value_str;
52
+ const Slice value_slice(value, &value_str);
53
+
54
+ return Put(column_family, key_slice, value_slice, assume_tracked);
47
55
  }
48
56
 
49
57
  Status PutEntity(ColumnFamilyHandle* column_family, const Slice& key,
@@ -65,44 +73,54 @@ class SecondaryIndexMixin : public Txn {
65
73
  }
66
74
 
67
75
  using Txn::Delete;
68
- Status Delete(ColumnFamilyHandle* /* column_family */, const Slice& /* key */,
69
- const bool /* assume_tracked */ = false) override {
70
- return Status::NotSupported(
71
- "Delete with secondary indices not yet supported");
76
+ Status Delete(ColumnFamilyHandle* column_family, const Slice& key,
77
+ const bool assume_tracked = false) override {
78
+ return PerformWithSavePoint([&]() {
79
+ const bool do_validate = !assume_tracked;
80
+ return DeleteWithSecondaryIndices(column_family, key, do_validate);
81
+ });
72
82
  }
73
- Status Delete(ColumnFamilyHandle* /* column_family */,
74
- const SliceParts& /* key */,
75
- const bool /* assume_tracked */ = false) override {
76
- return Status::NotSupported(
77
- "Delete with secondary indices not yet supported");
83
+ Status Delete(ColumnFamilyHandle* column_family, const SliceParts& key,
84
+ const bool assume_tracked = false) override {
85
+ std::string key_str;
86
+ const Slice key_slice(key, &key_str);
87
+
88
+ return Delete(column_family, key_slice, assume_tracked);
78
89
  }
79
90
 
80
91
  using Txn::SingleDelete;
81
- Status SingleDelete(ColumnFamilyHandle* /* column_family */,
82
- const Slice& /* key */,
83
- const bool /* assume_tracked */ = false) override {
84
- return Status::NotSupported(
85
- "SingleDelete with secondary indices not yet supported");
92
+ Status SingleDelete(ColumnFamilyHandle* column_family, const Slice& key,
93
+ const bool assume_tracked = false) override {
94
+ return PerformWithSavePoint([&]() {
95
+ const bool do_validate = !assume_tracked;
96
+ return SingleDeleteWithSecondaryIndices(column_family, key, do_validate);
97
+ });
86
98
  }
87
- Status SingleDelete(ColumnFamilyHandle* /* column_family */,
88
- const SliceParts& /* key */,
89
- const bool /* assume_tracked */ = false) override {
90
- return Status::NotSupported(
91
- "SingleDelete with secondary indices not yet supported");
99
+ Status SingleDelete(ColumnFamilyHandle* column_family, const SliceParts& key,
100
+ const bool assume_tracked = false) override {
101
+ std::string key_str;
102
+ const Slice key_slice(key, &key_str);
103
+
104
+ return SingleDelete(column_family, key_slice, assume_tracked);
92
105
  }
93
106
 
94
107
  using Txn::PutUntracked;
95
- Status PutUntracked(ColumnFamilyHandle* /* column_family */,
96
- const Slice& /* key */,
97
- const Slice& /* value */) override {
98
- return Status::NotSupported(
99
- "PutUntracked with secondary indices not yet supported");
108
+ Status PutUntracked(ColumnFamilyHandle* column_family, const Slice& key,
109
+ const Slice& value) override {
110
+ return PerformWithSavePoint([&]() {
111
+ constexpr bool do_validate = false;
112
+ return PutWithSecondaryIndices(column_family, key, value, do_validate);
113
+ });
100
114
  }
101
- Status PutUntracked(ColumnFamilyHandle* /* column_family */,
102
- const SliceParts& /* key */,
103
- const SliceParts& /* value */) override {
104
- return Status::NotSupported(
105
- "PutUntracked with secondary indices not yet supported");
115
+ Status PutUntracked(ColumnFamilyHandle* column_family, const SliceParts& key,
116
+ const SliceParts& value) override {
117
+ std::string key_str;
118
+ const Slice key_slice(key, &key_str);
119
+
120
+ std::string value_str;
121
+ const Slice value_slice(value, &value_str);
122
+
123
+ return PutUntracked(column_family, key_slice, value_slice);
106
124
  }
107
125
 
108
126
  Status PutEntityUntracked(ColumnFamilyHandle* column_family, const Slice& key,
@@ -123,22 +141,28 @@ class SecondaryIndexMixin : public Txn {
123
141
  }
124
142
 
125
143
  using Txn::DeleteUntracked;
126
- Status DeleteUntracked(ColumnFamilyHandle* /* column_family */,
127
- const Slice& /* key */) override {
128
- return Status::NotSupported(
129
- "DeleteUntracked with secondary indices not yet supported");
144
+ Status DeleteUntracked(ColumnFamilyHandle* column_family,
145
+ const Slice& key) override {
146
+ return PerformWithSavePoint([&]() {
147
+ constexpr bool do_validate = false;
148
+ return DeleteWithSecondaryIndices(column_family, key, do_validate);
149
+ });
130
150
  }
131
- Status DeleteUntracked(ColumnFamilyHandle* /* column_family */,
132
- const SliceParts& /* key */) override {
133
- return Status::NotSupported(
134
- "DeleteUntracked with secondary indices not yet supported");
151
+ Status DeleteUntracked(ColumnFamilyHandle* column_family,
152
+ const SliceParts& key) override {
153
+ std::string key_str;
154
+ const Slice key_slice(key, &key_str);
155
+
156
+ return DeleteUntracked(column_family, key_slice);
135
157
  }
136
158
 
137
159
  using Txn::SingleDeleteUntracked;
138
- Status SingleDeleteUntracked(ColumnFamilyHandle* /* column_family */,
139
- const Slice& /* key */) override {
140
- return Status::NotSupported(
141
- "SingleDeleteUntracked with secondary indices not yet supported");
160
+ Status SingleDeleteUntracked(ColumnFamilyHandle* column_family,
161
+ const Slice& key) override {
162
+ return PerformWithSavePoint([&]() {
163
+ constexpr bool do_validate = false;
164
+ return SingleDeleteWithSecondaryIndices(column_family, key, do_validate);
165
+ });
142
166
  }
143
167
 
144
168
  private:
@@ -157,8 +181,9 @@ class SecondaryIndexMixin : public Txn {
157
181
  return updated_column_value_;
158
182
  }
159
183
  Slice primary_column_value() const {
160
- return updated_column_value_.has_value() ? AsSlice(*updated_column_value_)
161
- : previous_column_value_;
184
+ return updated_column_value_.has_value()
185
+ ? SecondaryIndexHelper::AsSlice(*updated_column_value_)
186
+ : previous_column_value_;
162
187
  }
163
188
 
164
189
  private:
@@ -167,33 +192,6 @@ class SecondaryIndexMixin : public Txn {
167
192
  std::optional<std::variant<Slice, std::string>> updated_column_value_;
168
193
  };
169
194
 
170
- static Slice AsSlice(const std::variant<Slice, std::string>& var) {
171
- return std::visit([](const auto& value) -> Slice { return value; }, var);
172
- }
173
-
174
- static std::string AsString(const std::variant<Slice, std::string>& var) {
175
- return std::visit(
176
- overload{
177
- [](const Slice& value) -> std::string { return value.ToString(); },
178
- [](const std::string& value) -> std::string { return value; }},
179
- var);
180
- }
181
-
182
- template <typename Iterator>
183
- static Iterator FindPrimaryColumn(const SecondaryIndex* secondary_index,
184
- ColumnFamilyHandle* column_family,
185
- Iterator begin, Iterator end) {
186
- assert(secondary_index);
187
- assert(column_family);
188
-
189
- if (column_family != secondary_index->GetPrimaryColumnFamily()) {
190
- return end;
191
- }
192
-
193
- return WideColumnsHelper::Find(begin, end,
194
- secondary_index->GetPrimaryColumnName());
195
- }
196
-
197
195
  template <typename Operation>
198
196
  Status PerformWithSavePoint(Operation&& operation) {
199
197
  Txn::SetSavePoint();
@@ -234,19 +232,39 @@ class SecondaryIndexMixin : public Txn {
234
232
 
235
233
  std::variant<Slice, std::string> secondary_key_prefix;
236
234
 
237
- const Status s = secondary_index->GetSecondaryKeyPrefix(
238
- primary_key, existing_primary_column_value, &secondary_key_prefix);
239
- if (!s.ok()) {
240
- return s;
235
+ {
236
+ const Status s = secondary_index->GetSecondaryKeyPrefix(
237
+ primary_key, existing_primary_column_value, &secondary_key_prefix);
238
+ if (!s.ok()) {
239
+ return s;
240
+ }
241
+ }
242
+
243
+ {
244
+ const Status s =
245
+ secondary_index->FinalizeSecondaryKeyPrefix(&secondary_key_prefix);
246
+ if (!s.ok()) {
247
+ return s;
248
+ }
241
249
  }
242
250
 
243
251
  const std::string secondary_key =
244
- AsString(secondary_key_prefix) + primary_key.ToString();
252
+ SecondaryIndexHelper::AsString(secondary_key_prefix) +
253
+ primary_key.ToString();
245
254
 
246
255
  return Txn::SingleDelete(secondary_index->GetSecondaryColumnFamily(),
247
256
  secondary_key);
248
257
  }
249
258
 
259
+ Status AddPrimaryEntry(ColumnFamilyHandle* column_family,
260
+ const Slice& primary_key, const Slice& primary_value) {
261
+ assert(column_family);
262
+
263
+ constexpr bool assume_tracked = true;
264
+
265
+ return Txn::Put(column_family, primary_key, primary_value, assume_tracked);
266
+ }
267
+
250
268
  Status AddPrimaryEntry(ColumnFamilyHandle* column_family,
251
269
  const Slice& primary_key,
252
270
  const WideColumns& primary_columns) {
@@ -274,6 +292,14 @@ class SecondaryIndexMixin : public Txn {
274
292
  }
275
293
  }
276
294
 
295
+ {
296
+ const Status s =
297
+ secondary_index->FinalizeSecondaryKeyPrefix(&secondary_key_prefix);
298
+ if (!s.ok()) {
299
+ return s;
300
+ }
301
+ }
302
+
277
303
  std::optional<std::variant<Slice, std::string>> secondary_value;
278
304
 
279
305
  {
@@ -287,11 +313,14 @@ class SecondaryIndexMixin : public Txn {
287
313
 
288
314
  {
289
315
  const std::string secondary_key =
290
- AsString(secondary_key_prefix) + primary_key.ToString();
316
+ SecondaryIndexHelper::AsString(secondary_key_prefix) +
317
+ primary_key.ToString();
291
318
 
292
- const Status s = Txn::Put(
293
- secondary_index->GetSecondaryColumnFamily(), secondary_key,
294
- secondary_value.has_value() ? AsSlice(*secondary_value) : Slice());
319
+ const Status s =
320
+ Txn::Put(secondary_index->GetSecondaryColumnFamily(), secondary_key,
321
+ secondary_value.has_value()
322
+ ? SecondaryIndexHelper::AsSlice(*secondary_value)
323
+ : Slice());
295
324
  if (!s.ok()) {
296
325
  return s;
297
326
  }
@@ -301,26 +330,20 @@ class SecondaryIndexMixin : public Txn {
301
330
  }
302
331
 
303
332
  Status RemoveSecondaryEntries(ColumnFamilyHandle* column_family,
304
- const Slice& primary_key, bool do_validate) {
333
+ const Slice& primary_key,
334
+ const WideColumns& existing_columns) {
305
335
  assert(column_family);
306
336
 
307
- PinnableWideColumns existing_primary_columns;
308
-
309
- const Status s = GetPrimaryEntryForUpdate(
310
- column_family, primary_key, &existing_primary_columns, do_validate);
311
- if (s.IsNotFound()) {
312
- return Status::OK();
313
- }
314
- if (!s.ok()) {
315
- return s;
316
- }
337
+ for (const auto& secondary_index : *secondary_indices_) {
338
+ assert(secondary_index);
317
339
 
318
- const auto& existing_columns = existing_primary_columns.columns();
340
+ if (secondary_index->GetPrimaryColumnFamily() != column_family) {
341
+ continue;
342
+ }
319
343
 
320
- for (const auto& secondary_index : *secondary_indices_) {
321
- const auto it =
322
- FindPrimaryColumn(secondary_index.get(), column_family,
323
- existing_columns.cbegin(), existing_columns.cend());
344
+ const auto it = WideColumnsHelper::Find(
345
+ existing_columns.cbegin(), existing_columns.cend(),
346
+ secondary_index->GetPrimaryColumnName());
324
347
  if (it == existing_columns.cend()) {
325
348
  continue;
326
349
  }
@@ -335,18 +358,67 @@ class SecondaryIndexMixin : public Txn {
335
358
  return Status::OK();
336
359
  }
337
360
 
361
+ Status UpdatePrimaryColumnValues(ColumnFamilyHandle* column_family,
362
+ const Slice& primary_key,
363
+ Slice& primary_value,
364
+ autovector<IndexData>& applicable_indices) {
365
+ assert(column_family);
366
+ assert(applicable_indices.empty());
367
+
368
+ applicable_indices.reserve(secondary_indices_->size());
369
+
370
+ for (const auto& secondary_index : *secondary_indices_) {
371
+ assert(secondary_index);
372
+
373
+ if (secondary_index->GetPrimaryColumnFamily() != column_family) {
374
+ continue;
375
+ }
376
+
377
+ if (secondary_index->GetPrimaryColumnName() != kDefaultWideColumnName) {
378
+ continue;
379
+ }
380
+
381
+ applicable_indices.emplace_back(
382
+ IndexData(secondary_index.get(), primary_value));
383
+
384
+ auto& index_data = applicable_indices.back();
385
+
386
+ const Status s = secondary_index->UpdatePrimaryColumnValue(
387
+ primary_key, index_data.previous_column_value(),
388
+ &index_data.updated_column_value());
389
+ if (!s.ok()) {
390
+ return s;
391
+ }
392
+
393
+ primary_value = index_data.primary_column_value();
394
+ }
395
+
396
+ return Status::OK();
397
+ }
398
+
338
399
  Status UpdatePrimaryColumnValues(ColumnFamilyHandle* column_family,
339
400
  const Slice& primary_key,
340
401
  WideColumns& primary_columns,
341
402
  autovector<IndexData>& applicable_indices) {
403
+ assert(column_family);
342
404
  assert(applicable_indices.empty());
343
405
 
406
+ // TODO: as an optimization, we can avoid calling SortColumns a second time
407
+ // in WriteBatchInternal::PutEntity
408
+ WideColumnsHelper::SortColumns(primary_columns);
409
+
344
410
  applicable_indices.reserve(secondary_indices_->size());
345
411
 
346
412
  for (const auto& secondary_index : *secondary_indices_) {
347
- const auto it =
348
- FindPrimaryColumn(secondary_index.get(), column_family,
349
- primary_columns.begin(), primary_columns.end());
413
+ assert(secondary_index);
414
+
415
+ if (secondary_index->GetPrimaryColumnFamily() != column_family) {
416
+ continue;
417
+ }
418
+
419
+ const auto it = WideColumnsHelper::Find(
420
+ primary_columns.begin(), primary_columns.end(),
421
+ secondary_index->GetPrimaryColumnName());
350
422
  if (it == primary_columns.end()) {
351
423
  continue;
352
424
  }
@@ -383,10 +455,11 @@ class SecondaryIndexMixin : public Txn {
383
455
  return Status::OK();
384
456
  }
385
457
 
386
- Status PutEntityWithSecondaryIndices(ColumnFamilyHandle* column_family,
387
- const Slice& key,
388
- const WideColumns& columns,
389
- bool do_validate) {
458
+ template <typename Value>
459
+ Status PutWithSecondaryIndicesImpl(ColumnFamilyHandle* column_family,
460
+ const Slice& key,
461
+ const Value& value_or_columns,
462
+ bool do_validate) {
390
463
  // TODO: we could avoid removing and recreating secondary entries for
391
464
  // which neither the secondary key prefix nor the value has changed
392
465
 
@@ -397,21 +470,30 @@ class SecondaryIndexMixin : public Txn {
397
470
  const Slice& primary_key = key;
398
471
 
399
472
  {
400
- const Status s =
401
- RemoveSecondaryEntries(column_family, primary_key, do_validate);
473
+ PinnableWideColumns existing_primary_columns;
474
+
475
+ const Status s = GetPrimaryEntryForUpdate(
476
+ column_family, primary_key, &existing_primary_columns, do_validate);
402
477
  if (!s.ok()) {
403
- return s;
478
+ if (!s.IsNotFound()) {
479
+ return s;
480
+ }
481
+ } else {
482
+ const Status st = RemoveSecondaryEntries(
483
+ column_family, primary_key, existing_primary_columns.columns());
484
+ if (!st.ok()) {
485
+ return st;
486
+ }
404
487
  }
405
488
  }
406
489
 
490
+ auto primary_value_or_columns = value_or_columns;
407
491
  autovector<IndexData> applicable_indices;
408
492
 
409
- WideColumns primary_columns(columns);
410
- WideColumnsHelper::SortColumns(primary_columns);
411
-
412
493
  {
413
- const Status s = UpdatePrimaryColumnValues(
414
- column_family, primary_key, primary_columns, applicable_indices);
494
+ const Status s = UpdatePrimaryColumnValues(column_family, primary_key,
495
+ primary_value_or_columns,
496
+ applicable_indices);
415
497
  if (!s.ok()) {
416
498
  return s;
417
499
  }
@@ -419,7 +501,7 @@ class SecondaryIndexMixin : public Txn {
419
501
 
420
502
  {
421
503
  const Status s =
422
- AddPrimaryEntry(column_family, primary_key, primary_columns);
504
+ AddPrimaryEntry(column_family, primary_key, primary_value_or_columns);
423
505
  if (!s.ok()) {
424
506
  return s;
425
507
  }
@@ -435,6 +517,84 @@ class SecondaryIndexMixin : public Txn {
435
517
  return Status::OK();
436
518
  }
437
519
 
520
+ Status PutWithSecondaryIndices(ColumnFamilyHandle* column_family,
521
+ const Slice& key, const Slice& value,
522
+ bool do_validate) {
523
+ return PutWithSecondaryIndicesImpl(column_family, key, value, do_validate);
524
+ }
525
+
526
+ Status PutEntityWithSecondaryIndices(ColumnFamilyHandle* column_family,
527
+ const Slice& key,
528
+ const WideColumns& columns,
529
+ bool do_validate) {
530
+ return PutWithSecondaryIndicesImpl(column_family, key, columns,
531
+ do_validate);
532
+ }
533
+
534
+ template <typename Operation>
535
+ Status DeleteWithSecondaryIndicesImpl(ColumnFamilyHandle* column_family,
536
+ const Slice& key, bool do_validate,
537
+ Operation&& operation) {
538
+ if (!column_family) {
539
+ column_family = Txn::DefaultColumnFamily();
540
+ }
541
+
542
+ {
543
+ PinnableWideColumns existing_primary_columns;
544
+
545
+ const Status s = GetPrimaryEntryForUpdate(
546
+ column_family, key, &existing_primary_columns, do_validate);
547
+ if (!s.ok()) {
548
+ if (!s.IsNotFound()) {
549
+ return s;
550
+ }
551
+
552
+ return Status::OK();
553
+ } else {
554
+ const Status st = RemoveSecondaryEntries(
555
+ column_family, key, existing_primary_columns.columns());
556
+ if (!st.ok()) {
557
+ return st;
558
+ }
559
+ }
560
+ }
561
+
562
+ {
563
+ const Status s = operation(column_family, key);
564
+ if (!s.ok()) {
565
+ return s;
566
+ }
567
+ }
568
+
569
+ return Status::OK();
570
+ }
571
+
572
+ Status DeleteWithSecondaryIndices(ColumnFamilyHandle* column_family,
573
+ const Slice& key, bool do_validate) {
574
+ return DeleteWithSecondaryIndicesImpl(
575
+ column_family, key, do_validate,
576
+ [&](ColumnFamilyHandle* cfh, const Slice& primary_key) {
577
+ assert(cfh);
578
+
579
+ constexpr bool assume_tracked = true;
580
+
581
+ return Txn::Delete(cfh, primary_key, assume_tracked);
582
+ });
583
+ }
584
+
585
+ Status SingleDeleteWithSecondaryIndices(ColumnFamilyHandle* column_family,
586
+ const Slice& key, bool do_validate) {
587
+ return DeleteWithSecondaryIndicesImpl(
588
+ column_family, key, do_validate,
589
+ [&](ColumnFamilyHandle* cfh, const Slice& primary_key) {
590
+ assert(cfh);
591
+
592
+ constexpr bool assume_tracked = true;
593
+
594
+ return Txn::SingleDelete(cfh, primary_key, assume_tracked);
595
+ });
596
+ }
597
+
438
598
  const std::vector<std::shared_ptr<SecondaryIndex>>* secondary_indices_;
439
599
  };
440
600