@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
@@ -15,6 +15,11 @@
15
15
  #include "db/forward_iterator.h"
16
16
  #include "port/stack_trace.h"
17
17
 
18
+ namespace {
19
+ static bool enable_io_uring = true;
20
+ extern "C" bool RocksDbIOUringEnable() { return enable_io_uring; }
21
+ } // namespace
22
+
18
23
  namespace ROCKSDB_NAMESPACE {
19
24
 
20
25
  class DBTestTailingIterator : public DBTestBase,
@@ -47,97 +52,129 @@ TEST_P(DBTestTailingIterator, TailingIteratorSingle) {
47
52
 
48
53
  iter->Next();
49
54
  ASSERT_TRUE(!iter->Valid());
55
+ ASSERT_OK(iter->status());
50
56
  }
51
57
 
52
58
  TEST_P(DBTestTailingIterator, TailingIteratorKeepAdding) {
53
- CreateAndReopenWithCF({"pikachu"}, CurrentOptions());
59
+ if (mem_env_ || encrypted_env_) {
60
+ ROCKSDB_GTEST_BYPASS("Test requires non-mem or non-encrypted environment");
61
+ return;
62
+ }
63
+ std::unique_ptr<Env> env(
64
+ new CompositeEnvWrapper(env_, FileSystem::Default()));
65
+ Options options = CurrentOptions();
66
+ options.env = env.get();
67
+ CreateAndReopenWithCF({"pikachu"}, options);
54
68
  ReadOptions read_options;
55
69
  read_options.tailing = true;
56
70
  if (GetParam()) {
57
71
  read_options.async_io = true;
58
72
  }
59
- std::unique_ptr<Iterator> iter(db_->NewIterator(read_options, handles_[1]));
60
- ASSERT_OK(iter->status());
61
- std::string value(1024, 'a');
62
73
 
63
- const int num_records = 10000;
64
- for (int i = 0; i < num_records; ++i) {
65
- char buf[32];
66
- snprintf(buf, sizeof(buf), "%016d", i);
74
+ {
75
+ std::unique_ptr<Iterator> iter(db_->NewIterator(read_options, handles_[1]));
76
+ ASSERT_OK(iter->status());
77
+ std::string value(1024, 'a');
67
78
 
68
- Slice key(buf, 16);
69
- ASSERT_OK(Put(1, key, value));
79
+ const int num_records = 10000;
80
+ for (int i = 0; i < num_records; ++i) {
81
+ char buf[32];
82
+ snprintf(buf, sizeof(buf), "%016d", i);
70
83
 
71
- iter->Seek(key);
72
- ASSERT_TRUE(iter->Valid());
73
- ASSERT_EQ(iter->key().compare(key), 0);
84
+ Slice key(buf, 16);
85
+ ASSERT_OK(Put(1, key, value));
86
+
87
+ iter->Seek(key);
88
+ ASSERT_TRUE(iter->Valid());
89
+ ASSERT_EQ(iter->key().compare(key), 0);
90
+ }
74
91
  }
92
+ Close();
75
93
  }
76
94
 
77
95
  TEST_P(DBTestTailingIterator, TailingIteratorSeekToNext) {
78
- CreateAndReopenWithCF({"pikachu"}, CurrentOptions());
96
+ if (mem_env_ || encrypted_env_) {
97
+ ROCKSDB_GTEST_BYPASS("Test requires non-mem or non-encrypted environment");
98
+ return;
99
+ }
100
+ std::unique_ptr<Env> env(
101
+ new CompositeEnvWrapper(env_, FileSystem::Default()));
102
+ Options options = CurrentOptions();
103
+ options.env = env.get();
104
+ CreateAndReopenWithCF({"pikachu"}, options);
79
105
  ReadOptions read_options;
80
106
  read_options.tailing = true;
81
107
  if (GetParam()) {
82
108
  read_options.async_io = true;
83
109
  }
84
- std::unique_ptr<Iterator> iter(db_->NewIterator(read_options, handles_[1]));
85
- ASSERT_OK(iter->status());
86
- std::unique_ptr<Iterator> itern(db_->NewIterator(read_options, handles_[1]));
87
- ASSERT_OK(itern->status());
88
- std::string value(1024, 'a');
89
-
90
- const int num_records = 1000;
91
- for (int i = 1; i < num_records; ++i) {
92
- char buf1[32];
93
- char buf2[32];
94
- snprintf(buf1, sizeof(buf1), "00a0%016d", i * 5);
95
-
96
- Slice key(buf1, 20);
97
- ASSERT_OK(Put(1, key, value));
110
+ {
111
+ std::unique_ptr<Iterator> iter(db_->NewIterator(read_options, handles_[1]));
112
+ ASSERT_OK(iter->status());
113
+ std::unique_ptr<Iterator> itern(
114
+ db_->NewIterator(read_options, handles_[1]));
115
+ ASSERT_OK(itern->status());
116
+ std::string value(1024, 'a');
117
+
118
+ const int num_records = 1000;
119
+ for (int i = 1; i < num_records; ++i) {
120
+ char buf1[32];
121
+ char buf2[32];
122
+ snprintf(buf1, sizeof(buf1), "00a0%016d", i * 5);
123
+
124
+ Slice key(buf1, 20);
125
+ ASSERT_OK(Put(1, key, value));
126
+
127
+ if (i % 100 == 99) {
128
+ ASSERT_OK(Flush(1));
129
+ }
98
130
 
99
- if (i % 100 == 99) {
100
- ASSERT_OK(Flush(1));
131
+ snprintf(buf2, sizeof(buf2), "00a0%016d", i * 5 - 2);
132
+ Slice target(buf2, 20);
133
+ iter->Seek(target);
134
+ ASSERT_TRUE(iter->Valid());
135
+ ASSERT_EQ(iter->key().compare(key), 0);
136
+ if (i == 1) {
137
+ itern->SeekToFirst();
138
+ } else {
139
+ itern->Next();
140
+ }
141
+ ASSERT_TRUE(itern->Valid());
142
+ ASSERT_EQ(itern->key().compare(key), 0);
101
143
  }
144
+ ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->ClearAllCallBacks();
145
+ ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->DisableProcessing();
146
+ for (int i = 2 * num_records; i > 0; --i) {
147
+ char buf1[32];
148
+ char buf2[32];
149
+ snprintf(buf1, sizeof(buf1), "00a0%016d", i * 5);
150
+
151
+ Slice key(buf1, 20);
152
+ ASSERT_OK(Put(1, key, value));
153
+
154
+ if (i % 100 == 99) {
155
+ ASSERT_OK(Flush(1));
156
+ }
102
157
 
103
- snprintf(buf2, sizeof(buf2), "00a0%016d", i * 5 - 2);
104
- Slice target(buf2, 20);
105
- iter->Seek(target);
106
- ASSERT_TRUE(iter->Valid());
107
- ASSERT_EQ(iter->key().compare(key), 0);
108
- if (i == 1) {
109
- itern->SeekToFirst();
110
- } else {
111
- itern->Next();
158
+ snprintf(buf2, sizeof(buf2), "00a0%016d", i * 5 - 2);
159
+ Slice target(buf2, 20);
160
+ iter->Seek(target);
161
+ ASSERT_TRUE(iter->Valid());
162
+ ASSERT_EQ(iter->key().compare(key), 0);
112
163
  }
113
- ASSERT_TRUE(itern->Valid());
114
- ASSERT_EQ(itern->key().compare(key), 0);
115
- }
116
- ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->ClearAllCallBacks();
117
- ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->DisableProcessing();
118
- for (int i = 2 * num_records; i > 0; --i) {
119
- char buf1[32];
120
- char buf2[32];
121
- snprintf(buf1, sizeof(buf1), "00a0%016d", i * 5);
122
-
123
- Slice key(buf1, 20);
124
- ASSERT_OK(Put(1, key, value));
125
-
126
- if (i % 100 == 99) {
127
- ASSERT_OK(Flush(1));
128
- }
129
-
130
- snprintf(buf2, sizeof(buf2), "00a0%016d", i * 5 - 2);
131
- Slice target(buf2, 20);
132
- iter->Seek(target);
133
- ASSERT_TRUE(iter->Valid());
134
- ASSERT_EQ(iter->key().compare(key), 0);
135
164
  }
165
+ Close();
136
166
  }
137
167
 
138
168
  TEST_P(DBTestTailingIterator, TailingIteratorTrimSeekToNext) {
169
+ if (mem_env_ || encrypted_env_) {
170
+ ROCKSDB_GTEST_BYPASS("Test requires non-mem or non-encrypted environment");
171
+ return;
172
+ }
139
173
  const uint64_t k150KB = 150 * 1024;
174
+ std::unique_ptr<Env> env(
175
+ new CompositeEnvWrapper(env_, FileSystem::Default()));
140
176
  Options options;
177
+ options.env = env.get();
141
178
  options.write_buffer_size = k150KB;
142
179
  options.max_write_buffer_number = 3;
143
180
  options.min_write_buffer_number_to_merge = 2;
@@ -278,56 +315,73 @@ TEST_P(DBTestTailingIterator, TailingIteratorTrimSeekToNext) {
278
315
  }
279
316
 
280
317
  TEST_P(DBTestTailingIterator, TailingIteratorDeletes) {
281
- CreateAndReopenWithCF({"pikachu"}, CurrentOptions());
318
+ if (mem_env_ || encrypted_env_) {
319
+ ROCKSDB_GTEST_BYPASS("Test requires non-mem or non-encrypted environment");
320
+ return;
321
+ }
322
+ std::unique_ptr<Env> env(
323
+ new CompositeEnvWrapper(env_, FileSystem::Default()));
324
+ Options options = CurrentOptions();
325
+ options.env = env.get();
326
+ CreateAndReopenWithCF({"pikachu"}, options);
282
327
  ReadOptions read_options;
283
328
  read_options.tailing = true;
284
329
  if (GetParam()) {
285
330
  read_options.async_io = true;
286
331
  }
332
+ {
333
+ std::unique_ptr<Iterator> iter(db_->NewIterator(read_options, handles_[1]));
334
+ ASSERT_OK(iter->status());
287
335
 
288
- std::unique_ptr<Iterator> iter(db_->NewIterator(read_options, handles_[1]));
289
- ASSERT_OK(iter->status());
290
-
291
- // write a single record, read it using the iterator, then delete it
292
- ASSERT_OK(Put(1, "0test", "test"));
293
- iter->SeekToFirst();
294
- ASSERT_TRUE(iter->Valid());
295
- ASSERT_EQ(iter->key().ToString(), "0test");
296
- ASSERT_OK(Delete(1, "0test"));
336
+ // write a single record, read it using the iterator, then delete it
337
+ ASSERT_OK(Put(1, "0test", "test"));
338
+ iter->SeekToFirst();
339
+ ASSERT_TRUE(iter->Valid());
340
+ ASSERT_EQ(iter->key().ToString(), "0test");
341
+ ASSERT_OK(Delete(1, "0test"));
297
342
 
298
- // write many more records
299
- const int num_records = 10000;
300
- std::string value(1024, 'A');
343
+ // write many more records
344
+ const int num_records = 10000;
345
+ std::string value(1024, 'A');
301
346
 
302
- for (int i = 0; i < num_records; ++i) {
303
- char buf[32];
304
- snprintf(buf, sizeof(buf), "1%015d", i);
347
+ for (int i = 0; i < num_records; ++i) {
348
+ char buf[32];
349
+ snprintf(buf, sizeof(buf), "1%015d", i);
305
350
 
306
- Slice key(buf, 16);
307
- ASSERT_OK(Put(1, key, value));
308
- }
309
-
310
- // force a flush to make sure that no records are read from memtable
311
- ASSERT_OK(Flush(1));
351
+ Slice key(buf, 16);
352
+ ASSERT_OK(Put(1, key, value));
353
+ }
312
354
 
313
- // skip "0test"
314
- iter->Next();
355
+ // force a flush to make sure that no records are read from memtable
356
+ ASSERT_OK(Flush(1));
315
357
 
316
- // make sure we can read all new records using the existing iterator
317
- int count = 0;
318
- for (; iter->Valid(); iter->Next(), ++count)
319
- ;
358
+ // skip "0test"
359
+ iter->Next();
320
360
 
321
- ASSERT_EQ(count, num_records);
361
+ // make sure we can read all new records using the existing iterator
362
+ int count = 0;
363
+ for (; iter->Valid(); iter->Next(), ++count)
364
+ ;
365
+ ASSERT_OK(iter->status());
366
+ ASSERT_EQ(count, num_records);
367
+ }
368
+ Close();
322
369
  }
323
370
 
324
371
  TEST_P(DBTestTailingIterator, TailingIteratorPrefixSeek) {
372
+ if (mem_env_ || encrypted_env_) {
373
+ ROCKSDB_GTEST_BYPASS("Test requires non-mem or non-encrypted environment");
374
+ return;
375
+ }
325
376
  ReadOptions read_options;
326
377
  read_options.tailing = true;
327
378
  if (GetParam()) {
328
379
  read_options.async_io = true;
329
380
  }
381
+ std::unique_ptr<Env> env(
382
+ new CompositeEnvWrapper(env_, FileSystem::Default()));
330
383
  Options options = CurrentOptions();
384
+ options.env = env.get();
331
385
  options.create_if_missing = true;
332
386
  options.disable_auto_compactions = true;
333
387
  options.prefix_extractor.reset(NewFixedPrefixTransform(2));
@@ -336,28 +390,40 @@ TEST_P(DBTestTailingIterator, TailingIteratorPrefixSeek) {
336
390
  DestroyAndReopen(options);
337
391
  CreateAndReopenWithCF({"pikachu"}, options);
338
392
 
339
- std::unique_ptr<Iterator> iter(db_->NewIterator(read_options, handles_[1]));
340
- ASSERT_OK(iter->status());
341
- ASSERT_OK(Put(1, "0101", "test"));
393
+ {
394
+ std::unique_ptr<Iterator> iter(db_->NewIterator(read_options, handles_[1]));
395
+ ASSERT_OK(iter->status());
396
+ ASSERT_OK(Put(1, "0101", "test"));
342
397
 
343
- ASSERT_OK(Flush(1));
398
+ ASSERT_OK(Flush(1));
344
399
 
345
- ASSERT_OK(Put(1, "0202", "test"));
400
+ ASSERT_OK(Put(1, "0202", "test"));
346
401
 
347
- // Seek(0102) shouldn't find any records since 0202 has a different prefix
348
- iter->Seek("0102");
349
- ASSERT_TRUE(!iter->Valid());
402
+ // Seek(0102) shouldn't find any records since 0202 has a different prefix
403
+ iter->Seek("0102");
404
+ ASSERT_TRUE(!iter->Valid());
350
405
 
351
- iter->Seek("0202");
352
- ASSERT_TRUE(iter->Valid());
353
- ASSERT_EQ(iter->key().ToString(), "0202");
406
+ iter->Seek("0202");
407
+ ASSERT_TRUE(iter->Valid());
408
+ ASSERT_EQ(iter->key().ToString(), "0202");
354
409
 
355
- iter->Next();
356
- ASSERT_TRUE(!iter->Valid());
410
+ iter->Next();
411
+ ASSERT_TRUE(!iter->Valid());
412
+ ASSERT_OK(iter->status());
413
+ }
414
+ Close();
357
415
  }
358
416
 
359
417
  TEST_P(DBTestTailingIterator, TailingIteratorIncomplete) {
360
- CreateAndReopenWithCF({"pikachu"}, CurrentOptions());
418
+ if (mem_env_ || encrypted_env_) {
419
+ ROCKSDB_GTEST_BYPASS("Test requires non-mem or non-encrypted environment");
420
+ return;
421
+ }
422
+ std::unique_ptr<Env> env(
423
+ new CompositeEnvWrapper(env_, FileSystem::Default()));
424
+ Options options = CurrentOptions();
425
+ options.env = env.get();
426
+ CreateAndReopenWithCF({"pikachu"}, options);
361
427
  ReadOptions read_options;
362
428
  read_options.tailing = true;
363
429
  if (GetParam()) {
@@ -370,20 +436,30 @@ TEST_P(DBTestTailingIterator, TailingIteratorIncomplete) {
370
436
 
371
437
  ASSERT_OK(db_->Put(WriteOptions(), key, value));
372
438
 
373
- std::unique_ptr<Iterator> iter(db_->NewIterator(read_options));
374
- ASSERT_OK(iter->status());
375
- iter->SeekToFirst();
376
- // we either see the entry or it's not in cache
377
- ASSERT_TRUE(iter->Valid() || iter->status().IsIncomplete());
378
-
379
- ASSERT_OK(db_->CompactRange(CompactRangeOptions(), nullptr, nullptr));
380
- iter->SeekToFirst();
381
- // should still be true after compaction
382
- ASSERT_TRUE(iter->Valid() || iter->status().IsIncomplete());
439
+ {
440
+ std::unique_ptr<Iterator> iter(db_->NewIterator(read_options));
441
+ ASSERT_OK(iter->status());
442
+ iter->SeekToFirst();
443
+ // we either see the entry or it's not in cache
444
+ ASSERT_TRUE(iter->Valid() || iter->status().IsIncomplete());
445
+
446
+ ASSERT_OK(db_->CompactRange(CompactRangeOptions(), nullptr, nullptr));
447
+ iter->SeekToFirst();
448
+ // should still be true after compaction
449
+ ASSERT_TRUE(iter->Valid() || iter->status().IsIncomplete());
450
+ }
451
+ Close();
383
452
  }
384
453
 
385
454
  TEST_P(DBTestTailingIterator, TailingIteratorSeekToSame) {
455
+ if (mem_env_ || encrypted_env_) {
456
+ ROCKSDB_GTEST_BYPASS("Test requires non-mem or non-encrypted environment");
457
+ return;
458
+ }
459
+ std::unique_ptr<Env> env(
460
+ new CompositeEnvWrapper(env_, FileSystem::Default()));
386
461
  Options options = CurrentOptions();
462
+ options.env = env.get();
387
463
  options.compaction_style = kCompactionStyleUniversal;
388
464
  options.write_buffer_size = 1000;
389
465
  CreateAndReopenWithCF({"pikachu"}, options);
@@ -403,28 +479,39 @@ TEST_P(DBTestTailingIterator, TailingIteratorSeekToSame) {
403
479
  ASSERT_OK(db_->Put(WriteOptions(), key, value));
404
480
  }
405
481
 
406
- std::unique_ptr<Iterator> iter(db_->NewIterator(read_options));
407
- ASSERT_OK(iter->status());
408
- // Seek to 00001. We expect to find 00002.
409
- std::string start_key = "00001";
410
- iter->Seek(start_key);
411
- ASSERT_TRUE(iter->Valid());
482
+ {
483
+ std::unique_ptr<Iterator> iter(db_->NewIterator(read_options));
484
+ ASSERT_OK(iter->status());
485
+ // Seek to 00001. We expect to find 00002.
486
+ std::string start_key = "00001";
487
+ iter->Seek(start_key);
488
+ ASSERT_TRUE(iter->Valid());
412
489
 
413
- std::string found = iter->key().ToString();
414
- ASSERT_EQ("00002", found);
490
+ std::string found = iter->key().ToString();
491
+ ASSERT_EQ("00002", found);
415
492
 
416
- // Now seek to the same key. The iterator should remain in the same
417
- // position.
418
- iter->Seek(found);
419
- ASSERT_TRUE(iter->Valid());
420
- ASSERT_EQ(found, iter->key().ToString());
493
+ // Now seek to the same key. The iterator should remain in the same
494
+ // position.
495
+ iter->Seek(found);
496
+ ASSERT_TRUE(iter->Valid());
497
+ ASSERT_EQ(found, iter->key().ToString());
498
+ }
499
+ Close();
421
500
  }
422
501
 
423
502
  // Sets iterate_upper_bound and verifies that ForwardIterator doesn't call
424
503
  // Seek() on immutable iterators when target key is >= prev_key and all
425
504
  // iterators, including the memtable iterator, are over the upper bound.
426
505
  TEST_P(DBTestTailingIterator, TailingIteratorUpperBound) {
427
- CreateAndReopenWithCF({"pikachu"}, CurrentOptions());
506
+ if (mem_env_ || encrypted_env_) {
507
+ ROCKSDB_GTEST_BYPASS("Test requires non-mem or non-encrypted environment");
508
+ return;
509
+ }
510
+ std::unique_ptr<Env> env(
511
+ new CompositeEnvWrapper(env_, FileSystem::Default()));
512
+ Options options = CurrentOptions();
513
+ options.env = env.get();
514
+ CreateAndReopenWithCF({"pikachu"}, options);
428
515
 
429
516
  const Slice upper_bound("20", 3);
430
517
  ReadOptions read_options;
@@ -441,34 +528,51 @@ TEST_P(DBTestTailingIterator, TailingIteratorUpperBound) {
441
528
  // Add another key to the memtable.
442
529
  ASSERT_OK(Put(1, "21", "21"));
443
530
 
444
- std::unique_ptr<Iterator> it(db_->NewIterator(read_options, handles_[1]));
445
- ASSERT_OK(it->status());
446
- it->Seek("12");
447
- ASSERT_TRUE(it->Valid());
448
- ASSERT_EQ("12", it->key().ToString());
449
-
450
- it->Next();
451
- // Not valid since "21" is over the upper bound.
452
- ASSERT_FALSE(it->Valid());
453
- ASSERT_OK(it->status());
454
- // This keeps track of the number of times NeedToSeekImmutable() was true.
455
- int immutable_seeks = 0;
456
- ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->SetCallBack(
457
- "ForwardIterator::SeekInternal:Immutable",
458
- [&](void* /*arg*/) { ++immutable_seeks; });
459
-
460
- // Seek to 13. This should not require any immutable seeks.
461
- ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->EnableProcessing();
462
- it->Seek("13");
463
- ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->DisableProcessing();
464
-
465
- ASSERT_FALSE(it->Valid());
466
- ASSERT_OK(it->status());
467
- if (GetParam()) {
468
- ASSERT_EQ(1, immutable_seeks);
469
- } else {
470
- ASSERT_EQ(0, immutable_seeks);
531
+ {
532
+ bool read_async_called = false;
533
+
534
+ SyncPoint::GetInstance()->SetCallBack(
535
+ "UpdateResults::io_uring_result",
536
+ [&](void* /*arg*/) { read_async_called = true; });
537
+ ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->EnableProcessing();
538
+
539
+ auto it =
540
+ std::unique_ptr<Iterator>(db_->NewIterator(read_options, handles_[1]));
541
+ ASSERT_OK(it->status());
542
+ it->Seek("12");
543
+ ASSERT_TRUE(it->Valid());
544
+ ASSERT_EQ("12", it->key().ToString());
545
+
546
+ it->Next();
547
+ // Not valid since "21" is over the upper bound.
548
+ ASSERT_FALSE(it->Valid());
549
+ ASSERT_OK(it->status());
550
+ // This keeps track of the number of times NeedToSeekImmutable() was true.
551
+ int immutable_seeks = 0;
552
+ ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->SetCallBack(
553
+ "ForwardIterator::SeekInternal:Immutable",
554
+ [&](void* /*arg*/) { ++immutable_seeks; });
555
+
556
+ // Seek to 13. This should not require any immutable seeks.
557
+ ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->EnableProcessing();
558
+ it->Seek("13");
559
+ ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->DisableProcessing();
560
+ ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->ClearAllCallBacks();
561
+
562
+ SyncPoint::GetInstance()->SetCallBack(
563
+ "UpdateResults::io_uring_result",
564
+ [&](void* /*arg*/) { read_async_called = true; });
565
+ ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->EnableProcessing();
566
+
567
+ ASSERT_FALSE(it->Valid());
568
+ ASSERT_OK(it->status());
569
+ if (GetParam() && read_async_called) {
570
+ ASSERT_EQ(1, immutable_seeks);
571
+ } else {
572
+ ASSERT_EQ(0, immutable_seeks);
573
+ }
471
574
  }
575
+ Close();
472
576
  }
473
577
 
474
578
  TEST_P(DBTestTailingIterator, TailingIteratorGap) {
@@ -480,7 +584,15 @@ TEST_P(DBTestTailingIterator, TailingIteratorGap) {
480
584
  // the largest key of index n file and the smallest key of index n+1 file
481
585
  // if both file fit in that gap. In this example, 25 < key < 35
482
586
  // https://github.com/facebook/rocksdb/issues/1372
483
- CreateAndReopenWithCF({"pikachu"}, CurrentOptions());
587
+ if (mem_env_ || encrypted_env_) {
588
+ ROCKSDB_GTEST_BYPASS("Test requires non-mem or non-encrypted environment");
589
+ return;
590
+ }
591
+ std::unique_ptr<Env> env(
592
+ new CompositeEnvWrapper(env_, FileSystem::Default()));
593
+ Options options = CurrentOptions();
594
+ options.env = env.get();
595
+ CreateAndReopenWithCF({"pikachu"}, options);
484
596
 
485
597
  ReadOptions read_options;
486
598
  read_options.tailing = true;
@@ -512,20 +624,23 @@ TEST_P(DBTestTailingIterator, TailingIteratorGap) {
512
624
  ColumnFamilyMetaData meta;
513
625
  db_->GetColumnFamilyMetaData(handles_[1], &meta);
514
626
 
515
- std::unique_ptr<Iterator> it(db_->NewIterator(read_options, handles_[1]));
516
- it->Seek("30");
517
- ASSERT_TRUE(it->Valid());
518
- ASSERT_EQ("30", it->key().ToString());
627
+ {
628
+ std::unique_ptr<Iterator> it(db_->NewIterator(read_options, handles_[1]));
629
+ it->Seek("30");
630
+ ASSERT_TRUE(it->Valid());
631
+ ASSERT_EQ("30", it->key().ToString());
519
632
 
520
- it->Next();
521
- ASSERT_TRUE(it->Valid());
522
- ASSERT_EQ("35", it->key().ToString());
633
+ it->Next();
634
+ ASSERT_TRUE(it->Valid());
635
+ ASSERT_EQ("35", it->key().ToString());
523
636
 
524
- it->Next();
525
- ASSERT_TRUE(it->Valid());
526
- ASSERT_EQ("40", it->key().ToString());
637
+ it->Next();
638
+ ASSERT_TRUE(it->Valid());
639
+ ASSERT_EQ("40", it->key().ToString());
527
640
 
528
- ASSERT_OK(it->status());
641
+ ASSERT_OK(it->status());
642
+ }
643
+ Close();
529
644
  }
530
645
 
531
646
  TEST_P(DBTestTailingIterator, SeekWithUpperBoundBug) {