@nxtedition/rocksdb 13.5.7 → 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 (509) hide show
  1. package/binding.cc +248 -70
  2. package/binding.gyp +2 -2
  3. package/deps/rocksdb/rocksdb/BUCK +12 -0
  4. package/deps/rocksdb/rocksdb/CMakeLists.txt +7 -0
  5. package/deps/rocksdb/rocksdb/Makefile +28 -23
  6. package/deps/rocksdb/rocksdb/cache/cache.cc +0 -1
  7. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +1 -2
  8. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +43 -39
  9. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +2 -0
  10. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +0 -1
  11. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +2 -3
  12. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +2 -2
  13. package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +1 -3
  14. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +11 -1
  15. package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache_test.cc +13 -5
  16. package/deps/rocksdb/rocksdb/crash_test.mk +61 -15
  17. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +136 -45
  18. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +34 -16
  19. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +10 -7
  20. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +1 -2
  21. package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.h +1 -0
  22. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +12 -9
  23. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +3 -4
  24. package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +2 -2
  25. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +3 -4
  26. package/deps/rocksdb/rocksdb/db/builder.cc +22 -8
  27. package/deps/rocksdb/rocksdb/db/builder.h +5 -4
  28. package/deps/rocksdb/rocksdb/db/c.cc +556 -15
  29. package/deps/rocksdb/rocksdb/db/c_test.c +133 -12
  30. package/deps/rocksdb/rocksdb/db/column_family.cc +114 -50
  31. package/deps/rocksdb/rocksdb/db/column_family.h +53 -36
  32. package/deps/rocksdb/rocksdb/db/column_family_test.cc +6 -6
  33. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +0 -1
  34. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +95 -70
  35. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +71 -51
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +7 -86
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +26 -68
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +0 -122
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +453 -258
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +117 -92
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +0 -1
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +38 -38
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +24 -17
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +34 -45
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +32 -31
  46. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +12 -3
  47. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +1 -1
  48. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +2 -1
  49. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +10 -10
  50. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +2 -1
  51. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +82 -34
  52. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +267 -179
  53. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +4 -1
  54. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +273 -89
  55. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +300 -14
  56. package/deps/rocksdb/rocksdb/db/compaction/compaction_state.cc +4 -4
  57. package/deps/rocksdb/rocksdb/db/compaction/compaction_state.h +2 -2
  58. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +28 -23
  59. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +69 -51
  60. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +522 -245
  61. package/deps/rocksdb/rocksdb/db/convenience.cc +15 -4
  62. package/deps/rocksdb/rocksdb/db/corruption_test.cc +1 -3
  63. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +0 -2
  64. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +196 -17
  65. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +74 -62
  66. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +48 -0
  67. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +682 -250
  68. package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +0 -1
  69. package/deps/rocksdb/rocksdb/db/db_encryption_test.cc +3 -4
  70. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +11 -16
  71. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +57 -0
  72. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +2 -2
  73. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +1 -1
  74. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +540 -490
  75. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +347 -188
  76. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +584 -217
  77. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +13 -9
  78. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +5 -7
  79. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +40 -36
  80. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +1 -3
  81. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +751 -372
  82. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +35 -32
  83. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +24 -2
  84. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +125 -63
  85. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +2 -2
  86. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +311 -196
  87. package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +15 -5
  88. package/deps/rocksdb/rocksdb/db/db_iter.cc +42 -29
  89. package/deps/rocksdb/rocksdb/db/db_iter.h +96 -31
  90. package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +3 -4
  91. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +168 -228
  92. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +454 -0
  93. package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +8 -8
  94. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +0 -1
  95. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +90 -0
  96. package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +60 -2
  97. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +7 -3
  98. package/deps/rocksdb/rocksdb/db/db_options_test.cc +85 -27
  99. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +3 -1
  100. package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +0 -2
  101. package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +114 -2
  102. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +0 -1
  103. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +0 -1
  104. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +51 -3
  105. package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +0 -1
  106. package/deps/rocksdb/rocksdb/db/db_test.cc +325 -18
  107. package/deps/rocksdb/rocksdb/db/db_test2.cc +644 -20
  108. package/deps/rocksdb/rocksdb/db/db_test_util.cc +14 -6
  109. package/deps/rocksdb/rocksdb/db/db_test_util.h +9 -0
  110. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +64 -45
  111. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +203 -14
  112. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +259 -30
  113. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +0 -1
  114. package/deps/rocksdb/rocksdb/db/db_write_test.cc +75 -1
  115. package/deps/rocksdb/rocksdb/db/dbformat.h +70 -6
  116. package/deps/rocksdb/rocksdb/db/deletefile_test.cc +0 -190
  117. package/deps/rocksdb/rocksdb/db/error_handler.cc +22 -7
  118. package/deps/rocksdb/rocksdb/db/error_handler.h +16 -1
  119. package/deps/rocksdb/rocksdb/db/event_helpers.cc +41 -26
  120. package/deps/rocksdb/rocksdb/db/experimental.cc +4 -3
  121. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +464 -78
  122. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +166 -69
  123. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +54 -25
  124. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +1 -3
  125. package/deps/rocksdb/rocksdb/db/flush_job.cc +98 -81
  126. package/deps/rocksdb/rocksdb/db/flush_job.h +4 -9
  127. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +80 -84
  128. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +1 -1
  129. package/deps/rocksdb/rocksdb/db/forward_iterator.h +2 -2
  130. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +12 -19
  131. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +0 -2
  132. package/deps/rocksdb/rocksdb/db/internal_stats.cc +41 -15
  133. package/deps/rocksdb/rocksdb/db/internal_stats.h +63 -52
  134. package/deps/rocksdb/rocksdb/db/job_context.h +59 -24
  135. package/deps/rocksdb/rocksdb/db/listener_test.cc +69 -10
  136. package/deps/rocksdb/rocksdb/db/log_format.h +11 -2
  137. package/deps/rocksdb/rocksdb/db/log_reader.cc +147 -34
  138. package/deps/rocksdb/rocksdb/db/log_reader.h +40 -11
  139. package/deps/rocksdb/rocksdb/db/log_test.cc +16 -3
  140. package/deps/rocksdb/rocksdb/db/log_writer.cc +102 -55
  141. package/deps/rocksdb/rocksdb/db/log_writer.h +21 -2
  142. package/deps/rocksdb/rocksdb/db/malloc_stats.h +0 -2
  143. package/deps/rocksdb/rocksdb/db/memtable.cc +16 -47
  144. package/deps/rocksdb/rocksdb/db/memtable.h +76 -12
  145. package/deps/rocksdb/rocksdb/db/memtable_list.cc +23 -20
  146. package/deps/rocksdb/rocksdb/db/memtable_list.h +9 -11
  147. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +18 -37
  148. package/deps/rocksdb/rocksdb/db/merge_context.h +2 -1
  149. package/deps/rocksdb/rocksdb/db/merge_test.cc +8 -0
  150. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +3 -5
  151. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +15 -7
  152. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.h +6 -3
  153. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +22 -4
  154. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +41 -1
  155. package/deps/rocksdb/rocksdb/db/prefix_test.cc +0 -1
  156. package/deps/rocksdb/rocksdb/db/repair.cc +29 -34
  157. package/deps/rocksdb/rocksdb/db/repair_test.cc +0 -1
  158. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +14 -15
  159. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +1 -3
  160. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +47 -1
  161. package/deps/rocksdb/rocksdb/db/table_cache.cc +3 -3
  162. package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +1 -3
  163. package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +2 -1
  164. package/deps/rocksdb/rocksdb/db/version_builder.cc +2 -2
  165. package/deps/rocksdb/rocksdb/db/version_edit.cc +8 -37
  166. package/deps/rocksdb/rocksdb/db/version_edit.h +32 -1
  167. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +26 -18
  168. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +7 -5
  169. package/deps/rocksdb/rocksdb/db/version_set.cc +282 -197
  170. package/deps/rocksdb/rocksdb/db/version_set.h +54 -57
  171. package/deps/rocksdb/rocksdb/db/version_set_test.cc +28 -35
  172. package/deps/rocksdb/rocksdb/db/version_util.h +2 -3
  173. package/deps/rocksdb/rocksdb/db/wal_manager.cc +3 -2
  174. package/deps/rocksdb/rocksdb/db/wal_manager.h +0 -1
  175. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +0 -1
  176. package/deps/rocksdb/rocksdb/db/wide/wide_columns.cc +1 -0
  177. package/deps/rocksdb/rocksdb/db/write_batch.cc +22 -8
  178. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +5 -4
  179. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +7 -6
  180. package/deps/rocksdb/rocksdb/db/write_callback_test.cc +3 -4
  181. package/deps/rocksdb/rocksdb/db/write_thread.h +3 -3
  182. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +13 -5
  183. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +9 -2
  184. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_service.h +39 -0
  185. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compression_manager.h +65 -0
  186. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +45 -22
  187. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +7 -4
  188. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +22 -5
  189. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +28 -3
  190. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +143 -38
  191. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +4 -3
  192. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +80 -32
  193. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.h +51 -2
  194. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +23 -1
  195. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +305 -15
  196. package/deps/rocksdb/rocksdb/env/env.cc +32 -2
  197. package/deps/rocksdb/rocksdb/env/env_encryption.cc +0 -2
  198. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +2 -4
  199. package/deps/rocksdb/rocksdb/env/env_posix.cc +4 -2
  200. package/deps/rocksdb/rocksdb/env/env_test.cc +0 -1
  201. package/deps/rocksdb/rocksdb/env/fs_posix.cc +20 -11
  202. package/deps/rocksdb/rocksdb/env/fs_readonly.h +0 -2
  203. package/deps/rocksdb/rocksdb/env/fs_remap.cc +0 -2
  204. package/deps/rocksdb/rocksdb/env/fs_remap.h +0 -2
  205. package/deps/rocksdb/rocksdb/env/io_posix.cc +6 -4
  206. package/deps/rocksdb/rocksdb/env/io_posix.h +3 -2
  207. package/deps/rocksdb/rocksdb/env/mock_env.cc +0 -1
  208. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +2 -2
  209. package/deps/rocksdb/rocksdb/file/delete_scheduler.h +0 -2
  210. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +0 -2
  211. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +30 -21
  212. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +16 -0
  213. package/deps/rocksdb/rocksdb/file/file_util.cc +32 -14
  214. package/deps/rocksdb/rocksdb/file/file_util.h +22 -5
  215. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +229 -76
  216. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +21 -12
  217. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +10 -7
  218. package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +12 -8
  219. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +1 -2
  220. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +0 -2
  221. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +3 -3
  222. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +598 -0
  223. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_iterator.h +36 -0
  224. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +70 -11
  225. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +232 -11
  226. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +1 -1
  227. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +3 -1
  228. package/deps/rocksdb/rocksdb/include/rocksdb/compression_type.h +149 -15
  229. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +17 -2
  230. package/deps/rocksdb/rocksdb/include/rocksdb/data_structure.h +132 -34
  231. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +158 -79
  232. package/deps/rocksdb/rocksdb/include/rocksdb/db_bench_tool.h +2 -1
  233. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +4 -5
  234. package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +1 -3
  235. package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +5 -0
  236. package/deps/rocksdb/rocksdb/include/rocksdb/external_table.h +275 -0
  237. package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +2 -1
  238. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +50 -5
  239. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +10 -0
  240. package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +13 -0
  241. package/deps/rocksdb/rocksdb/include/rocksdb/ldb_tool.h +0 -1
  242. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +5 -2
  243. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +13 -0
  244. package/deps/rocksdb/rocksdb/include/rocksdb/multi_scan.h +237 -0
  245. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +230 -39
  246. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +15 -0
  247. package/deps/rocksdb/rocksdb/include/rocksdb/perf_level.h +31 -11
  248. package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +41 -0
  249. package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +1 -1
  250. package/deps/rocksdb/rocksdb/include/rocksdb/sst_dump_tool.h +0 -1
  251. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +5 -1
  252. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +0 -1
  253. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +18 -3
  254. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +2 -0
  255. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +20 -8
  256. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +19 -2
  257. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -1
  258. package/deps/rocksdb/rocksdb/include/rocksdb/tool_hooks.h +124 -0
  259. package/deps/rocksdb/rocksdb/include/rocksdb/trace_record.h +1 -0
  260. package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +26 -1
  261. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backup_engine.h +55 -6
  262. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/debug.h +3 -5
  263. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_mirror.h +0 -2
  264. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +1 -2
  265. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/memory_util.h +0 -1
  266. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +1 -2
  267. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +0 -1
  268. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/secondary_index.h +96 -8
  269. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/secondary_index_faiss.h +117 -0
  270. package/deps/rocksdb/rocksdb/{utilities/secondary_index/faiss_ivf_index.h → include/rocksdb/utilities/secondary_index_simple.h} +11 -14
  271. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +26 -11
  272. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +16 -3
  273. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +0 -2
  274. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +63 -7
  275. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db_mutex.h +0 -1
  276. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +28 -12
  277. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +3 -3
  278. package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +0 -2
  279. package/deps/rocksdb/rocksdb/logging/event_logger_test.cc +1 -2
  280. package/deps/rocksdb/rocksdb/memory/memory_allocator_impl.h +1 -1
  281. package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +0 -1
  282. package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +0 -1
  283. package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +3 -1
  284. package/deps/rocksdb/rocksdb/memtable/skiplist.h +2 -2
  285. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +2 -4
  286. package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +69 -8
  287. package/deps/rocksdb/rocksdb/memtable/wbwi_memtable.cc +32 -9
  288. package/deps/rocksdb/rocksdb/memtable/wbwi_memtable.h +58 -45
  289. package/deps/rocksdb/rocksdb/monitoring/histogram.h +1 -1
  290. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +5 -3
  291. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +5 -0
  292. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +1 -1
  293. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +3 -2
  294. package/deps/rocksdb/rocksdb/options/cf_options.cc +44 -13
  295. package/deps/rocksdb/rocksdb/options/cf_options.h +21 -7
  296. package/deps/rocksdb/rocksdb/options/configurable.cc +5 -5
  297. package/deps/rocksdb/rocksdb/options/configurable_test.h +1 -2
  298. package/deps/rocksdb/rocksdb/options/customizable.cc +0 -1
  299. package/deps/rocksdb/rocksdb/options/customizable_test.cc +4 -11
  300. package/deps/rocksdb/rocksdb/options/db_options.cc +18 -15
  301. package/deps/rocksdb/rocksdb/options/db_options.h +2 -2
  302. package/deps/rocksdb/rocksdb/options/options.cc +296 -305
  303. package/deps/rocksdb/rocksdb/options/options_helper.cc +188 -62
  304. package/deps/rocksdb/rocksdb/options/options_helper.h +3 -3
  305. package/deps/rocksdb/rocksdb/options/options_parser.cc +2 -4
  306. package/deps/rocksdb/rocksdb/options/options_parser.h +0 -1
  307. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +17 -4
  308. package/deps/rocksdb/rocksdb/options/options_test.cc +101 -76
  309. package/deps/rocksdb/rocksdb/port/lang.h +2 -1
  310. package/deps/rocksdb/rocksdb/port/port_posix.cc +2 -1
  311. package/deps/rocksdb/rocksdb/port/stack_trace.cc +5 -4
  312. package/deps/rocksdb/rocksdb/port/win/env_win.cc +3 -2
  313. package/deps/rocksdb/rocksdb/port/win/xpress_win.cc +99 -1
  314. package/deps/rocksdb/rocksdb/port/win/xpress_win.h +6 -0
  315. package/deps/rocksdb/rocksdb/src.mk +17 -11
  316. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +0 -1
  317. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +1094 -929
  318. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +6 -19
  319. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +76 -22
  320. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +2 -0
  321. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +221 -131
  322. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +12 -9
  323. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +23 -24
  324. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +38 -38
  325. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +7 -4
  326. package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +5 -5
  327. package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +10 -12
  328. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +6 -4
  329. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +35 -43
  330. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +2 -1
  331. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +1 -1
  332. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +1 -2
  333. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +0 -4
  334. package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +0 -1
  335. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +3 -3
  336. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +3 -3
  337. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +4 -4
  338. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +1 -1
  339. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +4 -5
  340. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +4 -4
  341. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +37 -35
  342. package/deps/rocksdb/rocksdb/table/block_fetcher.h +11 -7
  343. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +4 -3
  344. package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +31 -5
  345. package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.h +2 -1
  346. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +0 -1
  347. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +0 -1
  348. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +0 -1
  349. package/deps/rocksdb/rocksdb/table/external_table.cc +483 -0
  350. package/deps/rocksdb/rocksdb/table/format.cc +62 -44
  351. package/deps/rocksdb/rocksdb/table/format.h +35 -12
  352. package/deps/rocksdb/rocksdb/table/internal_iterator.h +3 -13
  353. package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +8 -0
  354. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +6 -0
  355. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +150 -141
  356. package/deps/rocksdb/rocksdb/table/meta_blocks.h +5 -0
  357. package/deps/rocksdb/rocksdb/table/multiget_context.h +3 -2
  358. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +8 -0
  359. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +0 -1
  360. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +0 -2
  361. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.h +0 -2
  362. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +0 -1
  363. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +6 -6
  364. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +0 -1
  365. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +86 -7
  366. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +88 -2
  367. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +0 -1
  368. package/deps/rocksdb/rocksdb/table/table_builder.h +10 -1
  369. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +3 -2
  370. package/deps/rocksdb/rocksdb/table/table_test.cc +899 -22
  371. package/deps/rocksdb/rocksdb/test_util/testutil.cc +3 -4
  372. package/deps/rocksdb/rocksdb/test_util/testutil.h +132 -1
  373. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +0 -1
  374. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +0 -2
  375. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +163 -77
  376. package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +0 -2
  377. package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +0 -1
  378. package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +0 -1
  379. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +120 -52
  380. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +1 -0
  381. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -1
  382. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +0 -2
  383. package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.cc +2 -2
  384. package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.h +0 -2
  385. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +2 -1
  386. package/deps/rocksdb/rocksdb/tools/tool_hooks.cc +94 -0
  387. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +0 -1
  388. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.h +0 -1
  389. package/deps/rocksdb/rocksdb/trace_replay/io_tracer.cc +1 -1
  390. package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +2 -1
  391. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +3 -5
  392. package/deps/rocksdb/rocksdb/util/async_file_reader.cc +1 -1
  393. package/deps/rocksdb/rocksdb/util/async_file_reader.h +15 -8
  394. package/deps/rocksdb/rocksdb/util/auto_skip_compressor.cc +131 -0
  395. package/deps/rocksdb/rocksdb/util/auto_skip_compressor.h +90 -0
  396. package/deps/rocksdb/rocksdb/util/autovector.h +1 -1
  397. package/deps/rocksdb/rocksdb/util/autovector_test.cc +2 -2
  398. package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +0 -2
  399. package/deps/rocksdb/rocksdb/util/compression.cc +936 -4
  400. package/deps/rocksdb/rocksdb/util/compression.h +348 -232
  401. package/deps/rocksdb/rocksdb/util/compression_test.cc +229 -0
  402. package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +10 -10
  403. package/deps/rocksdb/rocksdb/util/crc32c_ppc.c +1 -0
  404. package/deps/rocksdb/rocksdb/util/data_structure.cc +2 -0
  405. package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +1 -3
  406. package/deps/rocksdb/rocksdb/util/ppc-opcode.h +5 -5
  407. package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +108 -0
  408. package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +67 -0
  409. package/deps/rocksdb/rocksdb/util/slice_test.cc +83 -0
  410. package/deps/rocksdb/rocksdb/util/string_util.cc +0 -2
  411. package/deps/rocksdb/rocksdb/util/string_util.h +10 -0
  412. package/deps/rocksdb/rocksdb/util/thread_operation.h +2 -1
  413. package/deps/rocksdb/rocksdb/util/udt_util.cc +18 -5
  414. package/deps/rocksdb/rocksdb/util/udt_util.h +10 -7
  415. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +650 -154
  416. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +438 -144
  417. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +0 -1
  418. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +0 -1
  419. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_gc_stats.h +0 -1
  420. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +16 -17
  421. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +2 -1
  422. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +0 -1
  423. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +0 -1
  424. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +7 -8
  425. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +4 -3
  426. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.h +0 -1
  427. package/deps/rocksdb/rocksdb/utilities/cache_dump_load.cc +0 -1
  428. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +2 -2
  429. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +1 -1
  430. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +0 -48
  431. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +0 -1
  432. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.h +0 -1
  433. package/deps/rocksdb/rocksdb/utilities/debug.cc +7 -14
  434. package/deps/rocksdb/rocksdb/utilities/env_mirror.cc +0 -1
  435. package/deps/rocksdb/rocksdb/utilities/env_mirror_test.cc +0 -2
  436. package/deps/rocksdb/rocksdb/utilities/env_timed.cc +0 -1
  437. package/deps/rocksdb/rocksdb/utilities/env_timed_test.cc +0 -2
  438. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +5 -3
  439. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +10 -9
  440. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +0 -1
  441. package/deps/rocksdb/rocksdb/utilities/memory/memory_util.cc +0 -1
  442. package/deps/rocksdb/rocksdb/utilities/memory_allocators.h +1 -0
  443. package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +0 -2
  444. package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +0 -1
  445. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +0 -1
  446. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +0 -1
  447. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +0 -2
  448. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +0 -2
  449. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.cc +0 -1
  450. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +0 -2
  451. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table.h +0 -2
  452. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_evictable.h +0 -2
  453. package/deps/rocksdb/rocksdb/utilities/persistent_cache/lrulist.h +0 -2
  454. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.h +0 -2
  455. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.cc +0 -1
  456. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +0 -2
  457. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +0 -1
  458. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +0 -2
  459. package/deps/rocksdb/rocksdb/utilities/secondary_index/faiss_ivf_index.cc +183 -32
  460. package/deps/rocksdb/rocksdb/utilities/secondary_index/faiss_ivf_index_test.cc +258 -12
  461. package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_helper.h +33 -0
  462. package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_iterator.cc +99 -0
  463. package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_mixin.h +280 -120
  464. package/deps/rocksdb/rocksdb/utilities/secondary_index/simple_secondary_index.cc +79 -0
  465. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +52 -16
  466. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.h +10 -6
  467. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector_test.cc +55 -0
  468. package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.cc +0 -1
  469. package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.cc +0 -2
  470. package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.h +0 -1
  471. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +37 -12
  472. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +2 -0
  473. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +0 -2
  474. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +0 -2
  475. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +1 -1
  476. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/db.h +1 -1
  477. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +1 -1
  478. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc +2 -1
  479. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +2 -2
  480. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +0 -1
  481. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.h +0 -2
  482. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +1 -3
  483. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +36 -10
  484. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +5 -7
  485. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +4 -5
  486. package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +1 -4
  487. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +1 -2
  488. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.cc +0 -2
  489. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.h +0 -1
  490. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +1118 -37
  491. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +4 -7
  492. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +0 -2
  493. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.h +0 -2
  494. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +3 -3
  495. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +0 -1
  496. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +0 -2
  497. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +1 -2
  498. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +1 -2
  499. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +0 -1
  500. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +0 -3
  501. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +125 -127
  502. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +45 -23
  503. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +54 -22
  504. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +477 -58
  505. package/deps/rocksdb/rocksdb.gyp +9 -4
  506. package/index.js +50 -9
  507. package/package.json +8 -1
  508. package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
  509. package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
