@nxtedition/rocksdb 6.0.1 → 7.0.0-alpha.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 (490) hide show
  1. package/BUILDING.md +12 -4
  2. package/binding.cc +421 -40
  3. package/deps/rocksdb/build_version.cc +4 -10
  4. package/deps/rocksdb/rocksdb/CMakeLists.txt +26 -3
  5. package/deps/rocksdb/rocksdb/Makefile +73 -91
  6. package/deps/rocksdb/rocksdb/TARGETS +27 -2
  7. package/deps/rocksdb/rocksdb/cache/cache_test.cc +29 -17
  8. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +511 -0
  9. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +299 -0
  10. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +3 -0
  11. package/deps/rocksdb/rocksdb/cache/lru_cache.h +7 -0
  12. package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +7 -0
  13. package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +29 -0
  14. package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +29 -0
  15. package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +29 -0
  16. package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +33 -0
  17. package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +29 -0
  18. package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +29 -0
  19. package/deps/rocksdb/rocksdb/cmake/modules/Finduring.cmake +26 -0
  20. package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +29 -0
  21. package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +10 -0
  22. package/deps/rocksdb/rocksdb/common.mk +30 -0
  23. package/deps/rocksdb/rocksdb/crash_test.mk +3 -3
  24. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +1 -1
  25. package/deps/rocksdb/rocksdb/db/blob/blob_index.h +3 -3
  26. package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +7 -7
  27. package/deps/rocksdb/rocksdb/db/builder.cc +22 -7
  28. package/deps/rocksdb/rocksdb/db/c.cc +71 -0
  29. package/deps/rocksdb/rocksdb/db/c_test.c +28 -2
  30. package/deps/rocksdb/rocksdb/db/column_family.cc +12 -5
  31. package/deps/rocksdb/rocksdb/db/column_family_test.cc +23 -22
  32. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +11 -11
  33. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +2 -2
  34. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +36 -10
  35. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +4 -1
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +3 -2
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +54 -16
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +14 -2
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +3 -3
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +85 -18
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +7 -7
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +1 -1
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +23 -22
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +1 -1
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +151 -32
  46. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -1
  47. package/deps/rocksdb/rocksdb/db/convenience.cc +8 -6
  48. package/deps/rocksdb/rocksdb/db/corruption_test.cc +209 -38
  49. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +2 -2
  50. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +404 -32
  51. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +28 -25
  52. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +85 -138
  53. package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +68 -3
  54. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +38 -13
  55. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +1 -1
  56. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1 -1
  57. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +11 -20
  58. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +15 -1
  59. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +12 -9
  60. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +5 -4
  61. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +1 -1
  62. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +2 -2
  63. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +42 -10
  64. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +54 -23
  65. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +3 -0
  66. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +14 -4
  67. package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +26 -18
  68. package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +8 -7
  69. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +8 -8
  70. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +6 -3
  71. package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +2 -2
  72. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +6 -6
  73. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +2 -2
  74. package/deps/rocksdb/rocksdb/db/db_options_test.cc +28 -12
  75. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +16 -15
  76. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +6 -4
  77. package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +331 -0
  78. package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +11 -6
  79. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +68 -7
  80. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +6 -5
  81. package/deps/rocksdb/rocksdb/db/db_test.cc +60 -42
  82. package/deps/rocksdb/rocksdb/db/db_test2.cc +244 -111
  83. package/deps/rocksdb/rocksdb/db/db_test_util.cc +101 -19
  84. package/deps/rocksdb/rocksdb/db/db_test_util.h +52 -2
  85. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +1 -1
  86. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +7 -7
  87. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +5 -175
  88. package/deps/rocksdb/rocksdb/db/db_with_timestamp_test_util.cc +96 -0
  89. package/deps/rocksdb/rocksdb/db/db_with_timestamp_test_util.h +126 -0
  90. package/deps/rocksdb/rocksdb/db/db_write_test.cc +6 -6
  91. package/deps/rocksdb/rocksdb/db/dbformat.h +2 -1
  92. package/deps/rocksdb/rocksdb/db/deletefile_test.cc +1 -1
  93. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +8 -8
  94. package/deps/rocksdb/rocksdb/db/experimental.cc +1 -1
  95. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +91 -12
  96. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +16 -2
  97. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +2 -0
  98. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +7 -7
  99. package/deps/rocksdb/rocksdb/db/file_indexer.h +1 -4
  100. package/deps/rocksdb/rocksdb/db/flush_job.cc +28 -15
  101. package/deps/rocksdb/rocksdb/db/flush_job.h +4 -0
  102. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +98 -30
  103. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +1 -1
  104. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +14 -1
  105. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +6 -0
  106. package/deps/rocksdb/rocksdb/db/internal_stats.cc +12 -12
  107. package/deps/rocksdb/rocksdb/db/listener_test.cc +4 -3
  108. package/deps/rocksdb/rocksdb/db/memtable.cc +2 -2
  109. package/deps/rocksdb/rocksdb/db/memtable_list.h +1 -1
  110. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +37 -25
  111. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +1 -1
  112. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +18 -18
  113. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +6 -6
  114. package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -1
  115. package/deps/rocksdb/rocksdb/db/repair.cc +13 -2
  116. package/deps/rocksdb/rocksdb/db/repair_test.cc +37 -15
  117. package/deps/rocksdb/rocksdb/db/snapshot_checker.h +1 -2
  118. package/deps/rocksdb/rocksdb/db/snapshot_impl.h +3 -1
  119. package/deps/rocksdb/rocksdb/db/table_cache.cc +20 -130
  120. package/deps/rocksdb/rocksdb/db/table_cache.h +3 -2
  121. package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +140 -0
  122. package/deps/rocksdb/rocksdb/db/version_builder.cc +1 -1
  123. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +133 -133
  124. package/deps/rocksdb/rocksdb/db/version_edit.cc +22 -2
  125. package/deps/rocksdb/rocksdb/db/version_edit.h +13 -4
  126. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +14 -14
  127. package/deps/rocksdb/rocksdb/db/version_set.cc +207 -214
  128. package/deps/rocksdb/rocksdb/db/version_set.h +14 -3
  129. package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +154 -0
  130. package/deps/rocksdb/rocksdb/db/version_set_test.cc +10 -9
  131. package/deps/rocksdb/rocksdb/db/wal_edit.h +2 -1
  132. package/deps/rocksdb/rocksdb/db/wal_manager.cc +2 -3
  133. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +1 -1
  134. package/deps/rocksdb/rocksdb/db/write_batch.cc +178 -30
  135. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +6 -6
  136. package/deps/rocksdb/rocksdb/db/write_controller.h +1 -1
  137. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +0 -2
  138. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +9 -6
  139. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_filter.h +2 -1
  140. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +4 -3
  141. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +44 -6
  142. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.cc +4 -1
  143. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.cc +0 -10
  144. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +45 -42
  145. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +374 -275
  146. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +53 -3
  147. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +0 -12
  148. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +13 -11
  149. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +276 -109
  150. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +63 -0
  151. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +45 -54
  152. package/deps/rocksdb/rocksdb/env/composite_env.cc +87 -14
  153. package/deps/rocksdb/rocksdb/env/env.cc +0 -60
  154. package/deps/rocksdb/rocksdb/env/env_encryption.cc +9 -0
  155. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +1 -1
  156. package/deps/rocksdb/rocksdb/env/env_posix.cc +6 -5
  157. package/deps/rocksdb/rocksdb/env/env_test.cc +18 -5
  158. package/deps/rocksdb/rocksdb/env/fs_posix.cc +17 -12
  159. package/deps/rocksdb/rocksdb/env/io_posix.cc +39 -37
  160. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +9 -9
  161. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +159 -65
  162. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +44 -22
  163. package/deps/rocksdb/rocksdb/file/file_util.h +2 -0
  164. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +142 -17
  165. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +5 -2
  166. package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +7 -0
  167. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +60 -40
  168. package/deps/rocksdb/rocksdb/file/writable_file_writer.h +1 -0
  169. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +23 -5
  170. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +49 -1
  171. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +5 -5
  172. package/deps/rocksdb/rocksdb/include/rocksdb/cleanable.h +59 -2
  173. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +1 -0
  174. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +2 -1
  175. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +46 -44
  176. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +1 -1
  177. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +2 -0
  178. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +2 -4
  179. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +3 -0
  180. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +45 -3
  181. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +2 -0
  182. package/deps/rocksdb/rocksdb/include/rocksdb/snapshot.h +4 -1
  183. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +3 -0
  184. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +91 -40
  185. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -2
  186. package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +22 -13
  187. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/customizable_util.h +9 -0
  188. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +4 -0
  189. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +25 -0
  190. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +378 -103
  191. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +14 -0
  192. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  193. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +18 -4
  194. package/deps/rocksdb/rocksdb/memory/arena.h +1 -1
  195. package/deps/rocksdb/rocksdb/memory/concurrent_arena.cc +1 -5
  196. package/deps/rocksdb/rocksdb/memory/concurrent_arena.h +1 -5
  197. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +6 -8
  198. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +1 -1
  199. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +1 -1
  200. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +5 -3
  201. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +266 -45
  202. package/deps/rocksdb/rocksdb/monitoring/histogram.cc +2 -1
  203. package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +1 -4
  204. package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +4 -4
  205. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +7 -8
  206. package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +2 -2
  207. package/deps/rocksdb/rocksdb/monitoring/perf_level.cc +1 -5
  208. package/deps/rocksdb/rocksdb/monitoring/perf_level_imp.h +1 -5
  209. package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.cc +2 -2
  210. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +1 -1
  211. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +2 -1
  212. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +1 -1
  213. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +3 -3
  214. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +2 -2
  215. package/deps/rocksdb/rocksdb/options/cf_options.cc +47 -38
  216. package/deps/rocksdb/rocksdb/options/configurable.cc +9 -27
  217. package/deps/rocksdb/rocksdb/options/configurable_test.cc +1 -1
  218. package/deps/rocksdb/rocksdb/options/customizable.cc +3 -1
  219. package/deps/rocksdb/rocksdb/options/customizable_test.cc +379 -318
  220. package/deps/rocksdb/rocksdb/options/db_options.cc +46 -17
  221. package/deps/rocksdb/rocksdb/options/db_options.h +2 -0
  222. package/deps/rocksdb/rocksdb/options/options.cc +7 -0
  223. package/deps/rocksdb/rocksdb/options/options_helper.cc +86 -39
  224. package/deps/rocksdb/rocksdb/options/options_parser.cc +10 -10
  225. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +12 -7
  226. package/deps/rocksdb/rocksdb/options/options_test.cc +222 -68
  227. package/deps/rocksdb/rocksdb/port/port_posix.h +0 -15
  228. package/deps/rocksdb/rocksdb/port/win/env_win.cc +5 -4
  229. package/deps/rocksdb/rocksdb/port/win/env_win.h +2 -2
  230. package/deps/rocksdb/rocksdb/port/win/port_win.h +0 -31
  231. package/deps/rocksdb/rocksdb/rocksdb.pc.in +11 -0
  232. package/deps/rocksdb/rocksdb/src.mk +6 -1
  233. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
  234. package/deps/rocksdb/rocksdb/table/block_based/block.cc +4 -2
  235. package/deps/rocksdb/rocksdb/table/block_based/block.h +21 -25
  236. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +3 -4
  237. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +23 -8
  238. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +52 -15
  239. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +81 -7
  240. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +8 -2
  241. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +94 -726
  242. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +21 -15
  243. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +9 -3
  244. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +754 -0
  245. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +44 -73
  246. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +15 -5
  247. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +2 -1
  248. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +2 -11
  249. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +59 -1
  250. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +18 -0
  251. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +33 -17
  252. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +0 -61
  253. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +0 -13
  254. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +2 -1
  255. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +2 -2
  256. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +3 -2
  257. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +2 -1
  258. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +3 -2
  259. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +4 -3
  260. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +8 -4
  261. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +4 -4
  262. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +2 -1
  263. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +65 -7
  264. package/deps/rocksdb/rocksdb/table/block_fetcher.h +2 -0
  265. package/deps/rocksdb/rocksdb/table/cleanable_test.cc +113 -0
  266. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +1 -1
  267. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +1 -1
  268. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +1 -1
  269. package/deps/rocksdb/rocksdb/table/format.cc +22 -20
  270. package/deps/rocksdb/rocksdb/table/iterator.cc +1 -81
  271. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +39 -0
  272. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +2 -2
  273. package/deps/rocksdb/rocksdb/table/multiget_context.h +60 -13
  274. package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +0 -3
  275. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +12 -1
  276. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +4 -4
  277. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +2 -1
  278. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +1 -1
  279. package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +1 -1
  280. package/deps/rocksdb/rocksdb/table/table_properties.cc +3 -5
  281. package/deps/rocksdb/rocksdb/table/table_reader.h +13 -0
  282. package/deps/rocksdb/rocksdb/table/table_test.cc +202 -78
  283. package/deps/rocksdb/rocksdb/table/unique_id.cc +84 -25
  284. package/deps/rocksdb/rocksdb/table/unique_id_impl.h +37 -4
  285. package/deps/rocksdb/rocksdb/test_util/testutil.cc +3 -1
  286. package/deps/rocksdb/rocksdb/test_util/testutil.h +11 -8
  287. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +8 -4
  288. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +17 -0
  289. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +11 -9
  290. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +3 -3
  291. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +277 -105
  292. package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +4 -4
  293. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +186 -42
  294. package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +75 -49
  295. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +9 -8
  296. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +4 -1
  297. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +2 -2
  298. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +26 -4
  299. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +1 -1
  300. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +1 -1
  301. package/deps/rocksdb/rocksdb/util/async_file_reader.cc +72 -0
  302. package/deps/rocksdb/rocksdb/util/async_file_reader.h +144 -0
  303. package/deps/rocksdb/rocksdb/util/autovector_test.cc +4 -4
  304. package/deps/rocksdb/rocksdb/util/bloom_test.cc +14 -8
  305. package/deps/rocksdb/rocksdb/util/build_version.cc.in +5 -6
  306. package/deps/rocksdb/rocksdb/util/cleanable.cc +180 -0
  307. package/deps/rocksdb/rocksdb/util/comparator.cc +5 -3
  308. package/deps/rocksdb/rocksdb/util/compression.h +56 -7
  309. package/deps/rocksdb/rocksdb/util/coro_utils.h +111 -0
  310. package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +148 -0
  311. package/deps/rocksdb/rocksdb/util/filelock_test.cc +2 -2
  312. package/deps/rocksdb/rocksdb/util/filter_bench.cc +12 -4
  313. package/deps/rocksdb/rocksdb/util/heap.h +5 -3
  314. package/deps/rocksdb/rocksdb/util/random.cc +1 -5
  315. package/deps/rocksdb/rocksdb/util/rate_limiter.cc +12 -9
  316. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +1 -1
  317. package/deps/rocksdb/rocksdb/util/ribbon_alg.h +1 -1
  318. package/deps/rocksdb/rocksdb/util/ribbon_test.cc +2 -4
  319. package/deps/rocksdb/rocksdb/util/single_thread_executor.h +55 -0
  320. package/deps/rocksdb/rocksdb/util/slice.cc +8 -9
  321. package/deps/rocksdb/rocksdb/util/string_util.cc +3 -2
  322. package/deps/rocksdb/rocksdb/util/string_util.h +0 -13
  323. package/deps/rocksdb/rocksdb/util/thread_local.cc +4 -23
  324. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +99 -22
  325. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_impl.h +7 -0
  326. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +102 -59
  327. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +38 -36
  328. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +2 -2
  329. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +28 -0
  330. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +3 -0
  331. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +1 -1
  332. package/deps/rocksdb/rocksdb/utilities/object_registry.cc +71 -0
  333. package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +71 -0
  334. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +1 -1
  335. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +5 -5
  336. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +3 -3
  337. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +0 -13
  338. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +40 -0
  339. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc +10 -8
  340. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.h +4 -2
  341. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +17 -0
  342. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +7 -7
  343. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +8 -1
  344. package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +5 -1
  345. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +21 -15
  346. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +2 -2
  347. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +69 -11
  348. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +22 -9
  349. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +26 -5
  350. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +17 -4
  351. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +19 -16
  352. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +7 -3
  353. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +3 -2
  354. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +2 -2
  355. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +2 -2
  356. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +6 -6
  357. package/deps/rocksdb/rocksdb.gyp +20 -13
  358. package/index.js +187 -3
  359. package/iterator.js +1 -0
  360. package/package-lock.json +23687 -0
  361. package/package.json +2 -30
  362. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  363. package/snapshot.js +23 -0
  364. package/deps/liburing/liburing/README +0 -46
  365. package/deps/liburing/liburing/test/232c93d07b74-test.c +0 -305
  366. package/deps/liburing/liburing/test/35fa71a030ca-test.c +0 -329
  367. package/deps/liburing/liburing/test/500f9fbadef8-test.c +0 -89
  368. package/deps/liburing/liburing/test/7ad0e4b2f83c-test.c +0 -93
  369. package/deps/liburing/liburing/test/8a9973408177-test.c +0 -106
  370. package/deps/liburing/liburing/test/917257daa0fe-test.c +0 -53
  371. package/deps/liburing/liburing/test/Makefile +0 -312
  372. package/deps/liburing/liburing/test/a0908ae19763-test.c +0 -58
  373. package/deps/liburing/liburing/test/a4c0b3decb33-test.c +0 -180
  374. package/deps/liburing/liburing/test/accept-link.c +0 -251
  375. package/deps/liburing/liburing/test/accept-reuse.c +0 -164
  376. package/deps/liburing/liburing/test/accept-test.c +0 -79
  377. package/deps/liburing/liburing/test/accept.c +0 -476
  378. package/deps/liburing/liburing/test/across-fork.c +0 -283
  379. package/deps/liburing/liburing/test/b19062a56726-test.c +0 -53
  380. package/deps/liburing/liburing/test/b5837bd5311d-test.c +0 -77
  381. package/deps/liburing/liburing/test/ce593a6c480a-test.c +0 -135
  382. package/deps/liburing/liburing/test/close-opath.c +0 -122
  383. package/deps/liburing/liburing/test/config +0 -10
  384. package/deps/liburing/liburing/test/connect.c +0 -398
  385. package/deps/liburing/liburing/test/cq-full.c +0 -96
  386. package/deps/liburing/liburing/test/cq-overflow.c +0 -294
  387. package/deps/liburing/liburing/test/cq-peek-batch.c +0 -102
  388. package/deps/liburing/liburing/test/cq-ready.c +0 -94
  389. package/deps/liburing/liburing/test/cq-size.c +0 -58
  390. package/deps/liburing/liburing/test/d4ae271dfaae-test.c +0 -96
  391. package/deps/liburing/liburing/test/d77a67ed5f27-test.c +0 -65
  392. package/deps/liburing/liburing/test/defer.c +0 -307
  393. package/deps/liburing/liburing/test/double-poll-crash.c +0 -186
  394. package/deps/liburing/liburing/test/eeed8b54e0df-test.c +0 -114
  395. package/deps/liburing/liburing/test/empty-eownerdead.c +0 -42
  396. package/deps/liburing/liburing/test/eventfd-disable.c +0 -151
  397. package/deps/liburing/liburing/test/eventfd-ring.c +0 -97
  398. package/deps/liburing/liburing/test/eventfd.c +0 -112
  399. package/deps/liburing/liburing/test/fadvise.c +0 -202
  400. package/deps/liburing/liburing/test/fallocate.c +0 -249
  401. package/deps/liburing/liburing/test/fc2a85cb02ef-test.c +0 -138
  402. package/deps/liburing/liburing/test/file-register.c +0 -843
  403. package/deps/liburing/liburing/test/file-update.c +0 -173
  404. package/deps/liburing/liburing/test/files-exit-hang-poll.c +0 -128
  405. package/deps/liburing/liburing/test/files-exit-hang-timeout.c +0 -134
  406. package/deps/liburing/liburing/test/fixed-link.c +0 -90
  407. package/deps/liburing/liburing/test/fsync.c +0 -224
  408. package/deps/liburing/liburing/test/hardlink.c +0 -136
  409. package/deps/liburing/liburing/test/helpers.c +0 -135
  410. package/deps/liburing/liburing/test/helpers.h +0 -67
  411. package/deps/liburing/liburing/test/io-cancel.c +0 -537
  412. package/deps/liburing/liburing/test/io_uring_enter.c +0 -296
  413. package/deps/liburing/liburing/test/io_uring_register.c +0 -664
  414. package/deps/liburing/liburing/test/io_uring_setup.c +0 -192
  415. package/deps/liburing/liburing/test/iopoll.c +0 -366
  416. package/deps/liburing/liburing/test/lfs-openat-write.c +0 -117
  417. package/deps/liburing/liburing/test/lfs-openat.c +0 -273
  418. package/deps/liburing/liburing/test/link-timeout.c +0 -1107
  419. package/deps/liburing/liburing/test/link.c +0 -496
  420. package/deps/liburing/liburing/test/link_drain.c +0 -229
  421. package/deps/liburing/liburing/test/madvise.c +0 -195
  422. package/deps/liburing/liburing/test/mkdir.c +0 -108
  423. package/deps/liburing/liburing/test/multicqes_drain.c +0 -383
  424. package/deps/liburing/liburing/test/nop-all-sizes.c +0 -107
  425. package/deps/liburing/liburing/test/nop.c +0 -115
  426. package/deps/liburing/liburing/test/open-close.c +0 -146
  427. package/deps/liburing/liburing/test/openat2.c +0 -240
  428. package/deps/liburing/liburing/test/personality.c +0 -204
  429. package/deps/liburing/liburing/test/pipe-eof.c +0 -81
  430. package/deps/liburing/liburing/test/pipe-reuse.c +0 -105
  431. package/deps/liburing/liburing/test/poll-cancel-ton.c +0 -139
  432. package/deps/liburing/liburing/test/poll-cancel.c +0 -135
  433. package/deps/liburing/liburing/test/poll-link.c +0 -227
  434. package/deps/liburing/liburing/test/poll-many.c +0 -208
  435. package/deps/liburing/liburing/test/poll-mshot-update.c +0 -273
  436. package/deps/liburing/liburing/test/poll-ring.c +0 -48
  437. package/deps/liburing/liburing/test/poll-v-poll.c +0 -353
  438. package/deps/liburing/liburing/test/poll.c +0 -109
  439. package/deps/liburing/liburing/test/probe.c +0 -137
  440. package/deps/liburing/liburing/test/read-write.c +0 -876
  441. package/deps/liburing/liburing/test/register-restrictions.c +0 -633
  442. package/deps/liburing/liburing/test/rename.c +0 -134
  443. package/deps/liburing/liburing/test/ring-leak.c +0 -173
  444. package/deps/liburing/liburing/test/ring-leak2.c +0 -249
  445. package/deps/liburing/liburing/test/rsrc_tags.c +0 -449
  446. package/deps/liburing/liburing/test/runtests-loop.sh +0 -16
  447. package/deps/liburing/liburing/test/runtests.sh +0 -170
  448. package/deps/liburing/liburing/test/rw_merge_test.c +0 -97
  449. package/deps/liburing/liburing/test/self.c +0 -91
  450. package/deps/liburing/liburing/test/send_recv.c +0 -291
  451. package/deps/liburing/liburing/test/send_recvmsg.c +0 -345
  452. package/deps/liburing/liburing/test/sendmsg_fs_cve.c +0 -198
  453. package/deps/liburing/liburing/test/shared-wq.c +0 -84
  454. package/deps/liburing/liburing/test/short-read.c +0 -75
  455. package/deps/liburing/liburing/test/shutdown.c +0 -163
  456. package/deps/liburing/liburing/test/sigfd-deadlock.c +0 -74
  457. package/deps/liburing/liburing/test/socket-rw-eagain.c +0 -156
  458. package/deps/liburing/liburing/test/socket-rw.c +0 -147
  459. package/deps/liburing/liburing/test/splice.c +0 -511
  460. package/deps/liburing/liburing/test/sq-full-cpp.cc +0 -45
  461. package/deps/liburing/liburing/test/sq-full.c +0 -45
  462. package/deps/liburing/liburing/test/sq-poll-dup.c +0 -200
  463. package/deps/liburing/liburing/test/sq-poll-kthread.c +0 -168
  464. package/deps/liburing/liburing/test/sq-poll-share.c +0 -137
  465. package/deps/liburing/liburing/test/sq-space_left.c +0 -159
  466. package/deps/liburing/liburing/test/sqpoll-cancel-hang.c +0 -159
  467. package/deps/liburing/liburing/test/sqpoll-disable-exit.c +0 -195
  468. package/deps/liburing/liburing/test/sqpoll-exit-hang.c +0 -77
  469. package/deps/liburing/liburing/test/sqpoll-sleep.c +0 -68
  470. package/deps/liburing/liburing/test/statx.c +0 -172
  471. package/deps/liburing/liburing/test/stdout.c +0 -232
  472. package/deps/liburing/liburing/test/submit-link-fail.c +0 -154
  473. package/deps/liburing/liburing/test/submit-reuse.c +0 -239
  474. package/deps/liburing/liburing/test/symlink.c +0 -116
  475. package/deps/liburing/liburing/test/teardowns.c +0 -58
  476. package/deps/liburing/liburing/test/thread-exit.c +0 -131
  477. package/deps/liburing/liburing/test/timeout-new.c +0 -246
  478. package/deps/liburing/liburing/test/timeout-overflow.c +0 -204
  479. package/deps/liburing/liburing/test/timeout.c +0 -1354
  480. package/deps/liburing/liburing/test/unlink.c +0 -111
  481. package/deps/liburing/liburing/test/wakeup-hang.c +0 -162
  482. package/deps/rocksdb/rocksdb/README.md +0 -32
  483. package/deps/rocksdb/rocksdb/microbench/README.md +0 -60
  484. package/deps/rocksdb/rocksdb/plugin/README.md +0 -43
  485. package/deps/rocksdb/rocksdb/port/README +0 -10
  486. package/deps/rocksdb/rocksdb/python.mk +0 -9
  487. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/README +0 -13
  488. package/prebuilds/darwin-x64/node.napi.node +0 -0
  489. package/prebuilds/linux-arm64/node.napi.node +0 -0
  490. package/prebuilds/linux-x64/node.napi.node +0 -0
