@nxtedition/rocksdb 8.2.8 → 9.0.1

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 (483) hide show
  1. package/binding.cc +0 -21
  2. package/deps/rocksdb/rocksdb/CMakeLists.txt +20 -10
  3. package/deps/rocksdb/rocksdb/Makefile +37 -25
  4. package/deps/rocksdb/rocksdb/README.md +29 -0
  5. package/deps/rocksdb/rocksdb/TARGETS +25 -2
  6. package/deps/rocksdb/rocksdb/cache/cache.cc +35 -0
  7. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +229 -74
  8. package/deps/rocksdb/rocksdb/cache/cache_helpers.cc +2 -1
  9. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +4 -3
  10. package/deps/rocksdb/rocksdb/cache/cache_test.cc +58 -95
  11. package/deps/rocksdb/rocksdb/cache/charged_cache.cc +4 -2
  12. package/deps/rocksdb/rocksdb/cache/charged_cache.h +5 -3
  13. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +2683 -496
  14. package/deps/rocksdb/rocksdb/cache/clock_cache.h +580 -159
  15. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +145 -42
  16. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +20 -1
  17. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +391 -17
  18. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +7 -5
  19. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +309 -212
  20. package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +0 -32
  21. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +439 -12
  22. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.h +44 -2
  23. package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +11 -1
  24. package/deps/rocksdb/rocksdb/cache/sharded_cache.h +16 -3
  25. package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.cc +119 -0
  26. package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.h +155 -0
  27. package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache_test.cc +711 -0
  28. package/deps/rocksdb/rocksdb/cache/typed_cache.h +17 -11
  29. package/deps/rocksdb/rocksdb/crash_test.mk +14 -0
  30. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +28 -12
  31. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +1 -0
  32. package/deps/rocksdb/rocksdb/db/blob/blob_contents.h +2 -1
  33. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +1 -1
  34. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +1 -1
  35. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +2 -2
  36. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +1 -1
  37. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +20 -22
  38. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +1 -2
  39. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +1 -1
  40. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +2 -3
  41. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +1 -1
  42. package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +8 -0
  43. package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +7 -3
  44. package/deps/rocksdb/rocksdb/db/builder.cc +35 -10
  45. package/deps/rocksdb/rocksdb/db/c.cc +233 -6
  46. package/deps/rocksdb/rocksdb/db/c_test.c +140 -6
  47. package/deps/rocksdb/rocksdb/db/column_family.cc +110 -51
  48. package/deps/rocksdb/rocksdb/db/column_family.h +34 -2
  49. package/deps/rocksdb/rocksdb/db/column_family_test.cc +314 -7
  50. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +4 -1
  51. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +106 -23
  52. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +47 -9
  53. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +10 -11
  54. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +17 -6
  55. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +2 -2
  56. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +148 -60
  57. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +22 -7
  58. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -0
  59. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +8 -4
  60. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +33 -23
  61. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +14 -5
  62. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +11 -11
  63. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +3 -0
  64. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +90 -4
  65. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +170 -95
  66. package/deps/rocksdb/rocksdb/db/compaction/file_pri.h +3 -1
  67. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +32 -58
  68. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +3 -1
  69. package/deps/rocksdb/rocksdb/db/convenience.cc +20 -3
  70. package/deps/rocksdb/rocksdb/db/convenience_impl.h +15 -0
  71. package/deps/rocksdb/rocksdb/db/corruption_test.cc +17 -0
  72. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +1 -0
  73. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +46 -10
  74. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +13 -3
  75. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +74 -15
  76. package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +27 -3
  77. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +850 -44
  78. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +2 -29
  79. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +275 -1
  80. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +52 -19
  81. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +6 -5
  82. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +733 -320
  83. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +155 -66
  84. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +516 -155
  85. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +8 -4
  86. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +2 -1
  87. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +17 -4
  88. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +100 -35
  89. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +95 -50
  90. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +13 -9
  91. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +136 -79
  92. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +6 -95
  93. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +31 -22
  94. package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +6 -0
  95. package/deps/rocksdb/rocksdb/db/db_iter.cc +85 -57
  96. package/deps/rocksdb/rocksdb/db/db_iter.h +11 -2
  97. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +29 -0
  98. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +276 -21
  99. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +35 -0
  100. package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +4 -11
  101. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +193 -7
  102. package/deps/rocksdb/rocksdb/db/db_options_test.cc +294 -26
  103. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +26 -36
  104. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +364 -0
  105. package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +13 -3
  106. package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +52 -0
  107. package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +74 -1
  108. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +22 -4
  109. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +1 -1
  110. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +1 -0
  111. package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +282 -167
  112. package/deps/rocksdb/rocksdb/db/db_test.cc +180 -49
  113. package/deps/rocksdb/rocksdb/db/db_test2.cc +84 -12
  114. package/deps/rocksdb/rocksdb/db/db_test_util.cc +25 -12
  115. package/deps/rocksdb/rocksdb/db/db_test_util.h +45 -2
  116. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +14 -1
  117. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +245 -0
  118. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +480 -1
  119. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +6 -6
  120. package/deps/rocksdb/rocksdb/db/db_write_test.cc +2 -2
  121. package/deps/rocksdb/rocksdb/db/dbformat.cc +36 -0
  122. package/deps/rocksdb/rocksdb/db/dbformat.h +169 -20
  123. package/deps/rocksdb/rocksdb/db/dbformat_test.cc +129 -0
  124. package/deps/rocksdb/rocksdb/db/deletefile_test.cc +2 -0
  125. package/deps/rocksdb/rocksdb/db/error_handler.cc +67 -34
  126. package/deps/rocksdb/rocksdb/db/error_handler.h +13 -9
  127. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +4 -4
  128. package/deps/rocksdb/rocksdb/db/event_helpers.cc +4 -0
  129. package/deps/rocksdb/rocksdb/db/experimental.cc +2 -1
  130. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +4 -4
  131. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +17 -8
  132. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +144 -4
  133. package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +1 -1
  134. package/deps/rocksdb/rocksdb/db/file_indexer.cc +2 -4
  135. package/deps/rocksdb/rocksdb/db/flush_job.cc +105 -17
  136. package/deps/rocksdb/rocksdb/db/flush_job.h +27 -4
  137. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +90 -12
  138. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +2 -3
  139. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +159 -91
  140. package/deps/rocksdb/rocksdb/db/import_column_family_job.h +19 -10
  141. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +143 -0
  142. package/deps/rocksdb/rocksdb/db/internal_stats.cc +13 -1
  143. package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -0
  144. package/deps/rocksdb/rocksdb/db/listener_test.cc +2 -1
  145. package/deps/rocksdb/rocksdb/db/log_reader.h +3 -2
  146. package/deps/rocksdb/rocksdb/db/log_test.cc +17 -21
  147. package/deps/rocksdb/rocksdb/db/log_writer.cc +1 -1
  148. package/deps/rocksdb/rocksdb/db/log_writer.h +3 -2
  149. package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +6 -3
  150. package/deps/rocksdb/rocksdb/db/memtable.cc +70 -83
  151. package/deps/rocksdb/rocksdb/db/memtable.h +45 -1
  152. package/deps/rocksdb/rocksdb/db/memtable_list.cc +45 -11
  153. package/deps/rocksdb/rocksdb/db/memtable_list.h +43 -2
  154. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +91 -5
  155. package/deps/rocksdb/rocksdb/db/merge_helper.cc +330 -115
  156. package/deps/rocksdb/rocksdb/db/merge_helper.h +100 -12
  157. package/deps/rocksdb/rocksdb/db/merge_operator.cc +82 -0
  158. package/deps/rocksdb/rocksdb/db/merge_test.cc +267 -0
  159. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +5 -2
  160. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.h +4 -4
  161. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +3 -0
  162. package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -0
  163. package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +4 -0
  164. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +4 -0
  165. package/deps/rocksdb/rocksdb/db/repair.cc +25 -7
  166. package/deps/rocksdb/rocksdb/db/repair_test.cc +143 -2
  167. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +459 -74
  168. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +105 -69
  169. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +83 -46
  170. package/deps/rocksdb/rocksdb/db/table_cache.cc +76 -54
  171. package/deps/rocksdb/rocksdb/db/table_cache.h +18 -12
  172. package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +2 -2
  173. package/deps/rocksdb/rocksdb/db/version_builder.cc +0 -1
  174. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +236 -204
  175. package/deps/rocksdb/rocksdb/db/version_edit.cc +66 -4
  176. package/deps/rocksdb/rocksdb/db/version_edit.h +58 -10
  177. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +80 -8
  178. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +12 -0
  179. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +86 -17
  180. package/deps/rocksdb/rocksdb/db/version_set.cc +207 -110
  181. package/deps/rocksdb/rocksdb/db/version_set.h +36 -15
  182. package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +2 -5
  183. package/deps/rocksdb/rocksdb/db/version_set_test.cc +47 -26
  184. package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +525 -0
  185. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +6 -22
  186. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +0 -20
  187. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +0 -29
  188. package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper.cc +46 -0
  189. package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper.h +40 -0
  190. package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper_test.cc +39 -0
  191. package/deps/rocksdb/rocksdb/db/write_batch.cc +55 -20
  192. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +3 -0
  193. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +16 -0
  194. package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +1 -0
  195. package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +4 -4
  196. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +4 -7
  197. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +88 -10
  198. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +37 -13
  199. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +110 -58
  200. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +42 -0
  201. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +68 -17
  202. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +34 -0
  203. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +8 -1
  204. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +429 -237
  205. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +13 -6
  206. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +21 -14
  207. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_wide_merge_operator.cc +51 -0
  208. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_wide_merge_operator.h +27 -0
  209. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +3 -6
  210. package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.h +2 -0
  211. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +29 -38
  212. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +302 -101
  213. package/deps/rocksdb/rocksdb/env/env.cc +6 -2
  214. package/deps/rocksdb/rocksdb/env/env_encryption.cc +11 -165
  215. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +0 -17
  216. package/deps/rocksdb/rocksdb/env/env_posix.cc +6 -2
  217. package/deps/rocksdb/rocksdb/env/env_test.cc +86 -2
  218. package/deps/rocksdb/rocksdb/env/fs_posix.cc +6 -4
  219. package/deps/rocksdb/rocksdb/env/unique_id_gen.cc +79 -0
  220. package/deps/rocksdb/rocksdb/env/unique_id_gen.h +34 -0
  221. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +1 -0
  222. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +15 -4
  223. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +100 -70
  224. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +64 -18
  225. package/deps/rocksdb/rocksdb/file/file_util.cc +10 -5
  226. package/deps/rocksdb/rocksdb/file/file_util.h +13 -1
  227. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +1225 -97
  228. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +72 -33
  229. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +3 -16
  230. package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +23 -12
  231. package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +3 -0
  232. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +40 -14
  233. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +163 -91
  234. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +112 -2
  235. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +108 -16
  236. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +11 -0
  237. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +3 -0
  238. package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +42 -2
  239. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +1 -1
  240. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +92 -12
  241. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +34 -4
  242. package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +9 -109
  243. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +91 -13
  244. package/deps/rocksdb/rocksdb/include/rocksdb/filter_policy.h +8 -3
  245. package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +10 -4
  246. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +7 -0
  247. package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +1 -1
  248. package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +55 -4
  249. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +130 -22
  250. package/deps/rocksdb/rocksdb/include/rocksdb/port_defs.h +4 -0
  251. package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +9 -0
  252. package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +92 -9
  253. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +2 -1
  254. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +5 -1
  255. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +37 -2
  256. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +35 -0
  257. package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +15 -0
  258. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +7 -1
  259. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +20 -3
  260. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +7 -0
  261. package/deps/rocksdb/rocksdb/include/rocksdb/types.h +7 -0
  262. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +6 -1
  263. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +33 -2
  264. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +2 -1
  265. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +14 -0
  266. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +42 -2
  267. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +0 -3
  268. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  269. package/deps/rocksdb/rocksdb/include/rocksdb/wide_columns.h +53 -2
  270. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +3 -2
  271. package/deps/rocksdb/rocksdb/memory/arena_test.cc +18 -11
  272. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +4 -3
  273. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +1 -1
  274. package/deps/rocksdb/rocksdb/microbench/README.md +60 -0
  275. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +69 -34
  276. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +1 -1
  277. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +22 -1
  278. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +18 -7
  279. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +14 -0
  280. package/deps/rocksdb/rocksdb/options/cf_options.cc +19 -0
  281. package/deps/rocksdb/rocksdb/options/cf_options.h +10 -2
  282. package/deps/rocksdb/rocksdb/options/customizable_test.cc +6 -1
  283. package/deps/rocksdb/rocksdb/options/db_options.cc +54 -2
  284. package/deps/rocksdb/rocksdb/options/db_options.h +4 -0
  285. package/deps/rocksdb/rocksdb/options/options.cc +15 -1
  286. package/deps/rocksdb/rocksdb/options/options_helper.cc +18 -0
  287. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +14 -4
  288. package/deps/rocksdb/rocksdb/options/options_test.cc +14 -1
  289. package/deps/rocksdb/rocksdb/plugin/README.md +43 -0
  290. package/deps/rocksdb/rocksdb/port/README +10 -0
  291. package/deps/rocksdb/rocksdb/port/mmap.h +20 -0
  292. package/deps/rocksdb/rocksdb/port/port_example.h +1 -1
  293. package/deps/rocksdb/rocksdb/port/port_posix.cc +1 -1
  294. package/deps/rocksdb/rocksdb/port/port_posix.h +7 -4
  295. package/deps/rocksdb/rocksdb/port/stack_trace.cc +32 -12
  296. package/deps/rocksdb/rocksdb/port/win/env_win.h +1 -1
  297. package/deps/rocksdb/rocksdb/port/win/port_win.h +5 -2
  298. package/deps/rocksdb/rocksdb/src.mk +10 -1
  299. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
  300. package/deps/rocksdb/rocksdb/table/block_based/block.cc +48 -22
  301. package/deps/rocksdb/rocksdb/table/block_based/block.h +60 -12
  302. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +116 -43
  303. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +9 -6
  304. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +321 -49
  305. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +98 -4
  306. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +233 -98
  307. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +58 -23
  308. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +12 -8
  309. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +52 -24
  310. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +219 -51
  311. package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +41 -8
  312. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +25 -1
  313. package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +3 -1
  314. package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +26 -7
  315. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +50 -18
  316. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +20 -8
  317. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +232 -71
  318. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +6 -6
  319. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +44 -26
  320. package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +2 -1
  321. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +1 -1
  322. package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +31 -16
  323. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +97 -58
  324. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +2 -2
  325. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +6 -0
  326. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +36 -19
  327. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +3 -1
  328. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +114 -70
  329. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +4 -3
  330. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +11 -7
  331. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +15 -3
  332. package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +6 -3
  333. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +1 -1
  334. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +14 -13
  335. package/deps/rocksdb/rocksdb/table/block_fetcher.h +4 -0
  336. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +9 -2
  337. package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +1 -0
  338. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +6 -2
  339. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +1 -2
  340. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +2 -3
  341. package/deps/rocksdb/rocksdb/table/format.cc +175 -33
  342. package/deps/rocksdb/rocksdb/table/format.h +63 -10
  343. package/deps/rocksdb/rocksdb/table/get_context.cc +52 -89
  344. package/deps/rocksdb/rocksdb/table/get_context.h +12 -3
  345. package/deps/rocksdb/rocksdb/table/internal_iterator.h +11 -0
  346. package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +29 -1
  347. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +22 -2
  348. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +12 -4
  349. package/deps/rocksdb/rocksdb/table/meta_blocks.h +1 -0
  350. package/deps/rocksdb/rocksdb/table/mock_table.cc +8 -3
  351. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +10 -5
  352. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +10 -1
  353. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +1 -2
  354. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +3 -3
  355. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +45 -9
  356. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +1 -0
  357. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +24 -1
  358. package/deps/rocksdb/rocksdb/table/table_builder.h +6 -2
  359. package/deps/rocksdb/rocksdb/table/table_properties.cc +6 -0
  360. package/deps/rocksdb/rocksdb/table/table_reader.h +6 -0
  361. package/deps/rocksdb/rocksdb/table/table_test.cc +52 -22
  362. package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +31 -0
  363. package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.cc +2 -1
  364. package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.h +19 -7
  365. package/deps/rocksdb/rocksdb/test_util/sync_point.h +3 -1
  366. package/deps/rocksdb/rocksdb/test_util/testutil.cc +29 -0
  367. package/deps/rocksdb/rocksdb/test_util/testutil.h +19 -0
  368. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim.py +3 -3
  369. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +87 -65
  370. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +221 -33
  371. package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +36 -0
  372. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -1
  373. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +1 -0
  374. package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +33 -11
  375. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +4 -0
  376. package/deps/rocksdb/rocksdb/unreleased_history/README.txt +73 -0
  377. package/deps/rocksdb/rocksdb/unreleased_history/add.sh +27 -0
  378. package/deps/rocksdb/rocksdb/unreleased_history/behavior_changes/.gitkeep +0 -0
  379. package/deps/rocksdb/rocksdb/unreleased_history/bug_fixes/.gitkeep +0 -0
  380. package/deps/rocksdb/rocksdb/unreleased_history/new_features/.gitkeep +0 -0
  381. package/deps/rocksdb/rocksdb/unreleased_history/performance_improvements/.gitkeep +0 -0
  382. package/deps/rocksdb/rocksdb/unreleased_history/public_api_changes/.gitkeep +0 -0
  383. package/deps/rocksdb/rocksdb/unreleased_history/release.sh +104 -0
  384. package/deps/rocksdb/rocksdb/util/async_file_reader.cc +5 -0
  385. package/deps/rocksdb/rocksdb/util/bloom_impl.h +3 -3
  386. package/deps/rocksdb/rocksdb/util/bloom_test.cc +32 -11
  387. package/deps/rocksdb/rocksdb/util/cast_util.h +24 -0
  388. package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +2 -0
  389. package/deps/rocksdb/rocksdb/util/comparator.cc +55 -8
  390. package/deps/rocksdb/rocksdb/util/compression.cc +4 -4
  391. package/deps/rocksdb/rocksdb/util/compression.h +119 -35
  392. package/deps/rocksdb/rocksdb/util/core_local.h +2 -1
  393. package/deps/rocksdb/rocksdb/util/crc32c.cc +7 -1
  394. package/deps/rocksdb/rocksdb/util/distributed_mutex.h +1 -1
  395. package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +4 -4
  396. package/deps/rocksdb/rocksdb/util/filelock_test.cc +3 -0
  397. package/deps/rocksdb/rocksdb/util/hash.h +7 -3
  398. package/deps/rocksdb/rocksdb/util/hash_test.cc +44 -0
  399. package/deps/rocksdb/rocksdb/util/math.h +58 -6
  400. package/deps/rocksdb/rocksdb/util/math128.h +29 -7
  401. package/deps/rocksdb/rocksdb/util/mutexlock.h +35 -27
  402. package/deps/rocksdb/rocksdb/util/overload.h +23 -0
  403. package/deps/rocksdb/rocksdb/util/rate_limiter.cc +53 -18
  404. package/deps/rocksdb/rocksdb/util/rate_limiter_impl.h +6 -1
  405. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +90 -19
  406. package/deps/rocksdb/rocksdb/util/single_thread_executor.h +1 -0
  407. package/deps/rocksdb/rocksdb/util/slice_test.cc +30 -0
  408. package/deps/rocksdb/rocksdb/util/status.cc +1 -0
  409. package/deps/rocksdb/rocksdb/util/stop_watch.h +1 -1
  410. package/deps/rocksdb/rocksdb/util/string_util.cc +39 -0
  411. package/deps/rocksdb/rocksdb/util/string_util.h +10 -0
  412. package/deps/rocksdb/rocksdb/util/thread_operation.h +10 -1
  413. package/deps/rocksdb/rocksdb/util/udt_util.cc +385 -0
  414. package/deps/rocksdb/rocksdb/util/udt_util.h +192 -1
  415. package/deps/rocksdb/rocksdb/util/udt_util_test.cc +461 -0
  416. package/deps/rocksdb/rocksdb/util/write_batch_util.cc +25 -0
  417. package/deps/rocksdb/rocksdb/util/write_batch_util.h +80 -0
  418. package/deps/rocksdb/rocksdb/util/xxhash.h +0 -3
  419. package/deps/rocksdb/rocksdb/util/xxph3.h +0 -4
  420. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +4 -4
  421. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +71 -26
  422. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +7 -6
  423. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +1 -1
  424. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +2 -3
  425. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +6 -11
  426. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +1 -2
  427. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +4 -5
  428. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +1 -0
  429. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +20 -16
  430. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +11 -7
  431. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +2 -2
  432. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +7 -1
  433. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +3 -0
  434. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +12 -3
  435. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +1 -2
  436. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +7 -4
  437. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +2 -3
  438. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +2 -2
  439. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +1 -1
  440. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/README +13 -0
  441. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +23 -8
  442. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +9 -6
  443. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +37 -12
  444. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +272 -33
  445. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +15 -9
  446. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +4 -1
  447. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +76 -20
  448. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +18 -9
  449. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +195 -23
  450. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +19 -12
  451. package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +88 -1
  452. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +1 -1
  453. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +43 -17
  454. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +6 -3
  455. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +73 -24
  456. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +19 -4
  457. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +60 -107
  458. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +41 -12
  459. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +6 -3
  460. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +15 -8
  461. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.h +1 -1
  462. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +10 -5
  463. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +1 -1
  464. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +1 -1
  465. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +59 -28
  466. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +127 -120
  467. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +129 -59
  468. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +111 -14
  469. package/deps/rocksdb/rocksdb.gyp +6 -2
  470. package/index.js +0 -8
  471. package/package.json +1 -1
  472. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  473. package/prebuilds/linux-x64/node.napi.node +0 -0
  474. package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +0 -7
  475. package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +0 -29
  476. package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +0 -29
  477. package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +0 -29
  478. package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +0 -33
  479. package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +0 -29
  480. package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +0 -29
  481. package/deps/rocksdb/rocksdb/cmake/modules/Finduring.cmake +0 -26
  482. package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +0 -29
  483. package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +0 -10