@@ -163,7 +163,7 @@ class TransactionTestBase : public ::testing::Test {
163
163
  std::vector<ColumnFamilyHandle*>* handles) {
164
164
  std::vector<size_t> compaction_enabled_cf_indices;
165
165
  TransactionDB::PrepareWrap(&options, &cfs, &compaction_enabled_cf_indices);
166
- DB* root_db = nullptr;
166
+ std::unique_ptr<DB> root_db;
167
167
  Options options_copy(options);
168
168
  const bool use_seq_per_batch =
169
169
  txn_db_options.write_policy == WRITE_PREPARED ||
@@ -174,9 +174,8 @@ class TransactionTestBase : public ::testing::Test {
174
174
  Status s = DBImpl::Open(options_copy, dbname, cfs, handles, &root_db,
175
175
  use_seq_per_batch, use_batch_per_txn,
176
176
  /*is_retry=*/false, /*can_retry=*/nullptr);
177
- auto stackable_db = std::make_unique<StackableDB>(root_db);
177
+ auto stackable_db = std::make_unique<StackableDB>(std::move(root_db));
178
178
  if (s.ok()) {
179
- assert(root_db != nullptr);
180
179
  // If WrapStackableDB() returns non-ok, then stackable_db is already
181
180
  // deleted within WrapStackableDB().
182
181
  s = TransactionDB::WrapStackableDB(stackable_db.release(), txn_db_options,
@@ -194,7 +193,7 @@ class TransactionTestBase : public ::testing::Test {
194
193
  TransactionDB::PrepareWrap(&options, &column_families,
195
194
  &compaction_enabled_cf_indices);
196
195
  std::vector<ColumnFamilyHandle*> handles;
197
- DB* root_db = nullptr;
196
+ std::unique_ptr<DB> root_db;
198
197
  Options options_copy(options);
199
198
  const bool use_seq_per_batch =
200
199
  txn_db_options.write_policy == WRITE_PREPARED ||
@@ -206,11 +205,9 @@ class TransactionTestBase : public ::testing::Test {
206
205
  &root_db, use_seq_per_batch, use_batch_per_txn,
207
206
  /*is_retry=*/false, /*can_retry=*/nullptr);
208
207
  if (!s.ok()) {
209
- delete root_db;
210
208
  return s;
211
209
  }
212
- StackableDB* stackable_db = new StackableDB(root_db);
213
- assert(root_db != nullptr);
210
+ StackableDB* stackable_db = new StackableDB(std::move(root_db));
214
211
  assert(handles.size() == 1);
215
212
  s = TransactionDB::WrapStackableDB(stackable_db, txn_db_options,
216
213
  compaction_enabled_cf_indices, handles,
@@ -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 "utilities/transactions/transaction_util.h"
8
7
 
9
8
  #include <cinttypes>
@@ -204,4 +203,3 @@ Status TransactionUtil::CheckKeysForConflicts(DBImpl* db_impl,
204
203
  }
205
204
 
206
205
  } // namespace ROCKSDB_NAMESPACE
207
-
@@ -5,7 +5,6 @@
5
5
 
6
6
  #pragma once
7
7
 
8
-
9
8
  #include <string>
10
9
  #include <unordered_map>
11
10
 
@@ -83,4 +82,3 @@ class TransactionUtil {
83
82
  };
84
83
 
85
84
  } // namespace ROCKSDB_NAMESPACE
86
-
@@ -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 <algorithm>
8
7
  #include <atomic>
9
8
  #include <cinttypes>
@@ -792,7 +791,8 @@ TEST_P(WritePreparedTransactionTest, CheckKeySkipOldMemtable) {
792
791
  const int kAttemptImmMemTable = 1;
793
792
  for (int attempt = kAttemptHistoryMemtable; attempt <= kAttemptImmMemTable;
794
793
  attempt++) {
795
- options.max_write_buffer_number_to_maintain = 3;
794
+ options.max_write_buffer_size_to_maintain =
795
+ 3 * static_cast<int>(options.write_buffer_size);
796
796
  ASSERT_OK(ReOpen());
797
797
 
798
798
  WriteOptions write_options;
@@ -3596,7 +3596,7 @@ TEST_P(WritePreparedTransactionTest, NonAtomicCommitOfDelayedPrepared) {
3596
3596
  ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->DisableProcessing();
3597
3597
  ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->ClearAllCallBacks();
3598
3598
  } // for split_before_mutex
3599
- } // for split_read
3599
+ } // for split_read
3600
3600
  }
3601
3601
 
3602
3602
  // When max evicted seq advances a prepared seq, it involves two updates: i)
@@ -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 "utilities/transactions/write_prepared_txn_db.h"
8
7
 
9
8
  #include <algorithm>
@@ -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 "utilities/transactions/transaction_test.h"
8
7
  #include "utilities/transactions/write_unprepared_txn.h"
9
8
  #include "utilities/transactions/write_unprepared_txn_db.h"
@@ -729,4 +728,3 @@ int main(int argc, char** argv) {
729
728
  ::testing::InitGoogleTest(&argc, argv);
730
729
  return RUN_ALL_TESTS();
731
730
  }
732
-
@@ -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 "utilities/transactions/write_unprepared_txn.h"
8
7
 
9
8
  #include "db/db_impl/db_impl.h"
@@ -375,7 +374,7 @@ Status WriteUnpreparedTxn::FlushWriteBatchToDBInternal(bool prepared) {
375
374
  uint64_t seq_used = kMaxSequenceNumber;
376
375
  // log_number_ should refer to the oldest log containing uncommitted data
377
376
  // from the current transaction. This means that if log_number_ is set,
378
- // WriteImpl should not overwrite that value, so set log_used to nullptr if
377
+ // WriteImpl should not overwrite that value, so set wal_used to nullptr if
379
378
  // log_number_ is already set.
380
379
  s = db_impl_->WriteImpl(write_options, GetWriteBatch()->GetWriteBatch(),
381
380
  /*callback*/ nullptr, /*user_write_cb=*/nullptr,
@@ -5,7 +5,6 @@
5
5
 
6
6
  #pragma once
7
7
 
8
-
9
8
  #include <set>
10
9
 
11
10
  #include "utilities/transactions/write_prepared_txn.h"
@@ -272,7 +271,7 @@ class WriteUnpreparedTxn : public WritePreparedTxn {
272
271
 
273
272
  SavePoint(const std::map<SequenceNumber, size_t>& seqs,
274
273
  ManagedSnapshot* snapshot)
275
- : unprep_seqs_(seqs), snapshot_(snapshot){}
274
+ : unprep_seqs_(seqs), snapshot_(snapshot) {}
276
275
  };
277
276
 
278
277
  // We have 3 data structures holding savepoint information:
@@ -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 "utilities/transactions/write_unprepared_txn_db.h"
8
7
 
9
8
  #include "db/arena_wrapped_db_iter.h"
@@ -3,7 +3,6 @@
3
3
  // Use of this source code is governed by a BSD-style license that can be
4
4
  // found in the LICENSE file. See the AUTHORS file for names of contributors.
5
5
 
6
-
7
6
  #include <map>
8
7
  #include <memory>
9
8
 
@@ -618,7 +617,6 @@ TEST_F(TtlTest, UnregisteredMergeOperator) {
618
617
  public:
619
618
  const char* Name() const override { return "UnregisteredMergeOperator"; }
620
619
  };
621
- options_.fail_if_options_file_error = true;
622
620
  options_.merge_operator = std::make_shared<UnregisteredMergeOperator>();
623
621
  OpenTtl();
624
622
  CloseTtl();
@@ -931,4 +929,3 @@ int main(int argc, char** argv) {
931
929
  ::testing::InitGoogleTest(&argc, argv);
932
930
  return RUN_ALL_TESTS();
933
931
  }
934
-
@@ -15,8 +15,6 @@
15
15
  #include "db/merge_helper.h"
16
16
  #include "db/wide/wide_columns_helper.h"
17
17
  #include "memory/arena.h"
18
- #include "memtable/skiplist.h"
19
- #include "options/db_options.h"
20
18
  #include "rocksdb/comparator.h"
21
19
  #include "rocksdb/iterator.h"
22
20
  #include "util/cast_util.h"
@@ -32,17 +30,13 @@ struct WriteBatchWithIndex::Rep {
32
30
  index_comparator ? index_comparator->timestamp_size() : 0),
33
31
  comparator(index_comparator, &write_batch),
34
32
  skip_list(comparator, &arena),
35
- overwrite_key(_overwrite_key),
36
- last_entry_offset(0),
37
33
  last_sub_batch_offset(0),
38
34
  sub_batch_cnt(1),
39
- track_cf_stat(false) {}
35
+ overwrite_key(_overwrite_key) {}
40
36
  ReadableWriteBatch write_batch;
41
37
  WriteBatchEntryComparator comparator;
42
38
  Arena arena;
43
39
  WriteBatchEntrySkipList skip_list;
44
- bool overwrite_key;
45
- size_t last_entry_offset;
46
40
  // The starting offset of the last sub-batch. A sub-batch starts right before
47
41
  // inserting a key that is a duplicate of a key in the last sub-batch. Zero,
48
42
  // the default, means that no duplicate key is detected so far.
@@ -50,32 +44,51 @@ struct WriteBatchWithIndex::Rep {
50
44
  // Total number of sub-batches in the write batch. Default is 1.
51
45
  size_t sub_batch_cnt;
52
46
 
53
- bool track_cf_stat;
47
+ const bool overwrite_key;
54
48
  // Tracks ids of CFs that have updates in this WBWI, number of updates and
55
- // number of overwritten single deletions per cf.
49
+ // number of overwritten single deletions per cf. Useful for WBWIMemTable
50
+ // when this WBWI is ingested into a DB.
56
51
  std::unordered_map<uint32_t, CFStat> cf_id_to_stat;
57
52
 
58
- // Remember current offset of internal write batch, which is used as
59
- // the starting offset of the next record.
60
- void SetLastEntryOffset() { last_entry_offset = write_batch.GetDataSize(); }
61
-
62
53
  // In overwrite mode, find the existing entry for the same key and update it
63
- // to point to the current entry.
54
+ // to point to the current entry if this is not a Merge operation.
64
55
  // Return true if the key is found and updated.
65
- bool UpdateExistingEntry(ColumnFamilyHandle* column_family, const Slice& key,
66
- WriteType type);
56
+ // most_recent_entry_update_count will be set to the update count of the
57
+ // most recent index entry for `key` if exists.
67
58
  bool UpdateExistingEntryWithCfId(uint32_t column_family_id, const Slice& key,
68
- WriteType type);
59
+ WriteType type, size_t last_entry_offset,
60
+ uint32_t* most_recent_entry_update_count);
61
+
62
+ // Add or update the index for the given `key` of `type`
63
+ // at `last_entry_offset` in the write batch.
64
+ //
65
+ // The index is updated in place if this WBWI is in overwrite mode
66
+ // and this is not a Merge operation.
67
+ //
68
+ // If `cf_cmp` is provided and there is no compartor stored
69
+ // for this cf, it will be stored as the comparator to use for this cf.
70
+ void AddOrUpdateIndexWithCfId(uint32_t cf_id, const Slice& key,
71
+ WriteType type, size_t last_entry_offset,
72
+ const Comparator* cf_cmp = nullptr);
73
+
74
+ void AddOrUpdateIndex(ColumnFamilyHandle* cfh, const Slice& key,
75
+ WriteType type, size_t last_entry_offset) {
76
+ AddOrUpdateIndexWithCfId(GetColumnFamilyID(cfh), key, type,
77
+ last_entry_offset,
78
+ GetColumnFamilyUserComparator(cfh));
79
+ }
69
80
 
70
- // Add the recent entry to the update.
71
- // In overwrite mode, if key already exists in the index, update it.
72
- void AddOrUpdateIndex(ColumnFamilyHandle* column_family, const Slice& key,
73
- WriteType type);
74
- void AddOrUpdateIndex(const Slice& key, WriteType type);
81
+ void AddOrUpdateIndex(const Slice& key, WriteType type,
82
+ size_t last_entry_offset) {
83
+ AddOrUpdateIndexWithCfId(0, key, type, last_entry_offset);
84
+ }
75
85
 
76
- // Allocate an index entry pointing to the last entry in the write batch and
77
- // put it to skip list.
78
- void AddNewEntry(uint32_t column_family_id, WriteType type);
86
+ // Add a new index entry pointing to the the entry at `last_entry_offset`
87
+ // in the write batch. `most_recent_entry_update_count` will be used to
88
+ // initialize the update count of the new index entry.
89
+ void AddNewEntry(uint32_t column_family_id, WriteType type,
90
+ size_t last_entry_offset,
91
+ uint32_t most_recent_entry_update_count);
79
92
 
80
93
  // Clear all updates buffered in this batch.
81
94
  void Clear();
@@ -86,14 +99,10 @@ struct WriteBatchWithIndex::Rep {
86
99
  Status ReBuildIndex();
87
100
  };
88
101
 
89
- bool WriteBatchWithIndex::Rep::UpdateExistingEntry(
90
- ColumnFamilyHandle* column_family, const Slice& key, WriteType type) {
91
- uint32_t cf_id = GetColumnFamilyID(column_family);
92
- return UpdateExistingEntryWithCfId(cf_id, key, type);
93
- }
94
-
95
102
  bool WriteBatchWithIndex::Rep::UpdateExistingEntryWithCfId(
96
- uint32_t column_family_id, const Slice& key, WriteType type) {
103
+ uint32_t column_family_id, const Slice& key, WriteType type,
104
+ size_t last_entry_offset, uint32_t* most_recent_entry_update_count) {
105
+ assert(most_recent_entry_update_count);
97
106
  if (!overwrite_key) {
98
107
  return false;
99
108
  }
@@ -105,60 +114,60 @@ bool WriteBatchWithIndex::Rep::UpdateExistingEntryWithCfId(
105
114
  return false;
106
115
  } else if (!iter.MatchesKey(column_family_id, key)) {
107
116
  return false;
108
- } else {
109
- // Move to the end of this key (NextKey-Prev)
110
- iter.NextKey(); // Move to the next key
111
- if (iter.Valid()) {
112
- iter.Prev(); // Move back one entry
113
- } else {
114
- iter.SeekToLast();
115
- }
116
117
  }
117
- WriteBatchIndexEntry* non_const_entry =
118
+ // Seek() and MatchesKey() guarantees that we are at the first entry with
119
+ // key == `key`, which is the most recently update to `key`.
120
+ WriteBatchIndexEntry* most_recent_entry =
118
121
  const_cast<WriteBatchIndexEntry*>(iter.GetRawEntry());
119
- if (LIKELY(last_sub_batch_offset <= non_const_entry->offset)) {
122
+ *most_recent_entry_update_count = most_recent_entry->update_count;
123
+
124
+ if (LIKELY(last_sub_batch_offset <= most_recent_entry->offset)) {
120
125
  last_sub_batch_offset = last_entry_offset;
121
126
  sub_batch_cnt++;
122
127
  }
123
- if (track_cf_stat) {
124
- if (non_const_entry->has_single_del &&
125
- !non_const_entry->has_overwritten_single_del) {
126
- cf_id_to_stat[column_family_id].overwritten_sd_count++;
127
- non_const_entry->has_overwritten_single_del = true;
128
- }
129
- if (type == kSingleDeleteRecord) {
130
- non_const_entry->has_single_del = true;
131
- }
128
+ if (most_recent_entry->has_single_del &&
129
+ !most_recent_entry->has_overwritten_single_del) {
130
+ cf_id_to_stat[column_family_id].overwritten_sd_count++;
131
+ most_recent_entry->has_overwritten_single_del = true;
132
+ }
133
+ if (type == kSingleDeleteRecord) {
134
+ most_recent_entry->has_single_del = true;
135
+ }
136
+ // Some sanity check for using Merge and SD on the same key.
137
+ if (iter.Entry().type == kSingleDeleteRecord) {
138
+ assert(type != kMergeRecord);
132
139
  }
133
140
  if (type == kMergeRecord) {
141
+ assert(iter.Entry().type != kSingleDeleteRecord);
134
142
  return false;
135
143
  } else {
136
- non_const_entry->offset = last_entry_offset;
144
+ // We still increment the update count when updating in-place. This is
145
+ // useful for WBWIMemTable when it needs to emit overwritten SingleDeletes.
146
+ // The overwritten SingleDelete will be assigned sequence number as if
147
+ // update_count is 0. So any later update should have update_count > 0.
148
+ most_recent_entry->update_count++;
149
+ most_recent_entry->offset = last_entry_offset;
137
150
  return true;
138
151
  }
139
152
  }
140
153
 
141
- void WriteBatchWithIndex::Rep::AddOrUpdateIndex(
142
- ColumnFamilyHandle* column_family, const Slice& key, WriteType type) {
143
- if (!UpdateExistingEntry(column_family, key, type)) {
144
- uint32_t cf_id = GetColumnFamilyID(column_family);
145
- const auto* cf_cmp = GetColumnFamilyUserComparator(column_family);
146
- if (cf_cmp != nullptr) {
154
+ void WriteBatchWithIndex::Rep::AddOrUpdateIndexWithCfId(
155
+ uint32_t cf_id, const Slice& key, WriteType type, size_t last_entry_offset,
156
+ const Comparator* cf_cmp) {
157
+ uint32_t update_count = 0;
158
+ if (!UpdateExistingEntryWithCfId(cf_id, key, type, last_entry_offset,
159
+ &update_count)) {
160
+ if (cf_cmp) {
147
161
  comparator.SetComparatorForCF(cf_id, cf_cmp);
148
162
  }
149
- AddNewEntry(cf_id, type);
150
- }
151
- }
152
-
153
- void WriteBatchWithIndex::Rep::AddOrUpdateIndex(const Slice& key,
154
- WriteType type) {
155
- if (!UpdateExistingEntryWithCfId(0, key, type)) {
156
- AddNewEntry(0, type);
163
+ AddNewEntry(cf_id, type, last_entry_offset, update_count + 1);
157
164
  }
158
165
  }
159
166
 
160
167
  void WriteBatchWithIndex::Rep::AddNewEntry(uint32_t column_family_id,
161
- WriteType type) {
168
+ WriteType type,
169
+ size_t last_entry_offset,
170
+ uint32_t update_count) {
162
171
  const std::string& wb_data = write_batch.Data();
163
172
  Slice entry_ptr = Slice(wb_data.data() + last_entry_offset,
164
173
  wb_data.size() - last_entry_offset);
@@ -179,17 +188,15 @@ void WriteBatchWithIndex::Rep::AddNewEntry(uint32_t column_family_id,
179
188
  }
180
189
 
181
190
  auto* mem = arena.Allocate(sizeof(WriteBatchIndexEntry));
182
- auto* index_entry =
183
- new (mem) WriteBatchIndexEntry(last_entry_offset, column_family_id,
184
- key.data() - wb_data.data(), key.size());
191
+ auto* index_entry = new (mem) WriteBatchIndexEntry(
192
+ last_entry_offset, column_family_id, key.data() - wb_data.data(),
193
+ key.size(), update_count);
185
194
  skip_list.Insert(index_entry);
186
195
 
187
- if (track_cf_stat) {
188
- if (type == kSingleDeleteRecord) {
189
- index_entry->has_single_del = true;
190
- }
191
- cf_id_to_stat[column_family_id].entry_count++;
196
+ if (type == kSingleDeleteRecord) {
197
+ index_entry->has_single_del = true;
192
198
  }
199
+ cf_id_to_stat[column_family_id].entry_count++;
193
200
  }
194
201
 
195
202
  void WriteBatchWithIndex::Rep::Clear() {
@@ -203,7 +210,6 @@ void WriteBatchWithIndex::Rep::ClearIndex() {
203
210
  arena.~Arena();
204
211
  new (&arena) Arena();
205
212
  new (&skip_list) WriteBatchEntrySkipList(comparator, &arena);
206
- last_entry_offset = 0;
207
213
  last_sub_batch_offset = 0;
208
214
  sub_batch_cnt = 1;
209
215
  }
@@ -232,7 +238,7 @@ Status WriteBatchWithIndex::Rep::ReBuildIndex() {
232
238
  char tag = 0;
233
239
 
234
240
  // set offset of current entry for call to AddNewEntry()
235
- last_entry_offset = input.data() - write_batch.Data().data();
241
+ size_t last_entry_offset = input.data() - write_batch.Data().data();
236
242
 
237
243
  s = ReadRecordFromWriteBatch(&input, &tag, &column_family_id, &key, &value,
238
244
  &blob, &xid, &unix_write_time);
@@ -244,32 +250,26 @@ Status WriteBatchWithIndex::Rep::ReBuildIndex() {
244
250
  case kTypeColumnFamilyValue:
245
251
  case kTypeValue:
246
252
  found++;
247
- if (!UpdateExistingEntryWithCfId(column_family_id, key, kPutRecord)) {
248
- AddNewEntry(column_family_id, kPutRecord);
249
- }
253
+ AddOrUpdateIndexWithCfId(column_family_id, key, kPutRecord,
254
+ last_entry_offset);
250
255
  break;
251
256
  case kTypeColumnFamilyDeletion:
252
257
  case kTypeDeletion:
253
258
  found++;
254
- if (!UpdateExistingEntryWithCfId(column_family_id, key,
255
- kDeleteRecord)) {
256
- AddNewEntry(column_family_id, kDeleteRecord);
257
- }
259
+ AddOrUpdateIndexWithCfId(column_family_id, key, kDeleteRecord,
260
+ last_entry_offset);
258
261
  break;
259
262
  case kTypeColumnFamilySingleDeletion:
260
263
  case kTypeSingleDeletion:
261
264
  found++;
262
- if (!UpdateExistingEntryWithCfId(column_family_id, key,
263
- kSingleDeleteRecord)) {
264
- AddNewEntry(column_family_id, kSingleDeleteRecord);
265
- }
265
+ AddOrUpdateIndexWithCfId(column_family_id, key, kSingleDeleteRecord,
266
+ last_entry_offset);
266
267
  break;
267
268
  case kTypeColumnFamilyMerge:
268
269
  case kTypeMerge:
269
270
  found++;
270
- if (!UpdateExistingEntryWithCfId(column_family_id, key, kMergeRecord)) {
271
- AddNewEntry(column_family_id, kMergeRecord);
272
- }
271
+ AddOrUpdateIndexWithCfId(column_family_id, key, kMergeRecord,
272
+ last_entry_offset);
273
273
  break;
274
274
  case kTypeLogData:
275
275
  case kTypeBeginPrepareXID:
@@ -284,10 +284,8 @@ Status WriteBatchWithIndex::Rep::ReBuildIndex() {
284
284
  case kTypeColumnFamilyWideColumnEntity:
285
285
  case kTypeWideColumnEntity:
286
286
  found++;
287
- if (!UpdateExistingEntryWithCfId(column_family_id, key,
288
- kPutEntityRecord)) {
289
- AddNewEntry(column_family_id, kPutEntityRecord);
290
- }
287
+ AddOrUpdateIndexWithCfId(column_family_id, key, kPutEntityRecord,
288
+ last_entry_offset);
291
289
  break;
292
290
  case kTypeColumnFamilyValuePreferredSeqno:
293
291
  case kTypeValuePreferredSeqno:
@@ -363,10 +361,19 @@ Iterator* WriteBatchWithIndex::NewIteratorWithBase(
363
361
  read_options);
364
362
  }
365
363
 
366
- Iterator* WriteBatchWithIndex::NewIteratorWithBase(Iterator* base_iterator) {
364
+ Iterator* WriteBatchWithIndex::NewIteratorWithBase(
365
+ Iterator* base_iterator, const ReadOptions* read_options) {
366
+ WBWIIteratorImpl* wbwiii;
367
367
  // default column family's comparator
368
- auto wbwiii = new WBWIIteratorImpl(0, &(rep->skip_list), &rep->write_batch,
369
- &rep->comparator);
368
+ if (read_options != nullptr) {
369
+ wbwiii = new WBWIIteratorImpl(
370
+ 0, &(rep->skip_list), &rep->write_batch, &rep->comparator,
371
+ read_options->iterate_lower_bound, read_options->iterate_upper_bound);
372
+ } else {
373
+ wbwiii = new WBWIIteratorImpl(0, &(rep->skip_list), &rep->write_batch,
374
+ &rep->comparator);
375
+ }
376
+
370
377
  return new BaseDeltaIterator(nullptr, base_iterator, wbwiii,
371
378
  rep->comparator.default_comparator(),
372
379
  /* read_options */ nullptr);
@@ -374,19 +381,19 @@ Iterator* WriteBatchWithIndex::NewIteratorWithBase(Iterator* base_iterator) {
374
381
 
375
382
  Status WriteBatchWithIndex::Put(ColumnFamilyHandle* column_family,
376
383
  const Slice& key, const Slice& value) {
377
- rep->SetLastEntryOffset();
384
+ size_t last_entry_offset = rep->write_batch.GetDataSize();
378
385
  auto s = rep->write_batch.Put(column_family, key, value);
379
386
  if (s.ok()) {
380
- rep->AddOrUpdateIndex(column_family, key, kPutRecord);
387
+ rep->AddOrUpdateIndex(column_family, key, kPutRecord, last_entry_offset);
381
388
  }
382
389
  return s;
383
390
  }
384
391
 
385
392
  Status WriteBatchWithIndex::Put(const Slice& key, const Slice& value) {
386
- rep->SetLastEntryOffset();
393
+ size_t last_entry_offset = rep->write_batch.GetDataSize();
387
394
  auto s = rep->write_batch.Put(key, value);
388
395
  if (s.ok()) {
389
- rep->AddOrUpdateIndex(key, kPutRecord);
396
+ rep->AddOrUpdateIndex(key, kPutRecord, last_entry_offset);
390
397
  }
391
398
  return s;
392
399
  }
@@ -405,33 +412,30 @@ Status WriteBatchWithIndex::PutEntity(ColumnFamilyHandle* column_family,
405
412
  const Slice& key,
406
413
  const WideColumns& columns) {
407
414
  assert(rep);
408
-
409
- rep->SetLastEntryOffset();
410
-
415
+ size_t last_entry_offset = rep->write_batch.GetDataSize();
411
416
  const Status s = rep->write_batch.PutEntity(column_family, key, columns);
412
-
413
417
  if (s.ok()) {
414
- rep->AddOrUpdateIndex(column_family, key, kPutEntityRecord);
418
+ rep->AddOrUpdateIndex(column_family, key, kPutEntityRecord,
419
+ last_entry_offset);
415
420
  }
416
-
417
421
  return s;
418
422
  }
419
423
 
420
424
  Status WriteBatchWithIndex::Delete(ColumnFamilyHandle* column_family,
421
425
  const Slice& key) {
422
- rep->SetLastEntryOffset();
426
+ size_t last_entry_offset = rep->write_batch.GetDataSize();
423
427
  auto s = rep->write_batch.Delete(column_family, key);
424
428
  if (s.ok()) {
425
- rep->AddOrUpdateIndex(column_family, key, kDeleteRecord);
429
+ rep->AddOrUpdateIndex(column_family, key, kDeleteRecord, last_entry_offset);
426
430
  }
427
431
  return s;
428
432
  }
429
433
 
430
434
  Status WriteBatchWithIndex::Delete(const Slice& key) {
431
- rep->SetLastEntryOffset();
435
+ size_t last_entry_offset = rep->write_batch.GetDataSize();
432
436
  auto s = rep->write_batch.Delete(key);
433
437
  if (s.ok()) {
434
- rep->AddOrUpdateIndex(key, kDeleteRecord);
438
+ rep->AddOrUpdateIndex(key, kDeleteRecord, last_entry_offset);
435
439
  }
436
440
  return s;
437
441
  }
@@ -447,19 +451,20 @@ Status WriteBatchWithIndex::Delete(ColumnFamilyHandle* column_family,
447
451
 
448
452
  Status WriteBatchWithIndex::SingleDelete(ColumnFamilyHandle* column_family,
449
453
  const Slice& key) {
450
- rep->SetLastEntryOffset();
454
+ size_t last_entry_offset = rep->write_batch.GetDataSize();
451
455
  auto s = rep->write_batch.SingleDelete(column_family, key);
452
456
  if (s.ok()) {
453
- rep->AddOrUpdateIndex(column_family, key, kSingleDeleteRecord);
457
+ rep->AddOrUpdateIndex(column_family, key, kSingleDeleteRecord,
458
+ last_entry_offset);
454
459
  }
455
460
  return s;
456
461
  }
457
462
 
458
463
  Status WriteBatchWithIndex::SingleDelete(const Slice& key) {
459
- rep->SetLastEntryOffset();
464
+ size_t last_entry_offset = rep->write_batch.GetDataSize();
460
465
  auto s = rep->write_batch.SingleDelete(key);
461
466
  if (s.ok()) {
462
- rep->AddOrUpdateIndex(key, kSingleDeleteRecord);
467
+ rep->AddOrUpdateIndex(key, kSingleDeleteRecord, last_entry_offset);
463
468
  }
464
469
  return s;
465
470
  }
@@ -476,19 +481,19 @@ Status WriteBatchWithIndex::SingleDelete(ColumnFamilyHandle* column_family,
476
481
 
477
482
  Status WriteBatchWithIndex::Merge(ColumnFamilyHandle* column_family,
478
483
  const Slice& key, const Slice& value) {
479
- rep->SetLastEntryOffset();
484
+ size_t last_entry_offset = rep->write_batch.GetDataSize();
480
485
  auto s = rep->write_batch.Merge(column_family, key, value);
481
486
  if (s.ok()) {
482
- rep->AddOrUpdateIndex(column_family, key, kMergeRecord);
487
+ rep->AddOrUpdateIndex(column_family, key, kMergeRecord, last_entry_offset);
483
488
  }
484
489
  return s;
485
490
  }
486
491
 
487
492
  Status WriteBatchWithIndex::Merge(const Slice& key, const Slice& value) {
488
- rep->SetLastEntryOffset();
493
+ size_t last_entry_offset = rep->write_batch.GetDataSize();
489
494
  auto s = rep->write_batch.Merge(key, value);
490
495
  if (s.ok()) {
491
- rep->AddOrUpdateIndex(key, kMergeRecord);
496
+ rep->AddOrUpdateIndex(key, kMergeRecord, last_entry_offset);
492
497
  }
493
498
  return s;
494
499
  }
@@ -1163,15 +1168,8 @@ const Comparator* WriteBatchWithIndexInternal::GetUserComparator(
1163
1168
  return ucmps.GetComparator(cf_id);
1164
1169
  }
1165
1170
 
1166
- void WriteBatchWithIndex::SetTrackPerCFStat(bool track) {
1167
- // Should be set when the wbwi contains no update.
1168
- assert(GetWriteBatch()->Count() == 0);
1169
- rep->track_cf_stat = track;
1170
- }
1171
-
1172
1171
  const std::unordered_map<uint32_t, WriteBatchWithIndex::CFStat>&
1173
1172
  WriteBatchWithIndex::GetCFStats() const {
1174
- assert(rep->track_cf_stat);
1175
1173
  return rep->cf_id_to_stat;
1176
1174
  }
1177
1175