@@ -593,9 +593,9 @@ TEST_F(DBPropertiesTest, AggregatedTablePropertiesAtLevel) {
593
593
  ASSERT_OK(db_->CompactRange(CompactRangeOptions(), nullptr, nullptr));
594
594
  ResetTableProperties(&sum_tp);
595
595
  for (int level = 0; level < kMaxLevel; ++level) {
596
- db_->GetProperty(
597
- DB::Properties::kAggregatedTablePropertiesAtLevel + ToString(level),
598
- &level_tp_strings[level]);
596
+ db_->GetProperty(DB::Properties::kAggregatedTablePropertiesAtLevel +
597
+ std::to_string(level),
598
+ &level_tp_strings[level]);
599
599
  ParseTablePropertiesString(level_tp_strings[level], &level_tps[level]);
600
600
  sum_tp.data_size += level_tps[level].data_size;
601
601
  sum_tp.index_size += level_tps[level].index_size;
@@ -1091,7 +1091,7 @@ TEST_F(DBPropertiesTest, EstimateCompressionRatio) {
1091
1091
  for (int j = 0; j < kNumEntriesPerFile; ++j) {
1092
1092
  // Put common data ("key") at end to prevent delta encoding from
1093
1093
  // compressing the key effectively
1094
- std::string key = ToString(i) + ToString(j) + "key";
1094
+ std::string key = std::to_string(i) + std::to_string(j) + "key";
1095
1095
  ASSERT_OK(dbfull()->Put(WriteOptions(), key, kVal));
1096
1096
  }
1097
1097
  ASSERT_OK(Flush());
@@ -1185,7 +1185,7 @@ class CountingDeleteTabPropCollector : public TablePropertiesCollector {
1185
1185
 
1186
1186
  Status Finish(UserCollectedProperties* properties) override {
1187
1187
  *properties =
1188
- UserCollectedProperties{{"num_delete", ToString(num_deletes_)}};
1188
+ UserCollectedProperties{{"num_delete", std::to_string(num_deletes_)}};
1189
1189
  return Status::OK();
1190
1190
  }
1191
1191
 
@@ -1215,7 +1215,7 @@ class BlockCountingTablePropertiesCollector : public TablePropertiesCollector {
1215
1215
 
1216
1216
  Status Finish(UserCollectedProperties* properties) override {
1217
1217
  (*properties)[kNumSampledBlocksPropertyName] =
1218
- ToString(num_sampled_blocks_);
1218
+ std::to_string(num_sampled_blocks_);
1219
1219
  return Status::OK();
1220
1220
  }
1221
1221
 
@@ -1235,7 +1235,7 @@ class BlockCountingTablePropertiesCollector : public TablePropertiesCollector {
1235
1235
 
1236
1236
  UserCollectedProperties GetReadableProperties() const override {
1237
1237
  return UserCollectedProperties{
1238
- {kNumSampledBlocksPropertyName, ToString(num_sampled_blocks_)},
1238
+ {kNumSampledBlocksPropertyName, std::to_string(num_sampled_blocks_)},
1239
1239
  };
1240
1240
  }
1241
1241
 
@@ -1272,7 +1272,8 @@ TEST_F(DBPropertiesTest, GetUserDefinedTableProperties) {
1272
1272
  // Create 4 tables
1273
1273
  for (int table = 0; table < 4; ++table) {
1274
1274
  for (int i = 0; i < 10 + table; ++i) {
1275
- ASSERT_OK(db_->Put(WriteOptions(), ToString(table * 100 + i), "val"));
1275
+ ASSERT_OK(
1276
+ db_->Put(WriteOptions(), std::to_string(table * 100 + i), "val"));
1276
1277
  }
1277
1278
  ASSERT_OK(db_->Flush(FlushOptions()));
1278
1279
  }
@@ -1312,7 +1313,7 @@ TEST_F(DBPropertiesTest, UserDefinedTablePropertiesContext) {
1312
1313
  // Create 2 files
1313
1314
  for (int table = 0; table < 2; ++table) {
1314
1315
  for (int i = 0; i < 10 + table; ++i) {
1315
- ASSERT_OK(Put(1, ToString(table * 100 + i), "val"));
1316
+ ASSERT_OK(Put(1, std::to_string(table * 100 + i), "val"));
1316
1317
  }
1317
1318
  ASSERT_OK(Flush(1));
1318
1319
  }
@@ -1322,7 +1323,7 @@ TEST_F(DBPropertiesTest, UserDefinedTablePropertiesContext) {
1322
1323
  // Trigger automatic compactions.
1323
1324
  for (int table = 0; table < 3; ++table) {
1324
1325
  for (int i = 0; i < 10 + table; ++i) {
1325
- ASSERT_OK(Put(1, ToString(table * 100 + i), "val"));
1326
+ ASSERT_OK(Put(1, std::to_string(table * 100 + i), "val"));
1326
1327
  }
1327
1328
  ASSERT_OK(Flush(1));
1328
1329
  ASSERT_OK(dbfull()->TEST_WaitForCompact());
@@ -1339,7 +1340,7 @@ TEST_F(DBPropertiesTest, UserDefinedTablePropertiesContext) {
1339
1340
  // Create 4 tables in default column family
1340
1341
  for (int table = 0; table < 2; ++table) {
1341
1342
  for (int i = 0; i < 10 + table; ++i) {
1342
- ASSERT_OK(Put(ToString(table * 100 + i), "val"));
1343
+ ASSERT_OK(Put(std::to_string(table * 100 + i), "val"));
1343
1344
  }
1344
1345
  ASSERT_OK(Flush());
1345
1346
  }
@@ -1349,7 +1350,7 @@ TEST_F(DBPropertiesTest, UserDefinedTablePropertiesContext) {
1349
1350
  // Trigger automatic compactions.
1350
1351
  for (int table = 0; table < 3; ++table) {
1351
1352
  for (int i = 0; i < 10 + table; ++i) {
1352
- ASSERT_OK(Put(ToString(table * 100 + i), "val"));
1353
+ ASSERT_OK(Put(std::to_string(table * 100 + i), "val"));
1353
1354
  }
1354
1355
  ASSERT_OK(Flush());
1355
1356
  ASSERT_OK(dbfull()->TEST_WaitForCompact());
@@ -1545,7 +1546,7 @@ TEST_F(DBPropertiesTest, BlockAddForCompressionSampling) {
1545
1546
  user_props.end());
1546
1547
  ASSERT_EQ(user_props.at(BlockCountingTablePropertiesCollector::
1547
1548
  kNumSampledBlocksPropertyName),
1548
- ToString(sample_for_compression ? 1 : 0));
1549
+ std::to_string(sample_for_compression ? 1 : 0));
1549
1550
  }
1550
1551
  }
1551
1552
  }
@@ -1742,11 +1743,11 @@ TEST_F(DBPropertiesTest, SstFilesSize) {
1742
1743
  Reopen(options);
1743
1744
 
1744
1745
  for (int i = 0; i < 10; i++) {
1745
- ASSERT_OK(Put("key" + ToString(i), std::string(1000, 'v')));
1746
+ ASSERT_OK(Put("key" + std::to_string(i), std::string(1000, 'v')));
1746
1747
  }
1747
1748
  ASSERT_OK(Flush());
1748
1749
  for (int i = 0; i < 5; i++) {
1749
- ASSERT_OK(Delete("key" + ToString(i)));
1750
+ ASSERT_OK(Delete("key" + std::to_string(i)));
1750
1751
  }
1751
1752
  ASSERT_OK(Flush());
1752
1753
  uint64_t sst_size;
@@ -190,9 +190,10 @@ TEST_F(DBRangeDelTest, MaxCompactionBytesCutsOutputFiles) {
190
190
  ASSERT_EQ(0, NumTableFilesAtLevel(0));
191
191
  ASSERT_EQ(NumTableFilesAtLevel(2), 2);
192
192
 
193
- ASSERT_OK(db_->SetOptions(
194
- db_->DefaultColumnFamily(),
195
- {{"target_file_size_base", ToString(100 * opts.max_compaction_bytes)}}));
193
+ ASSERT_OK(
194
+ db_->SetOptions(db_->DefaultColumnFamily(),
195
+ {{"target_file_size_base",
196
+ std::to_string(100 * opts.max_compaction_bytes)}}));
196
197
 
197
198
  // It spans the whole key-range, thus will be included in all output files
198
199
  ASSERT_OK(db_->DeleteRange(WriteOptions(), db_->DefaultColumnFamily(),
@@ -500,7 +501,8 @@ TEST_F(DBRangeDelTest, ValidUniversalSubcompactionBoundaries) {
500
501
  1 /* input_level */, 2 /* output_level */, CompactRangeOptions(),
501
502
  nullptr /* begin */, nullptr /* end */, true /* exclusive */,
502
503
  true /* disallow_trivial_move */,
503
- port::kMaxUint64 /* max_file_num_to_ignore */, "" /*trim_ts*/));
504
+ std::numeric_limits<uint64_t>::max() /* max_file_num_to_ignore */,
505
+ "" /*trim_ts*/));
504
506
  }
505
507
  #endif // ROCKSDB_LITE
506
508
 
@@ -0,0 +1,331 @@
1
+ // Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
2
+ // This source code is licensed under both the GPLv2 (found in the
3
+ // COPYING file in the root directory) and Apache 2.0 License
4
+ // (found in the LICENSE.Apache file in the root directory).
5
+ //
6
+ // Copyright (c) 2011 The LevelDB Authors. All rights reserved.
7
+ // Use of this source code is governed by a BSD-style license that can be
8
+ // found in the LICENSE file. See the AUTHORS file for names of contributors.
9
+
10
+ #include "db/db_with_timestamp_test_util.h"
11
+ #include "test_util/testutil.h"
12
+
13
+ namespace ROCKSDB_NAMESPACE {
14
+ class DBReadOnlyTestWithTimestamp : public DBBasicTestWithTimestampBase {
15
+ public:
16
+ DBReadOnlyTestWithTimestamp()
17
+ : DBBasicTestWithTimestampBase("db_readonly_test_with_timestamp") {}
18
+ };
19
+
20
+ #ifndef ROCKSDB_LITE
21
+ TEST_F(DBReadOnlyTestWithTimestamp, IteratorAndGetReadTimestampSizeMismatch) {
22
+ const int kNumKeysPerFile = 128;
23
+ const uint64_t kMaxKey = 1024;
24
+ Options options = CurrentOptions();
25
+ options.env = env_;
26
+ options.create_if_missing = true;
27
+ const size_t kTimestampSize = Timestamp(0, 0).size();
28
+ TestComparator test_cmp(kTimestampSize);
29
+ options.comparator = &test_cmp;
30
+ options.memtable_factory.reset(
31
+ test::NewSpecialSkipListFactory(kNumKeysPerFile));
32
+ DestroyAndReopen(options);
33
+ const std::string write_timestamp = Timestamp(1, 0);
34
+ WriteOptions write_opts;
35
+ for (uint64_t key = 0; key <= kMaxKey; ++key) {
36
+ Status s = db_->Put(write_opts, Key1(key), write_timestamp,
37
+ "value" + std::to_string(key));
38
+ ASSERT_OK(s);
39
+ }
40
+
41
+ // Reopen the database in read only mode to test its timestamp support.
42
+ Close();
43
+ ASSERT_OK(ReadOnlyReopen(options));
44
+ ReadOptions read_opts;
45
+ std::string different_size_read_timestamp;
46
+ PutFixed32(&different_size_read_timestamp, 2);
47
+ Slice different_size_read_ts = different_size_read_timestamp;
48
+ read_opts.timestamp = &different_size_read_ts;
49
+ {
50
+ std::unique_ptr<Iterator> iter(db_->NewIterator(read_opts));
51
+ ASSERT_FALSE(iter->Valid());
52
+ ASSERT_TRUE(iter->status().IsInvalidArgument());
53
+ }
54
+
55
+ for (uint64_t key = 0; key <= kMaxKey; ++key) {
56
+ std::string value_from_get;
57
+ std::string timestamp;
58
+ ASSERT_TRUE(db_->Get(read_opts, Key1(key), &value_from_get, &timestamp)
59
+ .IsInvalidArgument());
60
+ }
61
+
62
+ Close();
63
+ }
64
+
65
+ TEST_F(DBReadOnlyTestWithTimestamp,
66
+ IteratorAndGetReadTimestampSpecifiedWithoutWriteTimestamp) {
67
+ const int kNumKeysPerFile = 128;
68
+ const uint64_t kMaxKey = 1024;
69
+ Options options = CurrentOptions();
70
+ options.env = env_;
71
+ options.create_if_missing = true;
72
+ options.memtable_factory.reset(
73
+ test::NewSpecialSkipListFactory(kNumKeysPerFile));
74
+ DestroyAndReopen(options);
75
+ WriteOptions write_opts;
76
+ for (uint64_t key = 0; key <= kMaxKey; ++key) {
77
+ Status s = db_->Put(write_opts, Key1(key), "value" + std::to_string(key));
78
+ ASSERT_OK(s);
79
+ }
80
+
81
+ // Reopen the database in read only mode to test its timestamp support.
82
+ Close();
83
+ ASSERT_OK(ReadOnlyReopen(options));
84
+ ReadOptions read_opts;
85
+ const std::string read_timestamp = Timestamp(2, 0);
86
+ Slice read_ts = read_timestamp;
87
+ read_opts.timestamp = &read_ts;
88
+ {
89
+ std::unique_ptr<Iterator> iter(db_->NewIterator(read_opts));
90
+ ASSERT_FALSE(iter->Valid());
91
+ ASSERT_TRUE(iter->status().IsInvalidArgument());
92
+ }
93
+
94
+ for (uint64_t key = 0; key <= kMaxKey; ++key) {
95
+ std::string value_from_get;
96
+ std::string timestamp;
97
+ ASSERT_TRUE(db_->Get(read_opts, Key1(key), &value_from_get, &timestamp)
98
+ .IsInvalidArgument());
99
+ }
100
+
101
+ Close();
102
+ }
103
+
104
+ TEST_F(DBReadOnlyTestWithTimestamp, IteratorAndGet) {
105
+ const int kNumKeysPerFile = 128;
106
+ const uint64_t kMaxKey = 1024;
107
+ Options options = CurrentOptions();
108
+ options.env = env_;
109
+ options.create_if_missing = true;
110
+ const size_t kTimestampSize = Timestamp(0, 0).size();
111
+ TestComparator test_cmp(kTimestampSize);
112
+ options.comparator = &test_cmp;
113
+ options.memtable_factory.reset(
114
+ test::NewSpecialSkipListFactory(kNumKeysPerFile));
115
+ DestroyAndReopen(options);
116
+ const std::vector<uint64_t> start_keys = {1, 0};
117
+ const std::vector<std::string> write_timestamps = {Timestamp(1, 0),
118
+ Timestamp(3, 0)};
119
+ const std::vector<std::string> read_timestamps = {Timestamp(2, 0),
120
+ Timestamp(4, 0)};
121
+ for (size_t i = 0; i < write_timestamps.size(); ++i) {
122
+ WriteOptions write_opts;
123
+ for (uint64_t key = start_keys[i]; key <= kMaxKey; ++key) {
124
+ Status s = db_->Put(write_opts, Key1(key), write_timestamps[i],
125
+ "value" + std::to_string(i));
126
+ ASSERT_OK(s);
127
+ }
128
+ }
129
+
130
+ // Reopen the database in read only mode to test its timestamp support.
131
+ Close();
132
+ ASSERT_OK(ReadOnlyReopen(options));
133
+
134
+ auto get_value_and_check = [](DB* db, ReadOptions read_opts, Slice key,
135
+ Slice expected_value, std::string expected_ts) {
136
+ std::string value_from_get;
137
+ std::string timestamp;
138
+ ASSERT_OK(db->Get(read_opts, key.ToString(), &value_from_get, &timestamp));
139
+ ASSERT_EQ(expected_value, value_from_get);
140
+ ASSERT_EQ(expected_ts, timestamp);
141
+ };
142
+ for (size_t i = 0; i < read_timestamps.size(); ++i) {
143
+ ReadOptions read_opts;
144
+ Slice read_ts = read_timestamps[i];
145
+ read_opts.timestamp = &read_ts;
146
+ std::unique_ptr<Iterator> it(db_->NewIterator(read_opts));
147
+ int count = 0;
148
+ uint64_t key = 0;
149
+ // Forward iterate.
150
+ for (it->Seek(Key1(0)), key = start_keys[i]; it->Valid();
151
+ it->Next(), ++count, ++key) {
152
+ CheckIterUserEntry(it.get(), Key1(key), kTypeValue,
153
+ "value" + std::to_string(i), write_timestamps[i]);
154
+ get_value_and_check(db_, read_opts, it->key(), it->value(),
155
+ write_timestamps[i]);
156
+ }
157
+ size_t expected_count = kMaxKey - start_keys[i] + 1;
158
+ ASSERT_EQ(expected_count, count);
159
+
160
+ // Backward iterate.
161
+ count = 0;
162
+ for (it->SeekForPrev(Key1(kMaxKey)), key = kMaxKey; it->Valid();
163
+ it->Prev(), ++count, --key) {
164
+ CheckIterUserEntry(it.get(), Key1(key), kTypeValue,
165
+ "value" + std::to_string(i), write_timestamps[i]);
166
+ get_value_and_check(db_, read_opts, it->key(), it->value(),
167
+ write_timestamps[i]);
168
+ }
169
+ ASSERT_EQ(static_cast<size_t>(kMaxKey) - start_keys[i] + 1, count);
170
+
171
+ // SeekToFirst()/SeekToLast() with lower/upper bounds.
172
+ // Then iter with lower and upper bounds.
173
+ uint64_t l = 0;
174
+ uint64_t r = kMaxKey + 1;
175
+ while (l < r) {
176
+ std::string lb_str = Key1(l);
177
+ Slice lb = lb_str;
178
+ std::string ub_str = Key1(r);
179
+ Slice ub = ub_str;
180
+ read_opts.iterate_lower_bound = &lb;
181
+ read_opts.iterate_upper_bound = &ub;
182
+ it.reset(db_->NewIterator(read_opts));
183
+ for (it->SeekToFirst(), key = std::max(l, start_keys[i]), count = 0;
184
+ it->Valid(); it->Next(), ++key, ++count) {
185
+ CheckIterUserEntry(it.get(), Key1(key), kTypeValue,
186
+ "value" + std::to_string(i), write_timestamps[i]);
187
+ get_value_and_check(db_, read_opts, it->key(), it->value(),
188
+ write_timestamps[i]);
189
+ }
190
+ ASSERT_EQ(r - std::max(l, start_keys[i]), count);
191
+
192
+ for (it->SeekToLast(), key = std::min(r, kMaxKey + 1), count = 0;
193
+ it->Valid(); it->Prev(), --key, ++count) {
194
+ CheckIterUserEntry(it.get(), Key1(key - 1), kTypeValue,
195
+ "value" + std::to_string(i), write_timestamps[i]);
196
+ get_value_and_check(db_, read_opts, it->key(), it->value(),
197
+ write_timestamps[i]);
198
+ }
199
+ l += (kMaxKey / 100);
200
+ r -= (kMaxKey / 100);
201
+ }
202
+ }
203
+ Close();
204
+ }
205
+
206
+ TEST_F(DBReadOnlyTestWithTimestamp, Iterators) {
207
+ const int kNumKeysPerFile = 128;
208
+ const uint64_t kMaxKey = 1024;
209
+ Options options = CurrentOptions();
210
+ options.env = env_;
211
+ options.create_if_missing = true;
212
+ const size_t kTimestampSize = Timestamp(0, 0).size();
213
+ TestComparator test_cmp(kTimestampSize);
214
+ options.comparator = &test_cmp;
215
+ options.memtable_factory.reset(
216
+ test::NewSpecialSkipListFactory(kNumKeysPerFile));
217
+ DestroyAndReopen(options);
218
+ const std::string write_timestamp = Timestamp(1, 0);
219
+ const std::string read_timestamp = Timestamp(2, 0);
220
+ WriteOptions write_opts;
221
+ for (uint64_t key = 0; key <= kMaxKey; ++key) {
222
+ Status s = db_->Put(write_opts, Key1(key), write_timestamp,
223
+ "value" + std::to_string(key));
224
+ ASSERT_OK(s);
225
+ }
226
+
227
+ // Reopen the database in read only mode to test its timestamp support.
228
+ Close();
229
+ ASSERT_OK(ReadOnlyReopen(options));
230
+ ReadOptions read_opts;
231
+ Slice read_ts = read_timestamp;
232
+ read_opts.timestamp = &read_ts;
233
+ std::vector<Iterator*> iters;
234
+ ASSERT_OK(db_->NewIterators(read_opts, {db_->DefaultColumnFamily()}, &iters));
235
+ ASSERT_EQ(static_cast<uint64_t>(1), iters.size());
236
+
237
+ int count = 0;
238
+ uint64_t key = 0;
239
+ // Forward iterate.
240
+ for (iters[0]->Seek(Key1(0)), key = 0; iters[0]->Valid();
241
+ iters[0]->Next(), ++count, ++key) {
242
+ CheckIterUserEntry(iters[0], Key1(key), kTypeValue,
243
+ "value" + std::to_string(key), write_timestamp);
244
+ }
245
+
246
+ size_t expected_count = kMaxKey - 0 + 1;
247
+ ASSERT_EQ(expected_count, count);
248
+ delete iters[0];
249
+
250
+ Close();
251
+ }
252
+
253
+ TEST_F(DBReadOnlyTestWithTimestamp, IteratorsReadTimestampSizeMismatch) {
254
+ const int kNumKeysPerFile = 128;
255
+ const uint64_t kMaxKey = 1024;
256
+ Options options = CurrentOptions();
257
+ options.env = env_;
258
+ options.create_if_missing = true;
259
+ const size_t kTimestampSize = Timestamp(0, 0).size();
260
+ TestComparator test_cmp(kTimestampSize);
261
+ options.comparator = &test_cmp;
262
+ options.memtable_factory.reset(
263
+ test::NewSpecialSkipListFactory(kNumKeysPerFile));
264
+ DestroyAndReopen(options);
265
+ const std::string write_timestamp = Timestamp(1, 0);
266
+ WriteOptions write_opts;
267
+ for (uint64_t key = 0; key <= kMaxKey; ++key) {
268
+ Status s = db_->Put(write_opts, Key1(key), write_timestamp,
269
+ "value" + std::to_string(key));
270
+ ASSERT_OK(s);
271
+ }
272
+
273
+ // Reopen the database in read only mode to test its timestamp support.
274
+ Close();
275
+ ASSERT_OK(ReadOnlyReopen(options));
276
+ ReadOptions read_opts;
277
+ std::string different_size_read_timestamp;
278
+ PutFixed32(&different_size_read_timestamp, 2);
279
+ Slice different_size_read_ts = different_size_read_timestamp;
280
+ read_opts.timestamp = &different_size_read_ts;
281
+ {
282
+ std::vector<Iterator*> iters;
283
+ ASSERT_TRUE(
284
+ db_->NewIterators(read_opts, {db_->DefaultColumnFamily()}, &iters)
285
+ .IsInvalidArgument());
286
+ }
287
+
288
+ Close();
289
+ }
290
+
291
+ TEST_F(DBReadOnlyTestWithTimestamp,
292
+ IteratorsReadTimestampSpecifiedWithoutWriteTimestamp) {
293
+ const int kNumKeysPerFile = 128;
294
+ const uint64_t kMaxKey = 1024;
295
+ Options options = CurrentOptions();
296
+ options.env = env_;
297
+ options.create_if_missing = true;
298
+ options.memtable_factory.reset(
299
+ test::NewSpecialSkipListFactory(kNumKeysPerFile));
300
+ DestroyAndReopen(options);
301
+ WriteOptions write_opts;
302
+ for (uint64_t key = 0; key <= kMaxKey; ++key) {
303
+ Status s = db_->Put(write_opts, Key1(key), "value" + std::to_string(key));
304
+ ASSERT_OK(s);
305
+ }
306
+
307
+ // Reopen the database in read only mode to test its timestamp support.
308
+ Close();
309
+ ASSERT_OK(ReadOnlyReopen(options));
310
+ ReadOptions read_opts;
311
+ const std::string read_timestamp = Timestamp(2, 0);
312
+ Slice read_ts = read_timestamp;
313
+ read_opts.timestamp = &read_ts;
314
+ {
315
+ std::vector<Iterator*> iters;
316
+ ASSERT_TRUE(
317
+ db_->NewIterators(read_opts, {db_->DefaultColumnFamily()}, &iters)
318
+ .IsInvalidArgument());
319
+ }
320
+
321
+ Close();
322
+ }
323
+ #endif // !ROCKSDB_LITE
324
+ } // namespace ROCKSDB_NAMESPACE
325
+
326
+ int main(int argc, char** argv) {
327
+ ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
328
+ ::testing::InitGoogleTest(&argc, argv);
329
+ RegisterCustomObjects(argc, argv);
330
+ return RUN_ALL_TESTS();
331
+ }
@@ -181,6 +181,7 @@ TEST_F(DBSecondaryTest, SimpleInternalCompaction) {
181
181
  ASSERT_EQ(input.input_files.size(), 3);
182
182
 
183
183
  input.output_level = 1;
184
+ ASSERT_OK(db_->GetDbIdentity(input.db_id));
184
185
  Close();
185
186
 
186
187
  options.max_open_files = -1;
@@ -212,20 +213,20 @@ TEST_F(DBSecondaryTest, InternalCompactionMultiLevels) {
212
213
  const int kRangeL2 = 10;
213
214
  const int kRangeL1 = 30;
214
215
  for (int i = 0; i < 10; i++) {
215
- ASSERT_OK(Put(Key(i * kRangeL2), "value" + ToString(i)));
216
- ASSERT_OK(Put(Key((i + 1) * kRangeL2 - 1), "value" + ToString(i)));
216
+ ASSERT_OK(Put(Key(i * kRangeL2), "value" + std::to_string(i)));
217
+ ASSERT_OK(Put(Key((i + 1) * kRangeL2 - 1), "value" + std::to_string(i)));
217
218
  ASSERT_OK(Flush());
218
219
  }
219
220
  MoveFilesToLevel(2);
220
221
  for (int i = 0; i < 5; i++) {
221
- ASSERT_OK(Put(Key(i * kRangeL1), "value" + ToString(i)));
222
- ASSERT_OK(Put(Key((i + 1) * kRangeL1 - 1), "value" + ToString(i)));
222
+ ASSERT_OK(Put(Key(i * kRangeL1), "value" + std::to_string(i)));
223
+ ASSERT_OK(Put(Key((i + 1) * kRangeL1 - 1), "value" + std::to_string(i)));
223
224
  ASSERT_OK(Flush());
224
225
  }
225
226
  MoveFilesToLevel(1);
226
227
  for (int i = 0; i < 4; i++) {
227
- ASSERT_OK(Put(Key(i * 30), "value" + ToString(i)));
228
- ASSERT_OK(Put(Key(i * 30 + 50), "value" + ToString(i)));
228
+ ASSERT_OK(Put(Key(i * 30), "value" + std::to_string(i)));
229
+ ASSERT_OK(Put(Key(i * 30 + 50), "value" + std::to_string(i)));
229
230
  ASSERT_OK(Flush());
230
231
  }
231
232
 
@@ -241,6 +242,7 @@ TEST_F(DBSecondaryTest, InternalCompactionMultiLevels) {
241
242
  input1.input_files.push_back(meta.levels[1].files[2].name);
242
243
 
243
244
  input1.output_level = 1;
245
+ ASSERT_OK(db_->GetDbIdentity(input1.db_id));
244
246
 
245
247
  options.max_open_files = -1;
246
248
  Close();
@@ -261,6 +263,7 @@ TEST_F(DBSecondaryTest, InternalCompactionMultiLevels) {
261
263
  }
262
264
 
263
265
  input2.output_level = 2;
266
+ input2.db_id = input1.db_id;
264
267
  ASSERT_OK(db_secondary_full()->TEST_CompactWithoutInstallation(
265
268
  OpenAndCompactOptions(), cfh, input2, &result));
266
269
  ASSERT_OK(result.status);
@@ -305,6 +308,7 @@ TEST_F(DBSecondaryTest, InternalCompactionCompactedFiles) {
305
308
  ASSERT_EQ(input.input_files.size(), 3);
306
309
 
307
310
  input.output_level = 1;
311
+ ASSERT_OK(db_->GetDbIdentity(input.db_id));
308
312
 
309
313
  // trigger compaction to delete the files for secondary instance compaction
310
314
  ASSERT_OK(Put("foo", "foo_value" + std::to_string(3)));
@@ -346,6 +350,7 @@ TEST_F(DBSecondaryTest, InternalCompactionMissingFiles) {
346
350
  ASSERT_EQ(input.input_files.size(), 3);
347
351
 
348
352
  input.output_level = 1;
353
+ ASSERT_OK(db_->GetDbIdentity(input.db_id));
349
354
 
350
355
  Close();
351
356
 
@@ -280,6 +280,58 @@ TEST_F(DBSSTTest, DeleteObsoleteFilesPendingOutputs) {
280
280
  listener->VerifyMatchedCount(1);
281
281
  }
282
282
 
283
+ // Test that producing an empty .sst file does not write it out to
284
+ // disk, and that the DeleteFile() env method is not called for
285
+ // removing the non-existing file later.
286
+ TEST_F(DBSSTTest, DeleteFileNotCalledForNotCreatedSSTFile) {
287
+ Options options = CurrentOptions();
288
+ options.env = env_;
289
+
290
+ OnFileDeletionListener* listener = new OnFileDeletionListener();
291
+ options.listeners.emplace_back(listener);
292
+
293
+ Reopen(options);
294
+
295
+ // Flush the empty database.
296
+ ASSERT_OK(Flush());
297
+ ASSERT_EQ("", FilesPerLevel(0));
298
+
299
+ // We expect no .sst files.
300
+ std::vector<LiveFileMetaData> metadata;
301
+ db_->GetLiveFilesMetaData(&metadata);
302
+ ASSERT_EQ(metadata.size(), 0U);
303
+
304
+ // We expect no file deletions.
305
+ listener->VerifyMatchedCount(0);
306
+ }
307
+
308
+ // Test that producing a non-empty .sst file does write it out to
309
+ // disk, and that the DeleteFile() env method is not called for removing
310
+ // the file later.
311
+ TEST_F(DBSSTTest, DeleteFileNotCalledForCreatedSSTFile) {
312
+ Options options = CurrentOptions();
313
+ options.env = env_;
314
+
315
+ OnFileDeletionListener* listener = new OnFileDeletionListener();
316
+ options.listeners.emplace_back(listener);
317
+
318
+ Reopen(options);
319
+
320
+ ASSERT_OK(Put("pika", "choo"));
321
+
322
+ // Flush the non-empty database.
323
+ ASSERT_OK(Flush());
324
+ ASSERT_EQ("1", FilesPerLevel(0));
325
+
326
+ // We expect 1 .sst files.
327
+ std::vector<LiveFileMetaData> metadata;
328
+ db_->GetLiveFilesMetaData(&metadata);
329
+ ASSERT_EQ(metadata.size(), 1U);
330
+
331
+ // We expect no file deletions.
332
+ listener->VerifyMatchedCount(0);
333
+ }
334
+
283
335
  TEST_F(DBSSTTest, DBWithSstFileManager) {
284
336
  std::shared_ptr<SstFileManager> sst_file_manager(NewSstFileManager(env_));
285
337
  auto sfm = static_cast<SstFileManagerImpl*>(sst_file_manager.get());
@@ -947,7 +999,7 @@ TEST_F(DBSSTTest, DeleteSchedulerMultipleDBPaths) {
947
999
 
948
1000
  // Create 4 files in L0
949
1001
  for (int i = 0; i < 4; i++) {
950
- ASSERT_OK(Put("Key" + ToString(i), DummyString(1024, 'A'), wo));
1002
+ ASSERT_OK(Put("Key" + std::to_string(i), DummyString(1024, 'A'), wo));
951
1003
  ASSERT_OK(Flush());
952
1004
  }
953
1005
  // We created 4 sst files in L0
@@ -963,7 +1015,7 @@ TEST_F(DBSSTTest, DeleteSchedulerMultipleDBPaths) {
963
1015
 
964
1016
  // Create 4 files in L0
965
1017
  for (int i = 4; i < 8; i++) {
966
- ASSERT_OK(Put("Key" + ToString(i), DummyString(1024, 'B'), wo));
1018
+ ASSERT_OK(Put("Key" + std::to_string(i), DummyString(1024, 'B'), wo));
967
1019
  ASSERT_OK(Flush());
968
1020
  }
969
1021
  ASSERT_EQ("4,1", FilesPerLevel(0));
@@ -1009,7 +1061,7 @@ TEST_F(DBSSTTest, DestroyDBWithRateLimitedDelete) {
1009
1061
 
1010
1062
  // Create 4 files in L0
1011
1063
  for (int i = 0; i < 4; i++) {
1012
- ASSERT_OK(Put("Key" + ToString(i), DummyString(1024, 'A')));
1064
+ ASSERT_OK(Put("Key" + std::to_string(i), DummyString(1024, 'A')));
1013
1065
  ASSERT_OK(Flush());
1014
1066
  }
1015
1067
  // We created 4 sst files in L0
@@ -1396,7 +1448,9 @@ TEST_F(DBSSTTest, OpenDBWithInfiniteMaxOpenFiles) {
1396
1448
  }
1397
1449
 
1398
1450
  TEST_F(DBSSTTest, OpenDBWithInfiniteMaxOpenFilesSubjectToMemoryLimit) {
1399
- for (bool reserve_table_builder_memory : {true, false}) {
1451
+ for (CacheEntryRoleOptions::Decision charge_table_reader :
1452
+ {CacheEntryRoleOptions::Decision::kEnabled,
1453
+ CacheEntryRoleOptions::Decision::kDisabled}) {
1400
1454
  // Open DB with infinite max open files
1401
1455
  // - First iteration use 1 thread to open files
1402
1456
  // - Second iteration use 5 threads to open files
@@ -1436,7 +1490,9 @@ TEST_F(DBSSTTest, OpenDBWithInfiniteMaxOpenFilesSubjectToMemoryLimit) {
1436
1490
  }
1437
1491
  Close();
1438
1492
 
1439
- table_options.reserve_table_reader_memory = reserve_table_builder_memory;
1493
+ table_options.cache_usage_options.options_overrides.insert(
1494
+ {CacheEntryRole::kBlockBasedTableReader,
1495
+ {/*.charged = */ charge_table_reader}});
1440
1496
  table_options.block_cache =
1441
1497
  NewLRUCache(1024 /* capacity */, 0 /* num_shard_bits */,
1442
1498
  true /* strict_capacity_limit */);
@@ -1445,8 +1501,13 @@ TEST_F(DBSSTTest, OpenDBWithInfiniteMaxOpenFilesSubjectToMemoryLimit) {
1445
1501
  // Reopening the DB will try to load all existing files, conditionally
1446
1502
  // subject to memory limit
1447
1503
  Status s = TryReopen(options);
1448
- if (table_options.reserve_table_reader_memory) {
1504
+
1505
+ if (charge_table_reader == CacheEntryRoleOptions::Decision::kEnabled) {
1449
1506
  EXPECT_TRUE(s.IsMemoryLimit());
1507
+ EXPECT_TRUE(s.ToString().find(
1508
+ kCacheEntryRoleToCamelString[static_cast<std::uint32_t>(
1509
+ CacheEntryRole::kBlockBasedTableReader)]) !=
1510
+ std::string::npos);
1450
1511
  EXPECT_TRUE(s.ToString().find("memory limit based on cache capacity") !=
1451
1512
  std::string::npos);
1452
1513
 
@@ -1478,7 +1539,7 @@ TEST_F(DBSSTTest, GetTotalSstFilesSize) {
1478
1539
  // Generate 5 files in L0
1479
1540
  for (int i = 0; i < 5; i++) {
1480
1541
  for (int j = 0; j < 10; j++) {
1481
- std::string val = "val_file_" + ToString(i);
1542
+ std::string val = "val_file_" + std::to_string(i);
1482
1543
  ASSERT_OK(Put(Key(j), val));
1483
1544
  }
1484
1545
  ASSERT_OK(Flush());