@@ -18,6 +18,7 @@
18
18
  #include "db/merge_helper.h"
19
19
  #include "db/pinned_iterators_manager.h"
20
20
  #include "db/wide/wide_column_serialization.h"
21
+ #include "db/wide/wide_columns_helper.h"
21
22
  #include "file/filename.h"
22
23
  #include "logging/logging.h"
23
24
  #include "memory/arena.h"
@@ -77,11 +78,13 @@ DBIter::DBIter(Env* _env, const ReadOptions& read_options,
77
78
  expose_blob_index_(expose_blob_index),
78
79
  is_blob_(false),
79
80
  arena_mode_(arena_mode),
81
+ io_activity_(read_options.io_activity),
80
82
  db_impl_(db_impl),
81
83
  cfd_(cfd),
82
84
  timestamp_ub_(read_options.timestamp),
83
85
  timestamp_lb_(read_options.iter_start_ts),
84
- timestamp_size_(timestamp_ub_ ? timestamp_ub_->size() : 0) {
86
+ timestamp_size_(timestamp_ub_ ? timestamp_ub_->size() : 0),
87
+ auto_readahead_size_(read_options.auto_readahead_size) {
85
88
  RecordTick(statistics_, NO_ITERATOR_CREATED);
86
89
  if (pin_thru_lifetime_) {
87
90
  pinned_iters_mgr_.StartPinning();
@@ -196,12 +199,11 @@ bool DBIter::SetBlobValueIfNeeded(const Slice& user_key,
196
199
 
197
200
  // TODO: consider moving ReadOptions from ArenaWrappedDBIter to DBIter to
198
201
  // avoid having to copy options back and forth.
199
- // TODO: plumb Env::IOActivity
200
202
  ReadOptions read_options;
201
203
  read_options.read_tier = read_tier_;
202
204
  read_options.fill_cache = fill_cache_;
203
205
  read_options.verify_checksums = verify_checksums_;
204
-
206
+ read_options.io_activity = io_activity_;
205
207
  constexpr FilePrefetchBuffer* prefetch_buffer = nullptr;
206
208
  constexpr uint64_t* bytes_read = nullptr;
207
209
 
@@ -230,11 +232,35 @@ bool DBIter::SetValueAndColumnsFromEntity(Slice slice) {
230
232
  return false;
231
233
  }
232
234
 
233
- if (!wide_columns_.empty() &&
234
- wide_columns_[0].name() == kDefaultWideColumnName) {
235
- value_ = wide_columns_[0].value();
235
+ if (WideColumnsHelper::HasDefaultColumn(wide_columns_)) {
236
+ value_ = WideColumnsHelper::GetDefaultColumn(wide_columns_);
237
+ }
238
+
239
+ return true;
240
+ }
241
+
242
+ bool DBIter::SetValueAndColumnsFromMergeResult(const Status& merge_status,
243
+ ValueType result_type) {
244
+ if (!merge_status.ok()) {
245
+ valid_ = false;
246
+ status_ = merge_status;
247
+ return false;
248
+ }
249
+
250
+ if (result_type == kTypeWideColumnEntity) {
251
+ if (!SetValueAndColumnsFromEntity(saved_value_)) {
252
+ assert(!valid_);
253
+ return false;
254
+ }
255
+
256
+ valid_ = true;
257
+ return true;
236
258
  }
237
259
 
260
+ assert(result_type == kTypeValue);
261
+ SetValueAndColumnsFromPlain(pinned_value_.data() ? pinned_value_
262
+ : saved_value_);
263
+ valid_ = true;
238
264
  return true;
239
265
  }
240
266
 
@@ -554,8 +580,7 @@ bool DBIter::MergeValuesNewToOld() {
554
580
  if (kTypeValue == ikey.type) {
555
581
  // hit a put, merge the put value with operands and store the
556
582
  // final result in saved_value_. We are done!
557
- const Slice val = iter_.value();
558
- if (!Merge(&val, ikey.user_key)) {
583
+ if (!MergeWithPlainBaseValue(iter_.value(), ikey.user_key)) {
559
584
  return false;
560
585
  }
561
586
  // iter_ is positioned after put
@@ -584,7 +609,7 @@ bool DBIter::MergeValuesNewToOld() {
584
609
  return false;
585
610
  }
586
611
  valid_ = true;
587
- if (!Merge(&blob_value_, ikey.user_key)) {
612
+ if (!MergeWithPlainBaseValue(blob_value_, ikey.user_key)) {
588
613
  return false;
589
614
  }
590
615
 
@@ -598,7 +623,7 @@ bool DBIter::MergeValuesNewToOld() {
598
623
  }
599
624
  return true;
600
625
  } else if (kTypeWideColumnEntity == ikey.type) {
601
- if (!MergeEntity(iter_.value(), ikey.user_key)) {
626
+ if (!MergeWithWideColumnBaseValue(iter_.value(), ikey.user_key)) {
602
627
  return false;
603
628
  }
604
629
 
@@ -628,7 +653,7 @@ bool DBIter::MergeValuesNewToOld() {
628
653
  // a deletion marker.
629
654
  // feed null as the existing value to the merge operator, such that
630
655
  // client can differentiate this scenario and do things accordingly.
631
- if (!Merge(nullptr, saved_key_.GetUserKey())) {
656
+ if (!MergeWithNoBaseValue(saved_key_.GetUserKey())) {
632
657
  return false;
633
658
  }
634
659
  assert(status_.ok());
@@ -719,15 +744,22 @@ bool DBIter::ReverseToBackward() {
719
744
  // When current_entry_is_merged_ is true, iter_ may be positioned on the next
720
745
  // key, which may not exist or may have prefix different from current.
721
746
  // If that's the case, seek to saved_key_.
722
- if (current_entry_is_merged_ &&
723
- (!expect_total_order_inner_iter() || !iter_.Valid())) {
747
+ //
748
+ // In case of auto_readahead_size enabled, index_iter moves forward during
749
+ // forward scan for block cache lookup and points to different block. If Prev
750
+ // op is called, it needs to call SeekForPrev to point to right index_iter_ in
751
+ // BlockBasedTableIterator. This only happens when direction is changed from
752
+ // forward to backward.
753
+ if ((current_entry_is_merged_ &&
754
+ (!expect_total_order_inner_iter() || !iter_.Valid())) ||
755
+ auto_readahead_size_) {
724
756
  IterKey last_key;
725
757
  // Using kMaxSequenceNumber and kValueTypeForSeek
726
758
  // (not kValueTypeForSeekForPrev) to seek to a key strictly smaller
727
759
  // than saved_key_.
728
760
  last_key.SetInternalKey(ParsedInternalKey(
729
761
  saved_key_.GetUserKey(), kMaxSequenceNumber, kValueTypeForSeek));
730
- if (!expect_total_order_inner_iter()) {
762
+ if (!expect_total_order_inner_iter() || auto_readahead_size_) {
731
763
  iter_.SeekForPrev(last_key.GetInternalKey());
732
764
  } else {
733
765
  // Some iterators may not support SeekForPrev(), so we avoid using it
@@ -979,7 +1011,7 @@ bool DBIter::FindValueForCurrentKey() {
979
1011
  if (last_not_merge_type == kTypeDeletion ||
980
1012
  last_not_merge_type == kTypeSingleDeletion ||
981
1013
  last_not_merge_type == kTypeDeletionWithTimestamp) {
982
- if (!Merge(nullptr, saved_key_.GetUserKey())) {
1014
+ if (!MergeWithNoBaseValue(saved_key_.GetUserKey())) {
983
1015
  return false;
984
1016
  }
985
1017
  return true;
@@ -994,7 +1026,7 @@ bool DBIter::FindValueForCurrentKey() {
994
1026
  return false;
995
1027
  }
996
1028
  valid_ = true;
997
- if (!Merge(&blob_value_, saved_key_.GetUserKey())) {
1029
+ if (!MergeWithPlainBaseValue(blob_value_, saved_key_.GetUserKey())) {
998
1030
  return false;
999
1031
  }
1000
1032
 
@@ -1002,14 +1034,15 @@ bool DBIter::FindValueForCurrentKey() {
1002
1034
 
1003
1035
  return true;
1004
1036
  } else if (last_not_merge_type == kTypeWideColumnEntity) {
1005
- if (!MergeEntity(pinned_value_, saved_key_.GetUserKey())) {
1037
+ if (!MergeWithWideColumnBaseValue(pinned_value_,
1038
+ saved_key_.GetUserKey())) {
1006
1039
  return false;
1007
1040
  }
1008
1041
 
1009
1042
  return true;
1010
1043
  } else {
1011
1044
  assert(last_not_merge_type == kTypeValue);
1012
- if (!Merge(&pinned_value_, saved_key_.GetUserKey())) {
1045
+ if (!MergeWithPlainBaseValue(pinned_value_, saved_key_.GetUserKey())) {
1013
1046
  return false;
1014
1047
  }
1015
1048
  return true;
@@ -1185,8 +1218,7 @@ bool DBIter::FindValueForCurrentKeyUsingSeek() {
1185
1218
  }
1186
1219
 
1187
1220
  if (ikey.type == kTypeValue) {
1188
- const Slice val = iter_.value();
1189
- if (!Merge(&val, saved_key_.GetUserKey())) {
1221
+ if (!MergeWithPlainBaseValue(iter_.value(), saved_key_.GetUserKey())) {
1190
1222
  return false;
1191
1223
  }
1192
1224
  return true;
@@ -1205,7 +1237,7 @@ bool DBIter::FindValueForCurrentKeyUsingSeek() {
1205
1237
  return false;
1206
1238
  }
1207
1239
  valid_ = true;
1208
- if (!Merge(&blob_value_, saved_key_.GetUserKey())) {
1240
+ if (!MergeWithPlainBaseValue(blob_value_, saved_key_.GetUserKey())) {
1209
1241
  return false;
1210
1242
  }
1211
1243
 
@@ -1213,7 +1245,8 @@ bool DBIter::FindValueForCurrentKeyUsingSeek() {
1213
1245
 
1214
1246
  return true;
1215
1247
  } else if (ikey.type == kTypeWideColumnEntity) {
1216
- if (!MergeEntity(iter_.value(), saved_key_.GetUserKey())) {
1248
+ if (!MergeWithWideColumnBaseValue(iter_.value(),
1249
+ saved_key_.GetUserKey())) {
1217
1250
  return false;
1218
1251
  }
1219
1252
 
@@ -1227,7 +1260,7 @@ bool DBIter::FindValueForCurrentKeyUsingSeek() {
1227
1260
  }
1228
1261
  }
1229
1262
 
1230
- if (!Merge(nullptr, saved_key_.GetUserKey())) {
1263
+ if (!MergeWithNoBaseValue(saved_key_.GetUserKey())) {
1231
1264
  return false;
1232
1265
  }
1233
1266
 
@@ -1250,47 +1283,42 @@ bool DBIter::FindValueForCurrentKeyUsingSeek() {
1250
1283
  return true;
1251
1284
  }
1252
1285
 
1253
- bool DBIter::Merge(const Slice* val, const Slice& user_key) {
1286
+ bool DBIter::MergeWithNoBaseValue(const Slice& user_key) {
1254
1287
  // `op_failure_scope` (an output parameter) is not provided (set to nullptr)
1255
1288
  // since a failure must be propagated regardless of its value.
1256
- Status s = MergeHelper::TimedFullMerge(
1257
- merge_operator_, user_key, val, merge_context_.GetOperands(),
1258
- &saved_value_, logger_, statistics_, clock_, &pinned_value_,
1259
- /* update_num_ops_stats */ true,
1260
- /* op_failure_scope */ nullptr);
1261
- if (!s.ok()) {
1262
- valid_ = false;
1263
- status_ = s;
1264
- return false;
1265
- }
1266
-
1267
- SetValueAndColumnsFromPlain(pinned_value_.data() ? pinned_value_
1268
- : saved_value_);
1269
-
1270
- valid_ = true;
1271
- return true;
1289
+ ValueType result_type;
1290
+ const Status s = MergeHelper::TimedFullMerge(
1291
+ merge_operator_, user_key, MergeHelper::kNoBaseValue,
1292
+ merge_context_.GetOperands(), logger_, statistics_, clock_,
1293
+ /* update_num_ops_stats */ true, &saved_value_, &pinned_value_,
1294
+ &result_type, /* op_failure_scope */ nullptr);
1295
+ return SetValueAndColumnsFromMergeResult(s, result_type);
1272
1296
  }
1273
1297
 
1274
- bool DBIter::MergeEntity(const Slice& entity, const Slice& user_key) {
1298
+ bool DBIter::MergeWithPlainBaseValue(const Slice& value,
1299
+ const Slice& user_key) {
1275
1300
  // `op_failure_scope` (an output parameter) is not provided (set to nullptr)
1276
1301
  // since a failure must be propagated regardless of its value.
1277
- Status s = MergeHelper::TimedFullMergeWithEntity(
1278
- merge_operator_, user_key, entity, merge_context_.GetOperands(),
1279
- &saved_value_, logger_, statistics_, clock_,
1280
- /* update_num_ops_stats */ true,
1281
- /* op_failure_scope */ nullptr);
1282
- if (!s.ok()) {
1283
- valid_ = false;
1284
- status_ = s;
1285
- return false;
1286
- }
1287
-
1288
- if (!SetValueAndColumnsFromEntity(saved_value_)) {
1289
- return false;
1290
- }
1302
+ ValueType result_type;
1303
+ const Status s = MergeHelper::TimedFullMerge(
1304
+ merge_operator_, user_key, MergeHelper::kPlainBaseValue, value,
1305
+ merge_context_.GetOperands(), logger_, statistics_, clock_,
1306
+ /* update_num_ops_stats */ true, &saved_value_, &pinned_value_,
1307
+ &result_type, /* op_failure_scope */ nullptr);
1308
+ return SetValueAndColumnsFromMergeResult(s, result_type);
1309
+ }
1291
1310
 
1292
- valid_ = true;
1293
- return true;
1311
+ bool DBIter::MergeWithWideColumnBaseValue(const Slice& entity,
1312
+ const Slice& user_key) {
1313
+ // `op_failure_scope` (an output parameter) is not provided (set to nullptr)
1314
+ // since a failure must be propagated regardless of its value.
1315
+ ValueType result_type;
1316
+ const Status s = MergeHelper::TimedFullMerge(
1317
+ merge_operator_, user_key, MergeHelper::kWideBaseValue, entity,
1318
+ merge_context_.GetOperands(), logger_, statistics_, clock_,
1319
+ /* update_num_ops_stats */ true, &saved_value_, &pinned_value_,
1320
+ &result_type, /* op_failure_scope */ nullptr);
1321
+ return SetValueAndColumnsFromMergeResult(s, result_type);
1294
1322
  }
1295
1323
 
1296
1324
  // Move backwards until the key smaller than saved_key_.
@@ -209,6 +209,7 @@ class DBIter final : public Iterator {
209
209
  if (read_callback_) {
210
210
  read_callback_->Refresh(s);
211
211
  }
212
+ iter_.SetRangeDelReadSeqno(s);
212
213
  }
213
214
  void set_valid(bool v) { valid_ = v; }
214
215
 
@@ -312,14 +313,20 @@ class DBIter final : public Iterator {
312
313
 
313
314
  bool SetValueAndColumnsFromEntity(Slice slice);
314
315
 
316
+ bool SetValueAndColumnsFromMergeResult(const Status& merge_status,
317
+ ValueType result_type);
318
+
315
319
  void ResetValueAndColumns() {
316
320
  value_.clear();
317
321
  wide_columns_.clear();
318
322
  }
319
323
 
324
+ // The following methods perform the actual merge operation for the
325
+ // no base value/plain base value/wide-column base value cases.
320
326
  // If user-defined timestamp is enabled, `user_key` includes timestamp.
321
- bool Merge(const Slice* val, const Slice& user_key);
322
- bool MergeEntity(const Slice& entity, const Slice& user_key);
327
+ bool MergeWithNoBaseValue(const Slice& user_key);
328
+ bool MergeWithPlainBaseValue(const Slice& value, const Slice& user_key);
329
+ bool MergeWithWideColumnBaseValue(const Slice& entity, const Slice& user_key);
323
330
 
324
331
  const SliceTransform* prefix_extractor_;
325
332
  Env* const env_;
@@ -384,6 +391,7 @@ class DBIter final : public Iterator {
384
391
  bool expose_blob_index_;
385
392
  bool is_blob_;
386
393
  bool arena_mode_;
394
+ const Env::IOActivity io_activity_;
387
395
  // List of operands for merge operator.
388
396
  MergeContext merge_context_;
389
397
  LocalStatistics local_stats_;
@@ -394,6 +402,7 @@ class DBIter final : public Iterator {
394
402
  const Slice* const timestamp_lb_;
395
403
  const size_t timestamp_size_;
396
404
  std::string saved_timestamp_;
405
+ bool auto_readahead_size_;
397
406
  };
398
407
 
399
408
  // Return a new iterator that converts internal keys (yielded by
@@ -275,6 +275,7 @@ TEST_F(DBIteratorTest, DBIteratorPrevNext) {
275
275
 
276
276
  db_iter->Next();
277
277
  ASSERT_TRUE(!db_iter->Valid());
278
+ ASSERT_OK(db_iter->status());
278
279
  }
279
280
  // Test to check the SeekToLast() with iterate_upper_bound not set
280
281
  {
@@ -1415,6 +1416,7 @@ TEST_F(DBIteratorTest, DBIterator1) {
1415
1416
  ASSERT_EQ(db_iter->key().ToString(), "b");
1416
1417
  db_iter->Next();
1417
1418
  ASSERT_FALSE(db_iter->Valid());
1419
+ ASSERT_OK(db_iter->status());
1418
1420
  }
1419
1421
 
1420
1422
  TEST_F(DBIteratorTest, DBIterator2) {
@@ -1528,6 +1530,7 @@ TEST_F(DBIteratorTest, DBIterator5) {
1528
1530
  ASSERT_EQ(db_iter->value().ToString(), "merge_1");
1529
1531
  db_iter->Prev();
1530
1532
  ASSERT_TRUE(!db_iter->Valid());
1533
+ ASSERT_OK(db_iter->status());
1531
1534
  }
1532
1535
 
1533
1536
  {
@@ -1552,6 +1555,7 @@ TEST_F(DBIteratorTest, DBIterator5) {
1552
1555
  ASSERT_EQ(db_iter->value().ToString(), "merge_1,merge_2");
1553
1556
  db_iter->Prev();
1554
1557
  ASSERT_TRUE(!db_iter->Valid());
1558
+ ASSERT_OK(db_iter->status());
1555
1559
  }
1556
1560
 
1557
1561
  {
@@ -1576,6 +1580,7 @@ TEST_F(DBIteratorTest, DBIterator5) {
1576
1580
  ASSERT_EQ(db_iter->value().ToString(), "merge_1,merge_2,merge_3");
1577
1581
  db_iter->Prev();
1578
1582
  ASSERT_TRUE(!db_iter->Valid());
1583
+ ASSERT_OK(db_iter->status());
1579
1584
  }
1580
1585
 
1581
1586
  {
@@ -1600,6 +1605,7 @@ TEST_F(DBIteratorTest, DBIterator5) {
1600
1605
  ASSERT_EQ(db_iter->value().ToString(), "put_1");
1601
1606
  db_iter->Prev();
1602
1607
  ASSERT_TRUE(!db_iter->Valid());
1608
+ ASSERT_OK(db_iter->status());
1603
1609
  }
1604
1610
 
1605
1611
  {
@@ -1624,6 +1630,7 @@ TEST_F(DBIteratorTest, DBIterator5) {
1624
1630
  ASSERT_EQ(db_iter->value().ToString(), "put_1,merge_4");
1625
1631
  db_iter->Prev();
1626
1632
  ASSERT_TRUE(!db_iter->Valid());
1633
+ ASSERT_OK(db_iter->status());
1627
1634
  }
1628
1635
 
1629
1636
  {
@@ -1648,6 +1655,7 @@ TEST_F(DBIteratorTest, DBIterator5) {
1648
1655
  ASSERT_EQ(db_iter->value().ToString(), "put_1,merge_4,merge_5");
1649
1656
  db_iter->Prev();
1650
1657
  ASSERT_TRUE(!db_iter->Valid());
1658
+ ASSERT_OK(db_iter->status());
1651
1659
  }
1652
1660
 
1653
1661
  {
@@ -1672,6 +1680,7 @@ TEST_F(DBIteratorTest, DBIterator5) {
1672
1680
  ASSERT_EQ(db_iter->value().ToString(), "put_1,merge_4,merge_5,merge_6");
1673
1681
  db_iter->Prev();
1674
1682
  ASSERT_TRUE(!db_iter->Valid());
1683
+ ASSERT_OK(db_iter->status());
1675
1684
  }
1676
1685
 
1677
1686
  {
@@ -1726,6 +1735,7 @@ TEST_F(DBIteratorTest, DBIterator6) {
1726
1735
  ASSERT_EQ(db_iter->value().ToString(), "merge_1");
1727
1736
  db_iter->Prev();
1728
1737
  ASSERT_TRUE(!db_iter->Valid());
1738
+ ASSERT_OK(db_iter->status());
1729
1739
  }
1730
1740
 
1731
1741
  {
@@ -1750,6 +1760,7 @@ TEST_F(DBIteratorTest, DBIterator6) {
1750
1760
  ASSERT_EQ(db_iter->value().ToString(), "merge_1,merge_2");
1751
1761
  db_iter->Prev();
1752
1762
  ASSERT_TRUE(!db_iter->Valid());
1763
+ ASSERT_OK(db_iter->status());
1753
1764
  }
1754
1765
 
1755
1766
  {
@@ -1774,6 +1785,7 @@ TEST_F(DBIteratorTest, DBIterator6) {
1774
1785
  ASSERT_EQ(db_iter->value().ToString(), "merge_1,merge_2,merge_3");
1775
1786
  db_iter->Prev();
1776
1787
  ASSERT_TRUE(!db_iter->Valid());
1788
+ ASSERT_OK(db_iter->status());
1777
1789
  }
1778
1790
 
1779
1791
  {
@@ -1794,6 +1806,7 @@ TEST_F(DBIteratorTest, DBIterator6) {
1794
1806
  nullptr /* read_callback */));
1795
1807
  db_iter->SeekToLast();
1796
1808
  ASSERT_TRUE(!db_iter->Valid());
1809
+ ASSERT_OK(db_iter->status());
1797
1810
  }
1798
1811
 
1799
1812
  {
@@ -1818,6 +1831,7 @@ TEST_F(DBIteratorTest, DBIterator6) {
1818
1831
  ASSERT_EQ(db_iter->value().ToString(), "merge_4");
1819
1832
  db_iter->Prev();
1820
1833
  ASSERT_TRUE(!db_iter->Valid());
1834
+ ASSERT_OK(db_iter->status());
1821
1835
  }
1822
1836
 
1823
1837
  {
@@ -1842,6 +1856,7 @@ TEST_F(DBIteratorTest, DBIterator6) {
1842
1856
  ASSERT_EQ(db_iter->value().ToString(), "merge_4,merge_5");
1843
1857
  db_iter->Prev();
1844
1858
  ASSERT_TRUE(!db_iter->Valid());
1859
+ ASSERT_OK(db_iter->status());
1845
1860
  }
1846
1861
 
1847
1862
  {
@@ -1866,6 +1881,7 @@ TEST_F(DBIteratorTest, DBIterator6) {
1866
1881
  ASSERT_EQ(db_iter->value().ToString(), "merge_4,merge_5,merge_6");
1867
1882
  db_iter->Prev();
1868
1883
  ASSERT_TRUE(!db_iter->Valid());
1884
+ ASSERT_OK(db_iter->status());
1869
1885
  }
1870
1886
  }
1871
1887
 
@@ -1910,6 +1926,7 @@ TEST_F(DBIteratorTest, DBIterator7) {
1910
1926
  ASSERT_EQ(db_iter->value().ToString(), "merge_1");
1911
1927
  db_iter->Prev();
1912
1928
  ASSERT_TRUE(!db_iter->Valid());
1929
+ ASSERT_OK(db_iter->status());
1913
1930
  }
1914
1931
 
1915
1932
  {
@@ -1952,6 +1969,7 @@ TEST_F(DBIteratorTest, DBIterator7) {
1952
1969
  ASSERT_EQ(db_iter->value().ToString(), "merge_1");
1953
1970
  db_iter->Prev();
1954
1971
  ASSERT_TRUE(!db_iter->Valid());
1972
+ ASSERT_OK(db_iter->status());
1955
1973
  }
1956
1974
 
1957
1975
  {
@@ -1994,6 +2012,7 @@ TEST_F(DBIteratorTest, DBIterator7) {
1994
2012
  ASSERT_EQ(db_iter->value().ToString(), "merge_1");
1995
2013
  db_iter->Prev();
1996
2014
  ASSERT_TRUE(!db_iter->Valid());
2015
+ ASSERT_OK(db_iter->status());
1997
2016
  }
1998
2017
 
1999
2018
  {
@@ -2041,6 +2060,7 @@ TEST_F(DBIteratorTest, DBIterator7) {
2041
2060
  ASSERT_EQ(db_iter->value().ToString(), "merge_1");
2042
2061
  db_iter->Prev();
2043
2062
  ASSERT_TRUE(!db_iter->Valid());
2063
+ ASSERT_OK(db_iter->status());
2044
2064
  }
2045
2065
 
2046
2066
  {
@@ -2089,6 +2109,7 @@ TEST_F(DBIteratorTest, DBIterator7) {
2089
2109
  ASSERT_EQ(db_iter->value().ToString(), "merge_1");
2090
2110
  db_iter->Prev();
2091
2111
  ASSERT_TRUE(!db_iter->Valid());
2112
+ ASSERT_OK(db_iter->status());
2092
2113
  }
2093
2114
 
2094
2115
  {
@@ -2131,6 +2152,7 @@ TEST_F(DBIteratorTest, DBIterator7) {
2131
2152
  ASSERT_EQ(db_iter->value().ToString(), "merge_1");
2132
2153
  db_iter->Prev();
2133
2154
  ASSERT_TRUE(!db_iter->Valid());
2155
+ ASSERT_OK(db_iter->status());
2134
2156
  }
2135
2157
 
2136
2158
  {
@@ -2179,6 +2201,7 @@ TEST_F(DBIteratorTest, DBIterator7) {
2179
2201
  ASSERT_EQ(db_iter->value().ToString(), "merge_1");
2180
2202
  db_iter->Prev();
2181
2203
  ASSERT_TRUE(!db_iter->Valid());
2204
+ ASSERT_OK(db_iter->status());
2182
2205
  }
2183
2206
 
2184
2207
  {
@@ -2228,6 +2251,7 @@ TEST_F(DBIteratorTest, DBIterator7) {
2228
2251
  ASSERT_EQ(db_iter->value().ToString(), "merge_1");
2229
2252
  db_iter->Prev();
2230
2253
  ASSERT_TRUE(!db_iter->Valid());
2254
+ ASSERT_OK(db_iter->status());
2231
2255
  }
2232
2256
 
2233
2257
  {
@@ -2271,6 +2295,7 @@ TEST_F(DBIteratorTest, DBIterator7) {
2271
2295
  ASSERT_EQ(db_iter->value().ToString(), "merge_1");
2272
2296
  db_iter->Prev();
2273
2297
  ASSERT_TRUE(!db_iter->Valid());
2298
+ ASSERT_OK(db_iter->status());
2274
2299
  }
2275
2300
  }
2276
2301
 
@@ -2440,6 +2465,7 @@ TEST_F(DBIteratorTest, SeekToLastOccurrenceSeq0) {
2440
2465
  ASSERT_EQ(db_iter->value().ToString(), "2");
2441
2466
  db_iter->Next();
2442
2467
  ASSERT_FALSE(db_iter->Valid());
2468
+ ASSERT_OK(db_iter->status());
2443
2469
  }
2444
2470
 
2445
2471
  TEST_F(DBIteratorTest, DBIterator11) {
@@ -2469,6 +2495,7 @@ TEST_F(DBIteratorTest, DBIterator11) {
2469
2495
  ASSERT_EQ(db_iter->key().ToString(), "b");
2470
2496
  db_iter->Next();
2471
2497
  ASSERT_FALSE(db_iter->Valid());
2498
+ ASSERT_OK(db_iter->status());
2472
2499
  }
2473
2500
 
2474
2501
  TEST_F(DBIteratorTest, DBIterator12) {
@@ -2497,6 +2524,7 @@ TEST_F(DBIteratorTest, DBIterator12) {
2497
2524
  ASSERT_EQ(db_iter->value().ToString(), "1");
2498
2525
  db_iter->Prev();
2499
2526
  ASSERT_FALSE(db_iter->Valid());
2527
+ ASSERT_OK(db_iter->status());
2500
2528
  }
2501
2529
 
2502
2530
  TEST_F(DBIteratorTest, DBIterator13) {
@@ -2635,6 +2663,7 @@ TEST_F(DBIterWithMergeIterTest, InnerMergeIterator1) {
2635
2663
  ASSERT_EQ(db_iter_->value().ToString(), "3");
2636
2664
  db_iter_->Next();
2637
2665
  ASSERT_FALSE(db_iter_->Valid());
2666
+ ASSERT_OK(db_iter_->status());
2638
2667
  }
2639
2668
 
2640
2669
  TEST_F(DBIterWithMergeIterTest, InnerMergeIterator2) {