@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
@@ -33,20 +33,38 @@ DBImplReadOnly::~DBImplReadOnly() {}
33
33
  Status DBImplReadOnly::Get(const ReadOptions& read_options,
34
34
  ColumnFamilyHandle* column_family, const Slice& key,
35
35
  PinnableSlice* pinnable_val) {
36
+ return Get(read_options, column_family, key, pinnable_val,
37
+ /*timestamp*/ nullptr);
38
+ }
39
+
40
+ Status DBImplReadOnly::Get(const ReadOptions& read_options,
41
+ ColumnFamilyHandle* column_family, const Slice& key,
42
+ PinnableSlice* pinnable_val,
43
+ std::string* timestamp) {
36
44
  assert(pinnable_val != nullptr);
37
45
  // TODO: stopwatch DB_GET needed?, perf timer needed?
38
46
  PERF_TIMER_GUARD(get_snapshot_time);
39
47
 
40
48
  assert(column_family);
49
+ if (read_options.timestamp) {
50
+ const Status s =
51
+ FailIfTsSizesMismatch(column_family, *(read_options.timestamp));
52
+ if (!s.ok()) {
53
+ return s;
54
+ }
55
+ } else {
56
+ const Status s = FailIfCfHasTs(column_family);
57
+ if (!s.ok()) {
58
+ return s;
59
+ }
60
+ }
41
61
  const Comparator* ucmp = column_family->GetComparator();
42
62
  assert(ucmp);
43
- if (ucmp->timestamp_size() || read_options.timestamp) {
44
- // TODO: support timestamp
45
- return Status::NotSupported();
46
- }
63
+ std::string* ts = ucmp->timestamp_size() > 0 ? timestamp : nullptr;
47
64
 
48
65
  Status s;
49
66
  SequenceNumber snapshot = versions_->LastSequence();
67
+ GetWithTimestampReadCallback read_cb(snapshot);
50
68
  auto cfh = static_cast_with_check<ColumnFamilyHandleImpl>(column_family);
51
69
  auto cfd = cfh->cfd();
52
70
  if (tracer_) {
@@ -58,19 +76,23 @@ Status DBImplReadOnly::Get(const ReadOptions& read_options,
58
76
  SuperVersion* super_version = cfd->GetSuperVersion();
59
77
  MergeContext merge_context;
60
78
  SequenceNumber max_covering_tombstone_seq = 0;
61
- LookupKey lkey(key, snapshot);
79
+ LookupKey lkey(key, snapshot, read_options.timestamp);
62
80
  PERF_TIMER_STOP(get_snapshot_time);
63
- if (super_version->mem->Get(lkey, pinnable_val->GetSelf(),
64
- /*timestamp=*/nullptr, &s, &merge_context,
65
- &max_covering_tombstone_seq, read_options)) {
81
+ if (super_version->mem->Get(lkey, pinnable_val->GetSelf(), ts, &s,
82
+ &merge_context, &max_covering_tombstone_seq,
83
+ read_options, &read_cb)) {
66
84
  pinnable_val->PinSelf();
67
85
  RecordTick(stats_, MEMTABLE_HIT);
68
86
  } else {
69
87
  PERF_TIMER_GUARD(get_from_output_files_time);
70
88
  PinnedIteratorsManager pinned_iters_mgr;
71
- super_version->current->Get(read_options, lkey, pinnable_val,
72
- /*timestamp=*/nullptr, &s, &merge_context,
73
- &max_covering_tombstone_seq, &pinned_iters_mgr);
89
+ super_version->current->Get(
90
+ read_options, lkey, pinnable_val, ts, &s, &merge_context,
91
+ &max_covering_tombstone_seq, &pinned_iters_mgr,
92
+ /*value_found*/ nullptr,
93
+ /*key_exists*/ nullptr, /*seq*/ nullptr, &read_cb,
94
+ /*is_blob*/ nullptr,
95
+ /*do_merge*/ true);
74
96
  RecordTick(stats_, MEMTABLE_MISS);
75
97
  }
76
98
  RecordTick(stats_, NUMBER_KEYS_READ);
@@ -84,11 +106,17 @@ Status DBImplReadOnly::Get(const ReadOptions& read_options,
84
106
  Iterator* DBImplReadOnly::NewIterator(const ReadOptions& read_options,
85
107
  ColumnFamilyHandle* column_family) {
86
108
  assert(column_family);
87
- const Comparator* ucmp = column_family->GetComparator();
88
- assert(ucmp);
89
- if (ucmp->timestamp_size() || read_options.timestamp) {
90
- // TODO: support timestamp
91
- return NewErrorIterator(Status::NotSupported());
109
+ if (read_options.timestamp) {
110
+ const Status s =
111
+ FailIfTsSizesMismatch(column_family, *(read_options.timestamp));
112
+ if (!s.ok()) {
113
+ return NewErrorIterator(s);
114
+ }
115
+ } else {
116
+ const Status s = FailIfCfHasTs(column_family);
117
+ if (!s.ok()) {
118
+ return NewErrorIterator(s);
119
+ }
92
120
  }
93
121
  auto cfh = static_cast_with_check<ColumnFamilyHandleImpl>(column_family);
94
122
  auto cfd = cfh->cfd();
@@ -118,16 +146,19 @@ Status DBImplReadOnly::NewIterators(
118
146
  const std::vector<ColumnFamilyHandle*>& column_families,
119
147
  std::vector<Iterator*>* iterators) {
120
148
  if (read_options.timestamp) {
121
- // TODO: support timestamp
122
- return Status::NotSupported();
149
+ for (auto* cf : column_families) {
150
+ assert(cf);
151
+ const Status s = FailIfTsSizesMismatch(cf, *(read_options.timestamp));
152
+ if (!s.ok()) {
153
+ return s;
154
+ }
155
+ }
123
156
  } else {
124
157
  for (auto* cf : column_families) {
125
158
  assert(cf);
126
- const Comparator* ucmp = cf->GetComparator();
127
- assert(ucmp);
128
- if (ucmp->timestamp_size()) {
129
- // TODO: support timestamp
130
- return Status::NotSupported();
159
+ const Status s = FailIfCfHasTs(cf);
160
+ if (!s.ok()) {
161
+ return s;
131
162
  }
132
163
  }
133
164
  }
@@ -27,6 +27,9 @@ class DBImplReadOnly : public DBImpl {
27
27
  virtual Status Get(const ReadOptions& options,
28
28
  ColumnFamilyHandle* column_family, const Slice& key,
29
29
  PinnableSlice* value) override;
30
+ Status Get(const ReadOptions& options, ColumnFamilyHandle* column_family,
31
+ const Slice& key, PinnableSlice* value,
32
+ std::string* timestamp) override;
30
33
 
31
34
  // TODO: Implement ReadOnly MultiGet?
32
35
 
@@ -247,15 +247,16 @@ Status DBImplSecondary::RecoverLogFiles(
247
247
  if (seq_of_batch <= seq) {
248
248
  continue;
249
249
  }
250
- auto curr_log_num = port::kMaxUint64;
250
+ auto curr_log_num = std::numeric_limits<uint64_t>::max();
251
251
  if (cfd_to_current_log_.count(cfd) > 0) {
252
252
  curr_log_num = cfd_to_current_log_[cfd];
253
253
  }
254
254
  // If the active memtable contains records added by replaying an
255
255
  // earlier WAL, then we need to seal the memtable, add it to the
256
256
  // immutable memtable list and create a new active memtable.
257
- if (!cfd->mem()->IsEmpty() && (curr_log_num == port::kMaxUint64 ||
258
- curr_log_num != log_number)) {
257
+ if (!cfd->mem()->IsEmpty() &&
258
+ (curr_log_num == std::numeric_limits<uint64_t>::max() ||
259
+ curr_log_num != log_number)) {
259
260
  const MutableCFOptions mutable_cf_options =
260
261
  *cfd->GetLatestMutableCFOptions();
261
262
  MemTable* new_mem =
@@ -771,12 +772,19 @@ Status DBImplSecondary::CompactWithoutInstallation(
771
772
 
772
773
  const int job_id = next_job_id_.fetch_add(1);
773
774
 
775
+ // use primary host's db_id for running the compaction, but db_session_id is
776
+ // using the local one, which is to make sure the unique id is unique from
777
+ // the remote compactors. Because the id is generated from db_id,
778
+ // db_session_id and orig_file_number, unlike the local compaction, remote
779
+ // compaction cannot guarantee the uniqueness of orig_file_number, the file
780
+ // number is only assigned when compaction is done.
774
781
  CompactionServiceCompactionJob compaction_job(
775
782
  job_id, c.get(), immutable_db_options_, mutable_db_options_,
776
783
  file_options_for_compaction_, versions_.get(), &shutting_down_,
777
784
  &log_buffer, output_dir.get(), stats_, &mutex_, &error_handler_,
778
785
  input.snapshots, table_cache_, &event_logger_, dbname_, io_tracer_,
779
- options.canceled, db_id_, db_session_id_, secondary_path_, input, result);
786
+ options.canceled, input.db_id, db_session_id_, secondary_path_, input,
787
+ result);
780
788
 
781
789
  mutex_.Unlock();
782
790
  s = compaction_job.Run();
@@ -831,6 +839,8 @@ Status DB::OpenAndCompact(
831
839
  override_options.table_factory;
832
840
  compaction_input.column_family.options.sst_partitioner_factory =
833
841
  override_options.sst_partitioner_factory;
842
+ compaction_input.column_family.options.table_properties_collector_factories =
843
+ override_options.table_properties_collector_factories;
834
844
  compaction_input.db_options.listeners = override_options.listeners;
835
845
 
836
846
  std::vector<ColumnFamilyDescriptor> column_families;
@@ -35,10 +35,12 @@ void DumpDBFileSummary(const ImmutableDBOptions& options,
35
35
  Header(options.info_log, "DB SUMMARY\n");
36
36
  Header(options.info_log, "DB Session ID: %s\n", session_id.c_str());
37
37
 
38
+ Status s;
38
39
  // Get files in dbname dir
39
- if (!env->GetChildren(dbname, &files).ok()) {
40
- Error(options.info_log,
41
- "Error when reading %s dir\n", dbname.c_str());
40
+ s = env->GetChildren(dbname, &files);
41
+ if (!s.ok()) {
42
+ Error(options.info_log, "Error when reading %s dir %s\n", dbname.c_str(),
43
+ s.ToString().c_str());
42
44
  }
43
45
  std::sort(files.begin(), files.end());
44
46
  for (const std::string& file : files) {
@@ -53,24 +55,27 @@ void DumpDBFileSummary(const ImmutableDBOptions& options,
53
55
  Header(options.info_log, "IDENTITY file: %s\n", file.c_str());
54
56
  break;
55
57
  case kDescriptorFile:
56
- if (env->GetFileSize(dbname + "/" + file, &file_size).ok()) {
58
+ s = env->GetFileSize(dbname + "/" + file, &file_size);
59
+ if (s.ok()) {
57
60
  Header(options.info_log,
58
61
  "MANIFEST file: %s size: %" PRIu64 " Bytes\n", file.c_str(),
59
62
  file_size);
60
63
  } else {
61
- Error(options.info_log, "Error when reading MANIFEST file: %s/%s\n",
62
- dbname.c_str(), file.c_str());
64
+ Error(options.info_log,
65
+ "Error when reading MANIFEST file: %s/%s %s\n", dbname.c_str(),
66
+ file.c_str(), s.ToString().c_str());
63
67
  }
64
68
  break;
65
69
  case kWalFile:
66
- if (env->GetFileSize(dbname + "/" + file, &file_size).ok()) {
70
+ s = env->GetFileSize(dbname + "/" + file, &file_size);
71
+ if (s.ok()) {
67
72
  wal_info.append(file)
68
73
  .append(" size: ")
69
74
  .append(std::to_string(file_size))
70
75
  .append(" ; ");
71
76
  } else {
72
- Error(options.info_log, "Error when reading LOG file: %s/%s\n",
73
- dbname.c_str(), file.c_str());
77
+ Error(options.info_log, "Error when reading LOG file: %s/%s %s\n",
78
+ dbname.c_str(), file.c_str(), s.ToString().c_str());
74
79
  }
75
80
  break;
76
81
  case kTableFile:
@@ -86,10 +91,10 @@ void DumpDBFileSummary(const ImmutableDBOptions& options,
86
91
  // Get sst files in db_path dir
87
92
  for (auto& db_path : options.db_paths) {
88
93
  if (dbname.compare(db_path.path) != 0) {
89
- if (!env->GetChildren(db_path.path, &files).ok()) {
90
- Error(options.info_log,
91
- "Error when reading %s dir\n",
92
- db_path.path.c_str());
94
+ s = env->GetChildren(db_path.path, &files);
95
+ if (!s.ok()) {
96
+ Error(options.info_log, "Error when reading %s dir %s\n",
97
+ db_path.path.c_str(), s.ToString().c_str());
93
98
  continue;
94
99
  }
95
100
  std::sort(files.begin(), files.end());
@@ -111,22 +116,25 @@ void DumpDBFileSummary(const ImmutableDBOptions& options,
111
116
  // Get wal file in wal_dir
112
117
  const auto& wal_dir = options.GetWalDir(dbname);
113
118
  if (!options.IsWalDirSameAsDBPath(dbname)) {
114
- if (!env->GetChildren(wal_dir, &files).ok()) {
115
- Error(options.info_log, "Error when reading %s dir\n", wal_dir.c_str());
119
+ s = env->GetChildren(wal_dir, &files);
120
+ if (!s.ok()) {
121
+ Error(options.info_log, "Error when reading %s dir %s\n", wal_dir.c_str(),
122
+ s.ToString().c_str());
116
123
  return;
117
124
  }
118
125
  wal_info.clear();
119
126
  for (const std::string& file : files) {
120
127
  if (ParseFileName(file, &number, &type)) {
121
128
  if (type == kWalFile) {
122
- if (env->GetFileSize(wal_dir + "/" + file, &file_size).ok()) {
129
+ s = env->GetFileSize(wal_dir + "/" + file, &file_size);
130
+ if (s.ok()) {
123
131
  wal_info.append(file)
124
132
  .append(" size: ")
125
133
  .append(std::to_string(file_size))
126
134
  .append(" ; ");
127
135
  } else {
128
- Error(options.info_log, "Error when reading LOG file %s/%s\n",
129
- wal_dir.c_str(), file.c_str());
136
+ Error(options.info_log, "Error when reading LOG file %s/%s %s\n",
137
+ wal_dir.c_str(), file.c_str(), s.ToString().c_str());
130
138
  }
131
139
  }
132
140
  }
@@ -414,7 +414,7 @@ TEST_F(DBIteratorStressTest, StressTest) {
414
414
  a /= 10;
415
415
  ++len;
416
416
  }
417
- std::string s = ToString(rnd.Next() % static_cast<uint64_t>(max_key));
417
+ std::string s = std::to_string(rnd.Next() % static_cast<uint64_t>(max_key));
418
418
  s.insert(0, len - (int)s.size(), '0');
419
419
  return s;
420
420
  };
@@ -444,12 +444,13 @@ TEST_F(DBIteratorStressTest, StressTest) {
444
444
  for (double mutation_probability : {0.01, 0.5}) {
445
445
  for (double target_hidden_fraction : {0.1, 0.5}) {
446
446
  std::string trace_str =
447
- "entries: " + ToString(num_entries) +
448
- ", key_space: " + ToString(key_space) +
449
- ", error_probability: " + ToString(error_probability) +
450
- ", mutation_probability: " + ToString(mutation_probability) +
447
+ "entries: " + std::to_string(num_entries) +
448
+ ", key_space: " + std::to_string(key_space) +
449
+ ", error_probability: " + std::to_string(error_probability) +
450
+ ", mutation_probability: " +
451
+ std::to_string(mutation_probability) +
451
452
  ", target_hidden_fraction: " +
452
- ToString(target_hidden_fraction);
453
+ std::to_string(target_hidden_fraction);
453
454
  SCOPED_TRACE(trace_str);
454
455
  if (trace) {
455
456
  std::cout << trace_str << std::endl;
@@ -470,7 +471,7 @@ TEST_F(DBIteratorStressTest, StressTest) {
470
471
  types[rnd.Next() % (sizeof(types) / sizeof(types[0]))];
471
472
  }
472
473
  e.sequence = i;
473
- e.value = "v" + ToString(i);
474
+ e.value = "v" + std::to_string(i);
474
475
  ParsedInternalKey internal_key(e.key, e.sequence, e.type);
475
476
  AppendInternalKey(&e.ikey, internal_key);
476
477
 
@@ -766,7 +766,7 @@ TEST_F(DBIteratorTest, DBIteratorUseSkip) {
766
766
  internal_iter->AddMerge("b", "merge_1");
767
767
  internal_iter->AddMerge("a", "merge_2");
768
768
  for (size_t k = 0; k < 200; ++k) {
769
- internal_iter->AddPut("c", ToString(k));
769
+ internal_iter->AddPut("c", std::to_string(k));
770
770
  }
771
771
  internal_iter->Finish();
772
772
 
@@ -780,7 +780,7 @@ TEST_F(DBIteratorTest, DBIteratorUseSkip) {
780
780
  ASSERT_TRUE(db_iter->Valid());
781
781
 
782
782
  ASSERT_EQ(db_iter->key().ToString(), "c");
783
- ASSERT_EQ(db_iter->value().ToString(), ToString(i));
783
+ ASSERT_EQ(db_iter->value().ToString(), std::to_string(i));
784
784
  db_iter->Prev();
785
785
  ASSERT_TRUE(db_iter->Valid());
786
786
 
@@ -925,11 +925,11 @@ TEST_F(DBIteratorTest, DBIteratorUseSkip) {
925
925
  internal_iter->AddMerge("b", "merge_1");
926
926
  internal_iter->AddMerge("a", "merge_2");
927
927
  for (size_t k = 0; k < 200; ++k) {
928
- internal_iter->AddPut("d", ToString(k));
928
+ internal_iter->AddPut("d", std::to_string(k));
929
929
  }
930
930
 
931
931
  for (size_t k = 0; k < 200; ++k) {
932
- internal_iter->AddPut("c", ToString(k));
932
+ internal_iter->AddPut("c", std::to_string(k));
933
933
  }
934
934
  internal_iter->Finish();
935
935
 
@@ -942,7 +942,7 @@ TEST_F(DBIteratorTest, DBIteratorUseSkip) {
942
942
  ASSERT_TRUE(db_iter->Valid());
943
943
 
944
944
  ASSERT_EQ(db_iter->key().ToString(), "d");
945
- ASSERT_EQ(db_iter->value().ToString(), ToString(i));
945
+ ASSERT_EQ(db_iter->value().ToString(), std::to_string(i));
946
946
  db_iter->Prev();
947
947
  ASSERT_TRUE(db_iter->Valid());
948
948
 
@@ -966,7 +966,7 @@ TEST_F(DBIteratorTest, DBIteratorUseSkip) {
966
966
  internal_iter->AddMerge("b", "b");
967
967
  internal_iter->AddMerge("a", "a");
968
968
  for (size_t k = 0; k < 200; ++k) {
969
- internal_iter->AddMerge("c", ToString(k));
969
+ internal_iter->AddMerge("c", std::to_string(k));
970
970
  }
971
971
  internal_iter->Finish();
972
972
 
@@ -981,7 +981,7 @@ TEST_F(DBIteratorTest, DBIteratorUseSkip) {
981
981
  ASSERT_EQ(db_iter->key().ToString(), "c");
982
982
  std::string merge_result = "0";
983
983
  for (size_t j = 1; j <= i; ++j) {
984
- merge_result += "," + ToString(j);
984
+ merge_result += "," + std::to_string(j);
985
985
  }
986
986
  ASSERT_EQ(db_iter->value().ToString(), merge_result);
987
987
 
@@ -3156,7 +3156,7 @@ TEST_F(DBIteratorTest, ReverseToForwardWithDisappearingKeys) {
3156
3156
  internal_iter->AddPut("a", "A");
3157
3157
  internal_iter->AddPut("b", "B");
3158
3158
  for (int i = 0; i < 100; ++i) {
3159
- internal_iter->AddPut("c" + ToString(i), "");
3159
+ internal_iter->AddPut("c" + std::to_string(i), "");
3160
3160
  }
3161
3161
  internal_iter->Finish();
3162
3162
 
@@ -111,9 +111,12 @@ TEST_P(DBIteratorTest, PersistedTierOnIterator) {
111
111
  TEST_P(DBIteratorTest, NonBlockingIteration) {
112
112
  do {
113
113
  ReadOptions non_blocking_opts, regular_opts;
114
- Options options = CurrentOptions();
114
+ anon::OptionsOverride options_override;
115
+ options_override.full_block_cache = true;
116
+ Options options = CurrentOptions(options_override);
115
117
  options.statistics = ROCKSDB_NAMESPACE::CreateDBStatistics();
116
118
  non_blocking_opts.read_tier = kBlockCacheTier;
119
+
117
120
  CreateAndReopenWithCF({"pikachu"}, options);
118
121
  // write one kv to the database.
119
122
  ASSERT_OK(Put(1, "a", "b"));
@@ -3157,7 +3160,7 @@ TEST_F(DBIteratorWithReadCallbackTest, ReadCallback) {
3157
3160
  uint64_t num_versions =
3158
3161
  CurrentOptions().max_sequential_skip_in_iterations + 10;
3159
3162
  for (uint64_t i = 0; i < num_versions; i++) {
3160
- ASSERT_OK(Put("bar", ToString(i)));
3163
+ ASSERT_OK(Put("bar", std::to_string(i)));
3161
3164
  }
3162
3165
  SequenceNumber seq3 = db_->GetLatestSequenceNumber();
3163
3166
  TestReadCallback callback2(seq3);
@@ -3186,7 +3189,7 @@ TEST_F(DBIteratorWithReadCallbackTest, ReadCallback) {
3186
3189
  ASSERT_TRUE(iter->Valid());
3187
3190
  ASSERT_OK(iter->status());
3188
3191
  ASSERT_EQ("bar", iter->key());
3189
- ASSERT_EQ(ToString(num_versions - 1), iter->value());
3192
+ ASSERT_EQ(std::to_string(num_versions - 1), iter->value());
3190
3193
 
3191
3194
  delete iter;
3192
3195
  }
@@ -79,7 +79,7 @@ class DbKvChecksumTest
79
79
 
80
80
  void CorruptNextByteCallBack(void* arg) {
81
81
  Slice encoded = *static_cast<Slice*>(arg);
82
- if (entry_len_ == port::kMaxSizet) {
82
+ if (entry_len_ == std::numeric_limits<size_t>::max()) {
83
83
  // We learn the entry size on the first attempt
84
84
  entry_len_ = encoded.size();
85
85
  }
@@ -96,7 +96,7 @@ class DbKvChecksumTest
96
96
  WriteBatchOpType op_type_;
97
97
  char corrupt_byte_addend_;
98
98
  size_t corrupt_byte_offset_ = 0;
99
- size_t entry_len_ = port::kMaxSizet;
99
+ size_t entry_len_ = std::numeric_limits<size_t>::max();
100
100
  };
101
101
 
102
102
  std::string GetTestNameSuffix(
@@ -187,7 +187,7 @@ TEST_F(DBTestXactLogIterator, TransactionLogIteratorCorruptedLog) {
187
187
  DestroyAndReopen(options);
188
188
 
189
189
  for (int i = 0; i < 1024; i++) {
190
- ASSERT_OK(Put("key" + ToString(i), DummyString(10)));
190
+ ASSERT_OK(Put("key" + std::to_string(i), DummyString(10)));
191
191
  }
192
192
 
193
193
  ASSERT_OK(Flush());
@@ -263,20 +263,20 @@ TEST_F(DBTestXactLogIterator, TransactionLogIteratorBlobs) {
263
263
  struct Handler : public WriteBatch::Handler {
264
264
  std::string seen;
265
265
  Status PutCF(uint32_t cf, const Slice& key, const Slice& value) override {
266
- seen += "Put(" + ToString(cf) + ", " + key.ToString() + ", " +
267
- ToString(value.size()) + ")";
266
+ seen += "Put(" + std::to_string(cf) + ", " + key.ToString() + ", " +
267
+ std::to_string(value.size()) + ")";
268
268
  return Status::OK();
269
269
  }
270
270
  Status MergeCF(uint32_t cf, const Slice& key, const Slice& value) override {
271
- seen += "Merge(" + ToString(cf) + ", " + key.ToString() + ", " +
272
- ToString(value.size()) + ")";
271
+ seen += "Merge(" + std::to_string(cf) + ", " + key.ToString() + ", " +
272
+ std::to_string(value.size()) + ")";
273
273
  return Status::OK();
274
274
  }
275
275
  void LogData(const Slice& blob) override {
276
276
  seen += "LogData(" + blob.ToString() + ")";
277
277
  }
278
278
  Status DeleteCF(uint32_t cf, const Slice& key) override {
279
- seen += "Delete(" + ToString(cf) + ", " + key.ToString() + ")";
279
+ seen += "Delete(" + std::to_string(cf) + ", " + key.ToString() + ")";
280
280
  return Status::OK();
281
281
  }
282
282
  } handler;
@@ -97,7 +97,7 @@ class MockMemTableRepFactory : public MemTableRepFactory {
97
97
 
98
98
  private:
99
99
  MockMemTableRep* mock_rep_;
100
- // workaround since there's no port::kMaxUint32 yet.
100
+ // workaround since there's no std::numeric_limits<uint32_t>::max() yet.
101
101
  uint32_t last_column_family_id_ = static_cast<uint32_t>(-1);
102
102
  };
103
103
 
@@ -171,7 +171,7 @@ TEST_F(DBMemTableTest, DuplicateSeq) {
171
171
  if (!insert_dup) {
172
172
  seq++;
173
173
  }
174
- Status s = mem->Add(seq, kTypeValue, "foo", "value" + ToString(seq),
174
+ Status s = mem->Add(seq, kTypeValue, "foo", "value" + std::to_string(seq),
175
175
  nullptr /* kv_prot_info */);
176
176
  if (insert_dup) {
177
177
  ASSERT_TRUE(s.IsTryAgain());
@@ -95,6 +95,22 @@ TEST_F(DBOptionsTest, ImmutableTrackAndVerifyWalsInManifest) {
95
95
  ASSERT_FALSE(s.ok());
96
96
  }
97
97
 
98
+ TEST_F(DBOptionsTest, ImmutableVerifySstUniqueIdInManifest) {
99
+ Options options;
100
+ options.env = env_;
101
+ options.verify_sst_unique_id_in_manifest = true;
102
+
103
+ ImmutableDBOptions db_options(options);
104
+ ASSERT_TRUE(db_options.verify_sst_unique_id_in_manifest);
105
+
106
+ Reopen(options);
107
+ ASSERT_TRUE(dbfull()->GetDBOptions().verify_sst_unique_id_in_manifest);
108
+
109
+ Status s =
110
+ dbfull()->SetDBOptions({{"verify_sst_unique_id_in_manifest", "false"}});
111
+ ASSERT_FALSE(s.ok());
112
+ }
113
+
98
114
  // RocksDB lite don't support dynamic options.
99
115
  #ifndef ROCKSDB_LITE
100
116
 
@@ -424,8 +440,8 @@ TEST_F(DBOptionsTest, WritableFileMaxBufferSize) {
424
440
  ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->EnableProcessing();
425
441
  int i = 0;
426
442
  for (; i < 3; i++) {
427
- ASSERT_OK(Put("foo", ToString(i)));
428
- ASSERT_OK(Put("bar", ToString(i)));
443
+ ASSERT_OK(Put("foo", std::to_string(i)));
444
+ ASSERT_OK(Put("bar", std::to_string(i)));
429
445
  ASSERT_OK(Flush());
430
446
  }
431
447
  ASSERT_OK(dbfull()->TEST_WaitForCompact());
@@ -442,8 +458,8 @@ TEST_F(DBOptionsTest, WritableFileMaxBufferSize) {
442
458
  dbfull()->GetDBOptions().writable_file_max_buffer_size);
443
459
  i = 0;
444
460
  for (; i < 3; i++) {
445
- ASSERT_OK(Put("foo", ToString(i)));
446
- ASSERT_OK(Put("bar", ToString(i)));
461
+ ASSERT_OK(Put("foo", std::to_string(i)));
462
+ ASSERT_OK(Put("bar", std::to_string(i)));
447
463
  ASSERT_OK(Flush());
448
464
  }
449
465
  ASSERT_OK(dbfull()->TEST_WaitForCompact());
@@ -573,8 +589,8 @@ TEST_F(DBOptionsTest, SetOptionsMayTriggerCompaction) {
573
589
  Reopen(options);
574
590
  for (int i = 0; i < 3; i++) {
575
591
  // Need to insert two keys to avoid trivial move.
576
- ASSERT_OK(Put("foo", ToString(i)));
577
- ASSERT_OK(Put("bar", ToString(i)));
592
+ ASSERT_OK(Put("foo", std::to_string(i)));
593
+ ASSERT_OK(Put("bar", std::to_string(i)));
578
594
  ASSERT_OK(Flush());
579
595
  }
580
596
  ASSERT_EQ("3", FilesPerLevel());
@@ -717,8 +733,8 @@ TEST_F(DBOptionsTest, SetStatsDumpPeriodSec) {
717
733
 
718
734
  for (int i = 0; i < 20; i++) {
719
735
  unsigned int num = rand() % 5000 + 1;
720
- ASSERT_OK(
721
- dbfull()->SetDBOptions({{"stats_dump_period_sec", ToString(num)}}));
736
+ ASSERT_OK(dbfull()->SetDBOptions(
737
+ {{"stats_dump_period_sec", std::to_string(num)}}));
722
738
  ASSERT_EQ(num, dbfull()->GetDBOptions().stats_dump_period_sec);
723
739
  }
724
740
  Close();
@@ -909,7 +925,7 @@ TEST_F(DBOptionsTest, SetFIFOCompactionOptions) {
909
925
  for (int i = 0; i < 10; i++) {
910
926
  // Generate and flush a file about 10KB.
911
927
  for (int j = 0; j < 10; j++) {
912
- ASSERT_OK(Put(ToString(i * 20 + j), rnd.RandomString(980)));
928
+ ASSERT_OK(Put(std::to_string(i * 20 + j), rnd.RandomString(980)));
913
929
  }
914
930
  ASSERT_OK(Flush());
915
931
  }
@@ -940,7 +956,7 @@ TEST_F(DBOptionsTest, SetFIFOCompactionOptions) {
940
956
  for (int i = 0; i < 10; i++) {
941
957
  // Generate and flush a file about 10KB.
942
958
  for (int j = 0; j < 10; j++) {
943
- ASSERT_OK(Put(ToString(i * 20 + j), rnd.RandomString(980)));
959
+ ASSERT_OK(Put(std::to_string(i * 20 + j), rnd.RandomString(980)));
944
960
  }
945
961
  ASSERT_OK(Flush());
946
962
  }
@@ -972,7 +988,7 @@ TEST_F(DBOptionsTest, SetFIFOCompactionOptions) {
972
988
  for (int i = 0; i < 10; i++) {
973
989
  // Generate and flush a file about 10KB.
974
990
  for (int j = 0; j < 10; j++) {
975
- ASSERT_OK(Put(ToString(i * 20 + j), rnd.RandomString(980)));
991
+ ASSERT_OK(Put(std::to_string(i * 20 + j), rnd.RandomString(980)));
976
992
  }
977
993
  ASSERT_OK(Flush());
978
994
  }
@@ -1036,7 +1052,7 @@ TEST_F(DBOptionsTest, FIFOTtlBackwardCompatible) {
1036
1052
  for (int i = 0; i < 10; i++) {
1037
1053
  // Generate and flush a file about 10KB.
1038
1054
  for (int j = 0; j < 10; j++) {
1039
- ASSERT_OK(Put(ToString(i * 20 + j), rnd.RandomString(980)));
1055
+ ASSERT_OK(Put(std::to_string(i * 20 + j), rnd.RandomString(980)));
1040
1056
  }
1041
1057
  ASSERT_OK(Flush());
1042
1058
  }