@nxtedition/rocksdb 6.0.0 → 6.0.3

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 (488) hide show
  1. package/BUILDING.md +18 -0
  2. package/binding.cc +16 -17
  3. package/binding.gyp +2 -2
  4. package/deps/rocksdb/build_version.cc +4 -10
  5. package/deps/rocksdb/rocksdb/CMakeLists.txt +26 -3
  6. package/deps/rocksdb/rocksdb/Makefile +73 -91
  7. package/deps/rocksdb/rocksdb/TARGETS +27 -2
  8. package/deps/rocksdb/rocksdb/cache/cache_test.cc +29 -17
  9. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +511 -0
  10. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +299 -0
  11. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +3 -0
  12. package/deps/rocksdb/rocksdb/cache/lru_cache.h +7 -0
  13. package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +7 -0
  14. package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +29 -0
  15. package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +29 -0
  16. package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +29 -0
  17. package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +33 -0
  18. package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +29 -0
  19. package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +29 -0
  20. package/deps/rocksdb/rocksdb/cmake/modules/Finduring.cmake +26 -0
  21. package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +29 -0
  22. package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +10 -0
  23. package/deps/rocksdb/rocksdb/common.mk +30 -0
  24. package/deps/rocksdb/rocksdb/crash_test.mk +3 -3
  25. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +1 -1
  26. package/deps/rocksdb/rocksdb/db/blob/blob_index.h +3 -3
  27. package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +7 -7
  28. package/deps/rocksdb/rocksdb/db/builder.cc +22 -7
  29. package/deps/rocksdb/rocksdb/db/c.cc +71 -0
  30. package/deps/rocksdb/rocksdb/db/c_test.c +28 -2
  31. package/deps/rocksdb/rocksdb/db/column_family.cc +12 -5
  32. package/deps/rocksdb/rocksdb/db/column_family_test.cc +23 -22
  33. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +11 -11
  34. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +2 -2
  35. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +36 -10
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +4 -1
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +3 -2
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +54 -16
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +14 -2
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +3 -3
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +85 -18
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +7 -7
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +1 -1
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +23 -22
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +1 -1
  46. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +151 -32
  47. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -1
  48. package/deps/rocksdb/rocksdb/db/convenience.cc +8 -6
  49. package/deps/rocksdb/rocksdb/db/corruption_test.cc +209 -38
  50. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +2 -2
  51. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +404 -32
  52. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +28 -25
  53. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +85 -138
  54. package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +68 -3
  55. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +38 -13
  56. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +1 -1
  57. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1 -1
  58. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +11 -20
  59. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +15 -1
  60. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +12 -9
  61. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +5 -4
  62. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +1 -1
  63. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +2 -2
  64. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +42 -10
  65. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +54 -23
  66. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +3 -0
  67. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +14 -4
  68. package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +26 -18
  69. package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +8 -7
  70. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +8 -8
  71. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +6 -3
  72. package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +2 -2
  73. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +6 -6
  74. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +2 -2
  75. package/deps/rocksdb/rocksdb/db/db_options_test.cc +28 -12
  76. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +16 -15
  77. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +6 -4
  78. package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +331 -0
  79. package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +11 -6
  80. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +68 -7
  81. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +6 -5
  82. package/deps/rocksdb/rocksdb/db/db_test.cc +60 -42
  83. package/deps/rocksdb/rocksdb/db/db_test2.cc +244 -111
  84. package/deps/rocksdb/rocksdb/db/db_test_util.cc +101 -19
  85. package/deps/rocksdb/rocksdb/db/db_test_util.h +52 -2
  86. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +1 -1
  87. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +7 -7
  88. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +5 -175
  89. package/deps/rocksdb/rocksdb/db/db_with_timestamp_test_util.cc +96 -0
  90. package/deps/rocksdb/rocksdb/db/db_with_timestamp_test_util.h +126 -0
  91. package/deps/rocksdb/rocksdb/db/db_write_test.cc +6 -6
  92. package/deps/rocksdb/rocksdb/db/dbformat.h +2 -1
  93. package/deps/rocksdb/rocksdb/db/deletefile_test.cc +1 -1
  94. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +8 -8
  95. package/deps/rocksdb/rocksdb/db/experimental.cc +1 -1
  96. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +91 -12
  97. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +16 -2
  98. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +2 -0
  99. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +7 -7
  100. package/deps/rocksdb/rocksdb/db/file_indexer.h +1 -4
  101. package/deps/rocksdb/rocksdb/db/flush_job.cc +28 -15
  102. package/deps/rocksdb/rocksdb/db/flush_job.h +4 -0
  103. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +98 -30
  104. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +1 -1
  105. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +14 -1
  106. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +6 -0
  107. package/deps/rocksdb/rocksdb/db/internal_stats.cc +12 -12
  108. package/deps/rocksdb/rocksdb/db/listener_test.cc +4 -3
  109. package/deps/rocksdb/rocksdb/db/memtable.cc +2 -2
  110. package/deps/rocksdb/rocksdb/db/memtable_list.h +1 -1
  111. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +37 -25
  112. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +1 -1
  113. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +18 -18
  114. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +6 -6
  115. package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -1
  116. package/deps/rocksdb/rocksdb/db/repair.cc +13 -2
  117. package/deps/rocksdb/rocksdb/db/repair_test.cc +37 -15
  118. package/deps/rocksdb/rocksdb/db/snapshot_checker.h +1 -2
  119. package/deps/rocksdb/rocksdb/db/snapshot_impl.h +3 -1
  120. package/deps/rocksdb/rocksdb/db/table_cache.cc +20 -130
  121. package/deps/rocksdb/rocksdb/db/table_cache.h +3 -2
  122. package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +140 -0
  123. package/deps/rocksdb/rocksdb/db/version_builder.cc +1 -1
  124. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +133 -133
  125. package/deps/rocksdb/rocksdb/db/version_edit.cc +22 -2
  126. package/deps/rocksdb/rocksdb/db/version_edit.h +13 -4
  127. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +14 -14
  128. package/deps/rocksdb/rocksdb/db/version_set.cc +207 -214
  129. package/deps/rocksdb/rocksdb/db/version_set.h +14 -3
  130. package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +154 -0
  131. package/deps/rocksdb/rocksdb/db/version_set_test.cc +10 -9
  132. package/deps/rocksdb/rocksdb/db/wal_edit.h +2 -1
  133. package/deps/rocksdb/rocksdb/db/wal_manager.cc +2 -3
  134. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +1 -1
  135. package/deps/rocksdb/rocksdb/db/write_batch.cc +178 -30
  136. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +6 -6
  137. package/deps/rocksdb/rocksdb/db/write_controller.h +1 -1
  138. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +0 -2
  139. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +9 -6
  140. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_filter.h +2 -1
  141. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +4 -3
  142. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +44 -6
  143. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.cc +4 -1
  144. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.cc +0 -10
  145. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +45 -42
  146. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +374 -275
  147. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +53 -3
  148. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +0 -12
  149. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +13 -11
  150. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +276 -109
  151. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +63 -0
  152. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +45 -54
  153. package/deps/rocksdb/rocksdb/env/composite_env.cc +87 -14
  154. package/deps/rocksdb/rocksdb/env/env.cc +0 -60
  155. package/deps/rocksdb/rocksdb/env/env_encryption.cc +9 -0
  156. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +1 -1
  157. package/deps/rocksdb/rocksdb/env/env_posix.cc +6 -5
  158. package/deps/rocksdb/rocksdb/env/env_test.cc +18 -5
  159. package/deps/rocksdb/rocksdb/env/fs_posix.cc +17 -12
  160. package/deps/rocksdb/rocksdb/env/io_posix.cc +39 -37
  161. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +9 -9
  162. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +159 -65
  163. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +44 -22
  164. package/deps/rocksdb/rocksdb/file/file_util.h +2 -0
  165. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +142 -17
  166. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +5 -2
  167. package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +7 -0
  168. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +60 -40
  169. package/deps/rocksdb/rocksdb/file/writable_file_writer.h +1 -0
  170. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +23 -5
  171. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +49 -1
  172. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +5 -5
  173. package/deps/rocksdb/rocksdb/include/rocksdb/cleanable.h +59 -2
  174. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +1 -0
  175. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +2 -1
  176. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +46 -44
  177. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +1 -1
  178. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +2 -0
  179. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +2 -4
  180. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +3 -0
  181. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +45 -3
  182. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +2 -0
  183. package/deps/rocksdb/rocksdb/include/rocksdb/snapshot.h +4 -1
  184. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +3 -0
  185. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +91 -40
  186. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -2
  187. package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +22 -13
  188. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/customizable_util.h +9 -0
  189. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +4 -0
  190. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +25 -0
  191. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +378 -103
  192. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +14 -0
  193. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  194. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +18 -4
  195. package/deps/rocksdb/rocksdb/memory/arena.h +1 -1
  196. package/deps/rocksdb/rocksdb/memory/concurrent_arena.cc +1 -5
  197. package/deps/rocksdb/rocksdb/memory/concurrent_arena.h +1 -5
  198. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +6 -8
  199. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +1 -1
  200. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +1 -1
  201. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +5 -3
  202. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +266 -45
  203. package/deps/rocksdb/rocksdb/monitoring/histogram.cc +2 -1
  204. package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +1 -4
  205. package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +4 -4
  206. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +7 -8
  207. package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +2 -2
  208. package/deps/rocksdb/rocksdb/monitoring/perf_level.cc +1 -5
  209. package/deps/rocksdb/rocksdb/monitoring/perf_level_imp.h +1 -5
  210. package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.cc +2 -2
  211. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +1 -1
  212. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +2 -1
  213. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +1 -1
  214. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +3 -3
  215. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +2 -2
  216. package/deps/rocksdb/rocksdb/options/cf_options.cc +47 -38
  217. package/deps/rocksdb/rocksdb/options/configurable.cc +9 -27
  218. package/deps/rocksdb/rocksdb/options/configurable_test.cc +1 -1
  219. package/deps/rocksdb/rocksdb/options/customizable.cc +3 -1
  220. package/deps/rocksdb/rocksdb/options/customizable_test.cc +379 -318
  221. package/deps/rocksdb/rocksdb/options/db_options.cc +46 -17
  222. package/deps/rocksdb/rocksdb/options/db_options.h +2 -0
  223. package/deps/rocksdb/rocksdb/options/options.cc +7 -0
  224. package/deps/rocksdb/rocksdb/options/options_helper.cc +86 -39
  225. package/deps/rocksdb/rocksdb/options/options_parser.cc +10 -10
  226. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +12 -7
  227. package/deps/rocksdb/rocksdb/options/options_test.cc +222 -68
  228. package/deps/rocksdb/rocksdb/port/port_posix.h +0 -15
  229. package/deps/rocksdb/rocksdb/port/win/env_win.cc +5 -4
  230. package/deps/rocksdb/rocksdb/port/win/env_win.h +2 -2
  231. package/deps/rocksdb/rocksdb/port/win/port_win.h +0 -31
  232. package/deps/rocksdb/rocksdb/rocksdb.pc.in +11 -0
  233. package/deps/rocksdb/rocksdb/src.mk +6 -1
  234. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
  235. package/deps/rocksdb/rocksdb/table/block_based/block.cc +4 -2
  236. package/deps/rocksdb/rocksdb/table/block_based/block.h +21 -25
  237. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +3 -4
  238. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +23 -8
  239. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +52 -15
  240. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +81 -7
  241. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +8 -2
  242. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +94 -726
  243. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +21 -15
  244. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +9 -3
  245. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +754 -0
  246. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +44 -73
  247. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +15 -5
  248. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +2 -1
  249. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +2 -11
  250. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +59 -1
  251. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +18 -0
  252. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +33 -17
  253. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +0 -61
  254. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +0 -13
  255. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +2 -1
  256. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +2 -2
  257. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +3 -2
  258. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +2 -1
  259. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +3 -2
  260. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +4 -3
  261. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +8 -4
  262. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +4 -4
  263. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +2 -1
  264. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +65 -7
  265. package/deps/rocksdb/rocksdb/table/block_fetcher.h +2 -0
  266. package/deps/rocksdb/rocksdb/table/cleanable_test.cc +113 -0
  267. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +1 -1
  268. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +1 -1
  269. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +1 -1
  270. package/deps/rocksdb/rocksdb/table/format.cc +22 -20
  271. package/deps/rocksdb/rocksdb/table/iterator.cc +1 -81
  272. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +39 -0
  273. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +2 -2
  274. package/deps/rocksdb/rocksdb/table/multiget_context.h +60 -13
  275. package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +0 -3
  276. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +12 -1
  277. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +4 -4
  278. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +2 -1
  279. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +1 -1
  280. package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +1 -1
  281. package/deps/rocksdb/rocksdb/table/table_properties.cc +3 -5
  282. package/deps/rocksdb/rocksdb/table/table_reader.h +13 -0
  283. package/deps/rocksdb/rocksdb/table/table_test.cc +202 -78
  284. package/deps/rocksdb/rocksdb/table/unique_id.cc +84 -25
  285. package/deps/rocksdb/rocksdb/table/unique_id_impl.h +37 -4
  286. package/deps/rocksdb/rocksdb/test_util/testutil.cc +3 -1
  287. package/deps/rocksdb/rocksdb/test_util/testutil.h +11 -8
  288. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +8 -4
  289. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +17 -0
  290. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +11 -9
  291. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +3 -3
  292. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +277 -105
  293. package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +4 -4
  294. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +186 -42
  295. package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +75 -49
  296. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +9 -8
  297. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +4 -1
  298. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +2 -2
  299. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +26 -4
  300. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +1 -1
  301. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +1 -1
  302. package/deps/rocksdb/rocksdb/util/async_file_reader.cc +72 -0
  303. package/deps/rocksdb/rocksdb/util/async_file_reader.h +144 -0
  304. package/deps/rocksdb/rocksdb/util/autovector_test.cc +4 -4
  305. package/deps/rocksdb/rocksdb/util/bloom_test.cc +14 -8
  306. package/deps/rocksdb/rocksdb/util/build_version.cc.in +5 -6
  307. package/deps/rocksdb/rocksdb/util/cleanable.cc +180 -0
  308. package/deps/rocksdb/rocksdb/util/comparator.cc +5 -3
  309. package/deps/rocksdb/rocksdb/util/compression.h +56 -7
  310. package/deps/rocksdb/rocksdb/util/coro_utils.h +111 -0
  311. package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +148 -0
  312. package/deps/rocksdb/rocksdb/util/filelock_test.cc +2 -2
  313. package/deps/rocksdb/rocksdb/util/filter_bench.cc +12 -4
  314. package/deps/rocksdb/rocksdb/util/heap.h +5 -3
  315. package/deps/rocksdb/rocksdb/util/random.cc +1 -5
  316. package/deps/rocksdb/rocksdb/util/rate_limiter.cc +12 -9
  317. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +1 -1
  318. package/deps/rocksdb/rocksdb/util/ribbon_alg.h +1 -1
  319. package/deps/rocksdb/rocksdb/util/ribbon_test.cc +2 -4
  320. package/deps/rocksdb/rocksdb/util/single_thread_executor.h +55 -0
  321. package/deps/rocksdb/rocksdb/util/slice.cc +8 -9
  322. package/deps/rocksdb/rocksdb/util/string_util.cc +3 -2
  323. package/deps/rocksdb/rocksdb/util/string_util.h +0 -13
  324. package/deps/rocksdb/rocksdb/util/thread_local.cc +4 -23
  325. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +99 -22
  326. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_impl.h +7 -0
  327. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +102 -59
  328. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +38 -36
  329. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +2 -2
  330. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +28 -0
  331. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +3 -0
  332. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +1 -1
  333. package/deps/rocksdb/rocksdb/utilities/object_registry.cc +71 -0
  334. package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +71 -0
  335. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +1 -1
  336. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +5 -5
  337. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +3 -3
  338. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +0 -13
  339. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +40 -0
  340. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc +10 -8
  341. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.h +4 -2
  342. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +17 -0
  343. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +7 -7
  344. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +8 -1
  345. package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +5 -1
  346. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +21 -15
  347. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +2 -2
  348. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +69 -11
  349. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +22 -9
  350. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +26 -5
  351. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +17 -4
  352. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +19 -16
  353. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +7 -3
  354. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +3 -2
  355. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +2 -2
  356. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +2 -2
  357. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +6 -6
  358. package/deps/rocksdb/rocksdb.gyp +47 -37
  359. package/package-lock.json +23687 -0
  360. package/package.json +2 -30
  361. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  362. package/prebuilds/darwin-x64/node.napi.node +0 -0
  363. package/prebuilds/linux-x64/node.napi.node +0 -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/linux-arm64/node.napi.node +0 -0
@@ -318,6 +318,8 @@ DEFINE_bool(reverse_iterator, false,
318
318
  "When true use Prev rather than Next for iterators that do "
319
319
  "Seek and then Next");
320
320
 
321
+ DEFINE_bool(auto_prefix_mode, false, "Set auto_prefix_mode for seek benchmark");
322
+
321
323
  DEFINE_int64(max_scan_distance, 0,
322
324
  "Used to define iterate_upper_bound (or iterate_lower_bound "
323
325
  "if FLAGS_reverse_iterator is set to true) when value is nonzero");
@@ -410,6 +412,10 @@ DEFINE_double(read_random_exp_range, 0.0,
410
412
 
411
413
  DEFINE_bool(histogram, false, "Print histogram of operation timings");
412
414
 
415
+ DEFINE_bool(confidence_interval_only, false,
416
+ "Print 95% confidence interval upper and lower bounds only for "
417
+ "aggregate stats.");
418
+
413
419
  DEFINE_bool(enable_numa, false,
414
420
  "Make operations aware of NUMA architecture and bind memory "
415
421
  "and cpus corresponding to nodes together. In NUMA, memory "
@@ -1125,10 +1131,20 @@ DEFINE_bool(async_io, false,
1125
1131
  "When set true, RocksDB does asynchronous reads for internal auto "
1126
1132
  "readahead prefetching.");
1127
1133
 
1128
- DEFINE_bool(reserve_table_reader_memory, false,
1129
- "A dynamically updating charge to block cache, loosely based on "
1130
- "the actual memory usage of table reader, will occur to account "
1131
- "the memory, if block cache available.");
1134
+ DEFINE_bool(charge_compression_dictionary_building_buffer, false,
1135
+ "Setting for "
1136
+ "CacheEntryRoleOptions::charged of"
1137
+ "CacheEntryRole::kCompressionDictionaryBuildingBuffer");
1138
+
1139
+ DEFINE_bool(charge_filter_construction, false,
1140
+ "Setting for "
1141
+ "CacheEntryRoleOptions::charged of"
1142
+ "CacheEntryRole::kFilterConstruction");
1143
+
1144
+ DEFINE_bool(charge_table_reader, false,
1145
+ "Setting for "
1146
+ "CacheEntryRoleOptions::charged of"
1147
+ "CacheEntryRole::kBlockBasedTableReader");
1132
1148
 
1133
1149
  static enum ROCKSDB_NAMESPACE::CompressionType StringToCompressionType(
1134
1150
  const char* ctype) {
@@ -1200,6 +1216,11 @@ DEFINE_uint64(compression_max_dict_buffer_bytes,
1200
1216
  ROCKSDB_NAMESPACE::CompressionOptions().max_dict_buffer_bytes,
1201
1217
  "Maximum bytes to buffer to collect samples for dictionary.");
1202
1218
 
1219
+ DEFINE_bool(compression_use_zstd_dict_trainer,
1220
+ ROCKSDB_NAMESPACE::CompressionOptions().use_zstd_dict_trainer,
1221
+ "If true, use ZSTD_TrainDictionary() to create dictionary, else"
1222
+ "use ZSTD_FinalizeDictionary() to create dictionary");
1223
+
1203
1224
  static bool ValidateTableCacheNumshardbits(const char* flagname,
1204
1225
  int32_t value) {
1205
1226
  if (0 >= value || value >= 20) {
@@ -1948,9 +1969,9 @@ class ReporterAgent {
1948
1969
  auto secs_elapsed =
1949
1970
  (clock->NowMicros() - time_started + kMicrosInSecond / 2) /
1950
1971
  kMicrosInSecond;
1951
- std::string report = ToString(secs_elapsed) + "," +
1952
- ToString(total_ops_done_snapshot - last_report_) +
1953
- "\n";
1972
+ std::string report =
1973
+ std::to_string(secs_elapsed) + "," +
1974
+ std::to_string(total_ops_done_snapshot - last_report_) + "\n";
1954
1975
  auto s = report_file_->Append(report);
1955
1976
  if (s.ok()) {
1956
1977
  s = report_file_->Flush();
@@ -2204,7 +2225,7 @@ class Stats {
2204
2225
  if (db->GetProperty(
2205
2226
  db_with_cfh->cfh[i],
2206
2227
  "rocksdb.aggregated-table-properties-at-level" +
2207
- ToString(level),
2228
+ std::to_string(level),
2208
2229
  &stats)) {
2209
2230
  if (stats.find("# entries=0") == std::string::npos) {
2210
2231
  fprintf(stderr, "Level[%d]: %s\n", level,
@@ -2228,7 +2249,7 @@ class Stats {
2228
2249
  for (int level = 0; level < FLAGS_num_levels; ++level) {
2229
2250
  if (db->GetProperty(
2230
2251
  "rocksdb.aggregated-table-properties-at-level" +
2231
- ToString(level),
2252
+ std::to_string(level),
2232
2253
  &stats)) {
2233
2254
  if (stats.find("# entries=0") == std::string::npos) {
2234
2255
  fprintf(stderr, "Level[%d]: %s\n", level, stats.c_str());
@@ -2261,25 +2282,23 @@ class Stats {
2261
2282
  if (done_ < 1) done_ = 1;
2262
2283
 
2263
2284
  std::string extra;
2285
+ double elapsed = (finish_ - start_) * 1e-6;
2264
2286
  if (bytes_ > 0) {
2265
2287
  // Rate is computed on actual elapsed time, not the sum of per-thread
2266
2288
  // elapsed times.
2267
- double elapsed = (finish_ - start_) * 1e-6;
2268
2289
  char rate[100];
2269
2290
  snprintf(rate, sizeof(rate), "%6.1f MB/s",
2270
2291
  (bytes_ / 1048576.0) / elapsed);
2271
2292
  extra = rate;
2272
2293
  }
2273
2294
  AppendWithSpace(&extra, message_);
2274
- double elapsed = (finish_ - start_) * 1e-6;
2275
2295
  double throughput = (double)done_/elapsed;
2276
2296
 
2277
- fprintf(stdout, "%-12s : %11.3f micros/op %ld ops/sec;%s%s\n",
2278
- name.ToString().c_str(),
2279
- seconds_ * 1e6 / done_,
2280
- (long)throughput,
2281
- (extra.empty() ? "" : " "),
2282
- extra.c_str());
2297
+ fprintf(stdout,
2298
+ "%-12s : %11.3f micros/op %ld ops/sec %.3f seconds %" PRIu64
2299
+ " operations;%s%s\n",
2300
+ name.ToString().c_str(), seconds_ * 1e6 / done_, (long)throughput,
2301
+ elapsed, done_, (extra.empty() ? "" : " "), extra.c_str());
2283
2302
  if (FLAGS_histogram) {
2284
2303
  for (auto it = hist_.begin(); it != hist_.end(); ++it) {
2285
2304
  fprintf(stdout, "Microseconds per %s:\n%s\n",
@@ -2319,28 +2338,83 @@ class CombinedStats {
2319
2338
  }
2320
2339
 
2321
2340
  void Report(const std::string& bench_name) {
2341
+ if (throughput_ops_.size() < 2) {
2342
+ // skip if there are not enough samples
2343
+ return;
2344
+ }
2345
+
2322
2346
  const char* name = bench_name.c_str();
2323
2347
  int num_runs = static_cast<int>(throughput_ops_.size());
2324
2348
 
2325
2349
  if (throughput_mbs_.size() == throughput_ops_.size()) {
2326
2350
  fprintf(stdout,
2327
- "%s [AVG %d runs] : %d ops/sec; %6.1f MB/sec\n"
2351
+ "%s [AVG %d runs] : %d (± %d) ops/sec; %6.1f (± %.1f) MB/sec\n",
2352
+ name, num_runs, static_cast<int>(CalcAvg(throughput_ops_)),
2353
+ static_cast<int>(CalcConfidence95(throughput_ops_)),
2354
+ CalcAvg(throughput_mbs_), CalcConfidence95(throughput_mbs_));
2355
+ } else {
2356
+ fprintf(stdout, "%s [AVG %d runs] : %d (± %d) ops/sec\n", name, num_runs,
2357
+ static_cast<int>(CalcAvg(throughput_ops_)),
2358
+ static_cast<int>(CalcConfidence95(throughput_ops_)));
2359
+ }
2360
+ }
2361
+
2362
+ void ReportWithConfidenceIntervals(const std::string& bench_name) {
2363
+ if (throughput_ops_.size() < 2) {
2364
+ // skip if there are not enough samples
2365
+ return;
2366
+ }
2367
+
2368
+ const char* name = bench_name.c_str();
2369
+ int num_runs = static_cast<int>(throughput_ops_.size());
2370
+
2371
+ int ops_avg = static_cast<int>(CalcAvg(throughput_ops_));
2372
+ int ops_confidence_95 = static_cast<int>(CalcConfidence95(throughput_ops_));
2373
+
2374
+ if (throughput_mbs_.size() == throughput_ops_.size()) {
2375
+ double mbs_avg = CalcAvg(throughput_mbs_);
2376
+ double mbs_confidence_95 = CalcConfidence95(throughput_mbs_);
2377
+ fprintf(stdout,
2378
+ "%s [CI95 %d runs] : (%d, %d) ops/sec; (%.1f, %.1f) MB/sec\n",
2379
+ name, num_runs, ops_avg - ops_confidence_95,
2380
+ ops_avg + ops_confidence_95, mbs_avg - mbs_confidence_95,
2381
+ mbs_avg + mbs_confidence_95);
2382
+ } else {
2383
+ fprintf(stdout, "%s [CI95 %d runs] : (%d, %d) ops/sec\n", name, num_runs,
2384
+ ops_avg - ops_confidence_95, ops_avg + ops_confidence_95);
2385
+ }
2386
+ }
2387
+
2388
+ void ReportFinal(const std::string& bench_name) {
2389
+ if (throughput_ops_.size() < 2) {
2390
+ // skip if there are not enough samples
2391
+ return;
2392
+ }
2393
+
2394
+ const char* name = bench_name.c_str();
2395
+ int num_runs = static_cast<int>(throughput_ops_.size());
2396
+
2397
+ if (throughput_mbs_.size() == throughput_ops_.size()) {
2398
+ fprintf(stdout,
2399
+ "%s [AVG %d runs] : %d (± %d) ops/sec; %6.1f (± %.1f) MB/sec\n"
2328
2400
  "%s [MEDIAN %d runs] : %d ops/sec; %6.1f MB/sec\n",
2329
2401
  name, num_runs, static_cast<int>(CalcAvg(throughput_ops_)),
2330
- CalcAvg(throughput_mbs_), name, num_runs,
2331
- static_cast<int>(CalcMedian(throughput_ops_)),
2402
+ static_cast<int>(CalcConfidence95(throughput_ops_)),
2403
+ CalcAvg(throughput_mbs_), CalcConfidence95(throughput_mbs_), name,
2404
+ num_runs, static_cast<int>(CalcMedian(throughput_ops_)),
2332
2405
  CalcMedian(throughput_mbs_));
2333
2406
  } else {
2334
2407
  fprintf(stdout,
2335
- "%s [AVG %d runs] : %d ops/sec\n"
2408
+ "%s [AVG %d runs] : %d (± %d) ops/sec\n"
2336
2409
  "%s [MEDIAN %d runs] : %d ops/sec\n",
2337
- name, num_runs, static_cast<int>(CalcAvg(throughput_ops_)), name,
2410
+ name, num_runs, static_cast<int>(CalcAvg(throughput_ops_)),
2411
+ static_cast<int>(CalcConfidence95(throughput_ops_)), name,
2338
2412
  num_runs, static_cast<int>(CalcMedian(throughput_ops_)));
2339
2413
  }
2340
2414
  }
2341
2415
 
2342
2416
  private:
2343
- double CalcAvg(std::vector<double> data) {
2417
+ double CalcAvg(std::vector<double>& data) {
2344
2418
  double avg = 0;
2345
2419
  for (double x : data) {
2346
2420
  avg += x;
@@ -2349,7 +2423,20 @@ class CombinedStats {
2349
2423
  return avg;
2350
2424
  }
2351
2425
 
2352
- double CalcMedian(std::vector<double> data) {
2426
+ // Calculates 95% CI assuming a normal distribution of samples.
2427
+ // Samples are not from a normal distribution, but it still
2428
+ // provides useful approximation.
2429
+ double CalcConfidence95(std::vector<double>& data) {
2430
+ assert(data.size() > 1);
2431
+ double avg = CalcAvg(data);
2432
+ double std_error = CalcStdDev(data, avg) / std::sqrt(data.size());
2433
+
2434
+ // Z score for the 97.5 percentile
2435
+ // see https://en.wikipedia.org/wiki/1.96
2436
+ return 1.959964 * std_error;
2437
+ }
2438
+
2439
+ double CalcMedian(std::vector<double>& data) {
2353
2440
  assert(data.size() > 0);
2354
2441
  std::sort(data.begin(), data.end());
2355
2442
 
@@ -2363,6 +2450,18 @@ class CombinedStats {
2363
2450
  }
2364
2451
  }
2365
2452
 
2453
+ double CalcStdDev(std::vector<double>& data, double average) {
2454
+ assert(data.size() > 1);
2455
+ double squared_sum = 0.0;
2456
+ for (double x : data) {
2457
+ squared_sum += std::pow(x - average, 2);
2458
+ }
2459
+
2460
+ // using samples count - 1 following Bessel's correction
2461
+ // see https://en.wikipedia.org/wiki/Bessel%27s_correction
2462
+ return std::sqrt(squared_sum / (data.size() - 1));
2463
+ }
2464
+
2366
2465
  std::vector<double> throughput_ops_;
2367
2466
  std::vector<double> throughput_mbs_;
2368
2467
  };
@@ -2471,7 +2570,7 @@ class Benchmark {
2471
2570
  private:
2472
2571
  std::shared_ptr<Cache> cache_;
2473
2572
  std::shared_ptr<Cache> compressed_cache_;
2474
- const SliceTransform* prefix_extractor_;
2573
+ std::shared_ptr<const SliceTransform> prefix_extractor_;
2475
2574
  DBWithColumnFamilies db_;
2476
2575
  std::vector<DBWithColumnFamilies> multi_dbs_;
2477
2576
  int64_t num_;
@@ -2874,7 +2973,9 @@ class Benchmark {
2874
2973
  Benchmark()
2875
2974
  : cache_(NewCache(FLAGS_cache_size)),
2876
2975
  compressed_cache_(NewCache(FLAGS_compressed_cache_size)),
2877
- prefix_extractor_(NewFixedPrefixTransform(FLAGS_prefix_size)),
2976
+ prefix_extractor_(FLAGS_prefix_size != 0
2977
+ ? NewFixedPrefixTransform(FLAGS_prefix_size)
2978
+ : nullptr),
2878
2979
  num_(FLAGS_num),
2879
2980
  key_size_(FLAGS_key_size),
2880
2981
  user_timestamp_size_(FLAGS_user_timestamp_size),
@@ -2965,7 +3066,6 @@ class Benchmark {
2965
3066
 
2966
3067
  ~Benchmark() {
2967
3068
  DeleteDBs();
2968
- delete prefix_extractor_;
2969
3069
  if (cache_.get() != nullptr) {
2970
3070
  // Clear cache reference first
2971
3071
  open_options_.write_buffer_manager.reset();
@@ -3060,7 +3160,7 @@ class Benchmark {
3060
3160
  }
3061
3161
  #endif
3062
3162
  }
3063
- return base_name + ToString(id);
3163
+ return base_name + std::to_string(id);
3064
3164
  }
3065
3165
 
3066
3166
  void VerifyDBFromDB(std::string& truth_db_name) {
@@ -3525,9 +3625,14 @@ class Benchmark {
3525
3625
  for (int i = 0; i < num_repeat; i++) {
3526
3626
  Stats stats = RunBenchmark(num_threads, name, method);
3527
3627
  combined_stats.AddStats(stats);
3628
+ if (FLAGS_confidence_interval_only) {
3629
+ combined_stats.ReportWithConfidenceIntervals(name);
3630
+ } else {
3631
+ combined_stats.Report(name);
3632
+ }
3528
3633
  }
3529
3634
  if (num_repeat > 1) {
3530
- combined_stats.Report(name);
3635
+ combined_stats.ReportFinal(name);
3531
3636
  }
3532
3637
  }
3533
3638
  if (post_process_method != nullptr) {
@@ -3704,7 +3809,7 @@ class Benchmark {
3704
3809
  static inline void ChecksumBenchmark(FnType fn, ThreadState* thread,
3705
3810
  Args... args) {
3706
3811
  const int size = FLAGS_block_size; // use --block_size option for db_bench
3707
- std::string labels = "(" + ToString(FLAGS_block_size) + " per op)";
3812
+ std::string labels = "(" + std::to_string(FLAGS_block_size) + " per op)";
3708
3813
  const char* label = labels.c_str();
3709
3814
 
3710
3815
  std::string data(size, 'x');
@@ -3857,6 +3962,28 @@ class Benchmark {
3857
3962
  assert(db_.db == nullptr);
3858
3963
 
3859
3964
  options.env = FLAGS_env;
3965
+ options.wal_dir = FLAGS_wal_dir;
3966
+ options.dump_malloc_stats = FLAGS_dump_malloc_stats;
3967
+ options.stats_dump_period_sec =
3968
+ static_cast<unsigned int>(FLAGS_stats_dump_period_sec);
3969
+ options.stats_persist_period_sec =
3970
+ static_cast<unsigned int>(FLAGS_stats_persist_period_sec);
3971
+ options.persist_stats_to_disk = FLAGS_persist_stats_to_disk;
3972
+ options.stats_history_buffer_size =
3973
+ static_cast<size_t>(FLAGS_stats_history_buffer_size);
3974
+ options.avoid_flush_during_recovery = FLAGS_avoid_flush_during_recovery;
3975
+
3976
+ options.compression_opts.level = FLAGS_compression_level;
3977
+ options.compression_opts.max_dict_bytes = FLAGS_compression_max_dict_bytes;
3978
+ options.compression_opts.zstd_max_train_bytes =
3979
+ FLAGS_compression_zstd_max_train_bytes;
3980
+ options.compression_opts.parallel_threads =
3981
+ FLAGS_compression_parallel_threads;
3982
+ options.compression_opts.max_dict_buffer_bytes =
3983
+ FLAGS_compression_max_dict_buffer_bytes;
3984
+ options.compression_opts.use_zstd_dict_trainer =
3985
+ FLAGS_compression_use_zstd_dict_trainer;
3986
+
3860
3987
  options.max_open_files = FLAGS_open_files;
3861
3988
  if (FLAGS_cost_write_buffer_to_cache || FLAGS_db_write_buffer_size != 0) {
3862
3989
  options.write_buffer_manager.reset(
@@ -3891,10 +4018,7 @@ class Benchmark {
3891
4018
  FLAGS_fifo_compaction_allow_compaction);
3892
4019
  options.compaction_options_fifo.age_for_warm = FLAGS_fifo_age_for_warm;
3893
4020
  #endif // ROCKSDB_LITE
3894
- if (FLAGS_prefix_size != 0) {
3895
- options.prefix_extractor.reset(
3896
- NewFixedPrefixTransform(FLAGS_prefix_size));
3897
- }
4021
+ options.prefix_extractor = prefix_extractor_;
3898
4022
  if (FLAGS_use_uint64_comparator) {
3899
4023
  options.comparator = test::Uint64Comparator();
3900
4024
  if (FLAGS_key_size != 8) {
@@ -4055,8 +4179,21 @@ class Benchmark {
4055
4179
  true;
4056
4180
  }
4057
4181
  block_based_options.block_cache = cache_;
4058
- block_based_options.reserve_table_reader_memory =
4059
- FLAGS_reserve_table_reader_memory;
4182
+ block_based_options.cache_usage_options.options_overrides.insert(
4183
+ {CacheEntryRole::kCompressionDictionaryBuildingBuffer,
4184
+ {/*.charged = */ FLAGS_charge_compression_dictionary_building_buffer
4185
+ ? CacheEntryRoleOptions::Decision::kEnabled
4186
+ : CacheEntryRoleOptions::Decision::kDisabled}});
4187
+ block_based_options.cache_usage_options.options_overrides.insert(
4188
+ {CacheEntryRole::kFilterConstruction,
4189
+ {/*.charged = */ FLAGS_charge_filter_construction
4190
+ ? CacheEntryRoleOptions::Decision::kEnabled
4191
+ : CacheEntryRoleOptions::Decision::kDisabled}});
4192
+ block_based_options.cache_usage_options.options_overrides.insert(
4193
+ {CacheEntryRole::kBlockBasedTableReader,
4194
+ {/*.charged = */ FLAGS_charge_table_reader
4195
+ ? CacheEntryRoleOptions::Decision::kEnabled
4196
+ : CacheEntryRoleOptions::Decision::kDisabled}});
4060
4197
  block_based_options.block_cache_compressed = compressed_cache_;
4061
4198
  block_based_options.block_size = FLAGS_block_size;
4062
4199
  block_based_options.block_restart_interval = FLAGS_block_restart_interval;
@@ -4285,94 +4422,104 @@ class Benchmark {
4285
4422
  }
4286
4423
 
4287
4424
  void InitializeOptionsGeneral(Options* opts) {
4425
+ // Be careful about what is set here to avoid accidentally overwriting
4426
+ // settings already configured by OPTIONS file. Only configure settings that
4427
+ // are needed for the benchmark to run, settings for shared objects that
4428
+ // were not configured already, settings that require dynamically invoking
4429
+ // APIs, and settings for the benchmark itself.
4288
4430
  Options& options = *opts;
4289
4431
 
4290
- options.create_missing_column_families = FLAGS_num_column_families > 1;
4291
- options.statistics = dbstats;
4292
- options.wal_dir = FLAGS_wal_dir;
4293
- options.create_if_missing = !FLAGS_use_existing_db;
4294
- options.dump_malloc_stats = FLAGS_dump_malloc_stats;
4295
- options.stats_dump_period_sec =
4296
- static_cast<unsigned int>(FLAGS_stats_dump_period_sec);
4297
- options.stats_persist_period_sec =
4298
- static_cast<unsigned int>(FLAGS_stats_persist_period_sec);
4299
- options.persist_stats_to_disk = FLAGS_persist_stats_to_disk;
4300
- options.stats_history_buffer_size =
4301
- static_cast<size_t>(FLAGS_stats_history_buffer_size);
4302
- options.avoid_flush_during_recovery = FLAGS_avoid_flush_during_recovery;
4432
+ // Always set these since they are harmless when not needed and prevent
4433
+ // a guaranteed failure when they are needed.
4434
+ options.create_missing_column_families = true;
4435
+ options.create_if_missing = true;
4436
+
4437
+ if (options.statistics == nullptr) {
4438
+ options.statistics = dbstats;
4439
+ }
4303
4440
 
4304
- options.compression_opts.level = FLAGS_compression_level;
4305
- options.compression_opts.max_dict_bytes = FLAGS_compression_max_dict_bytes;
4306
- options.compression_opts.zstd_max_train_bytes =
4307
- FLAGS_compression_zstd_max_train_bytes;
4308
- options.compression_opts.parallel_threads =
4309
- FLAGS_compression_parallel_threads;
4310
- options.compression_opts.max_dict_buffer_bytes =
4311
- FLAGS_compression_max_dict_buffer_bytes;
4312
- // If this is a block based table, set some related options
4313
4441
  auto table_options =
4314
4442
  options.table_factory->GetOptions<BlockBasedTableOptions>();
4315
4443
  if (table_options != nullptr) {
4316
- if (FLAGS_cache_size) {
4444
+ if (FLAGS_cache_size > 0) {
4445
+ // This violates this function's rules on when to set options. But we
4446
+ // have to do it because the case of unconfigured block cache in OPTIONS
4447
+ // file is indistinguishable (it is sanitized to 8MB by this point, not
4448
+ // nullptr), and our regression tests assume this will be the shared
4449
+ // block cache, even with OPTIONS file provided.
4317
4450
  table_options->block_cache = cache_;
4318
4451
  }
4319
- if (FLAGS_bloom_bits < 0) {
4320
- table_options->filter_policy = BlockBasedTableOptions().filter_policy;
4321
- } else if (FLAGS_bloom_bits == 0) {
4322
- table_options->filter_policy.reset();
4323
- } else if (FLAGS_use_block_based_filter) {
4324
- // Use back-door way of enabling obsolete block-based Bloom
4325
- Status s = FilterPolicy::CreateFromString(
4326
- ConfigOptions(),
4327
- "rocksdb.internal.DeprecatedBlockBasedBloomFilter:" +
4328
- ROCKSDB_NAMESPACE::ToString(FLAGS_bloom_bits),
4329
- &table_options->filter_policy);
4330
- if (!s.ok()) {
4331
- fprintf(stderr, "failure creating obsolete block-based filter: %s\n",
4332
- s.ToString().c_str());
4333
- exit(1);
4452
+ if (table_options->filter_policy == nullptr) {
4453
+ if (FLAGS_bloom_bits < 0) {
4454
+ table_options->filter_policy = BlockBasedTableOptions().filter_policy;
4455
+ } else if (FLAGS_bloom_bits == 0) {
4456
+ table_options->filter_policy.reset();
4457
+ } else if (FLAGS_use_block_based_filter) {
4458
+ // Use back-door way of enabling obsolete block-based Bloom
4459
+ Status s = FilterPolicy::CreateFromString(
4460
+ ConfigOptions(),
4461
+ "rocksdb.internal.DeprecatedBlockBasedBloomFilter:" +
4462
+ std::to_string(FLAGS_bloom_bits),
4463
+ &table_options->filter_policy);
4464
+ if (!s.ok()) {
4465
+ fprintf(stderr,
4466
+ "failure creating obsolete block-based filter: %s\n",
4467
+ s.ToString().c_str());
4468
+ exit(1);
4469
+ }
4470
+ } else {
4471
+ table_options->filter_policy.reset(
4472
+ FLAGS_use_ribbon_filter ? NewRibbonFilterPolicy(FLAGS_bloom_bits)
4473
+ : NewBloomFilterPolicy(FLAGS_bloom_bits));
4334
4474
  }
4335
- } else {
4336
- table_options->filter_policy.reset(
4337
- FLAGS_use_ribbon_filter ? NewRibbonFilterPolicy(FLAGS_bloom_bits)
4338
- : NewBloomFilterPolicy(FLAGS_bloom_bits));
4339
4475
  }
4340
4476
  }
4341
- if (FLAGS_row_cache_size) {
4342
- if (FLAGS_cache_numshardbits >= 1) {
4343
- options.row_cache =
4344
- NewLRUCache(FLAGS_row_cache_size, FLAGS_cache_numshardbits);
4345
- } else {
4346
- options.row_cache = NewLRUCache(FLAGS_row_cache_size);
4477
+
4478
+ if (options.row_cache == nullptr) {
4479
+ if (FLAGS_row_cache_size) {
4480
+ if (FLAGS_cache_numshardbits >= 1) {
4481
+ options.row_cache =
4482
+ NewLRUCache(FLAGS_row_cache_size, FLAGS_cache_numshardbits);
4483
+ } else {
4484
+ options.row_cache = NewLRUCache(FLAGS_row_cache_size);
4485
+ }
4347
4486
  }
4348
4487
  }
4488
+
4489
+ if (options.env == Env::Default()) {
4490
+ options.env = FLAGS_env;
4491
+ }
4349
4492
  if (FLAGS_enable_io_prio) {
4350
- FLAGS_env->LowerThreadPoolIOPriority(Env::LOW);
4351
- FLAGS_env->LowerThreadPoolIOPriority(Env::HIGH);
4493
+ options.env->LowerThreadPoolIOPriority(Env::LOW);
4494
+ options.env->LowerThreadPoolIOPriority(Env::HIGH);
4352
4495
  }
4353
4496
  if (FLAGS_enable_cpu_prio) {
4354
- FLAGS_env->LowerThreadPoolCPUPriority(Env::LOW);
4355
- FLAGS_env->LowerThreadPoolCPUPriority(Env::HIGH);
4497
+ options.env->LowerThreadPoolCPUPriority(Env::LOW);
4498
+ options.env->LowerThreadPoolCPUPriority(Env::HIGH);
4356
4499
  }
4357
- options.env = FLAGS_env;
4500
+
4358
4501
  if (FLAGS_sine_write_rate) {
4359
4502
  FLAGS_benchmark_write_rate_limit = static_cast<uint64_t>(SineRate(0));
4360
4503
  }
4361
4504
 
4362
- if (FLAGS_rate_limiter_bytes_per_sec > 0) {
4363
- options.rate_limiter.reset(NewGenericRateLimiter(
4364
- FLAGS_rate_limiter_bytes_per_sec, FLAGS_rate_limiter_refill_period_us,
4365
- 10 /* fairness */,
4366
- FLAGS_rate_limit_bg_reads ? RateLimiter::Mode::kReadsOnly
4367
- : RateLimiter::Mode::kWritesOnly,
4368
- FLAGS_rate_limiter_auto_tuned));
4505
+ if (options.rate_limiter == nullptr) {
4506
+ if (FLAGS_rate_limiter_bytes_per_sec > 0) {
4507
+ options.rate_limiter.reset(NewGenericRateLimiter(
4508
+ FLAGS_rate_limiter_bytes_per_sec,
4509
+ FLAGS_rate_limiter_refill_period_us, 10 /* fairness */,
4510
+ FLAGS_rate_limit_bg_reads ? RateLimiter::Mode::kReadsOnly
4511
+ : RateLimiter::Mode::kWritesOnly,
4512
+ FLAGS_rate_limiter_auto_tuned));
4513
+ }
4369
4514
  }
4370
4515
 
4371
4516
  options.listeners.emplace_back(listener_);
4372
4517
 
4373
- if (FLAGS_file_checksum) {
4374
- options.file_checksum_gen_factory.reset(
4375
- new FileChecksumGenCrc32cFactory());
4518
+ if (options.file_checksum_gen_factory == nullptr) {
4519
+ if (FLAGS_file_checksum) {
4520
+ options.file_checksum_gen_factory.reset(
4521
+ new FileChecksumGenCrc32cFactory());
4522
+ }
4376
4523
  }
4377
4524
 
4378
4525
  if (FLAGS_num_multi_db <= 1) {
@@ -4391,9 +4538,11 @@ class Benchmark {
4391
4538
  }
4392
4539
 
4393
4540
  // KeepFilter is a noop filter, this can be used to test compaction filter
4394
- if (FLAGS_use_keep_filter) {
4395
- options.compaction_filter = new KeepFilter();
4396
- fprintf(stdout, "A noop compaction filter is used\n");
4541
+ if (options.compaction_filter == nullptr) {
4542
+ if (FLAGS_use_keep_filter) {
4543
+ options.compaction_filter = new KeepFilter();
4544
+ fprintf(stdout, "A noop compaction filter is used\n");
4545
+ }
4397
4546
  }
4398
4547
 
4399
4548
  if (FLAGS_use_existing_keys) {
@@ -6366,6 +6515,7 @@ class Benchmark {
6366
6515
  }
6367
6516
  }
6368
6517
  }
6518
+ options.auto_prefix_mode = FLAGS_auto_prefix_mode;
6369
6519
 
6370
6520
  std::unique_ptr<const char[]> key_guard;
6371
6521
  Slice key = AllocateKey(&key_guard);
@@ -6395,6 +6545,14 @@ class Benchmark {
6395
6545
  &upper_bound);
6396
6546
  options.iterate_upper_bound = &upper_bound;
6397
6547
  }
6548
+ } else if (FLAGS_auto_prefix_mode && prefix_extractor_ &&
6549
+ !FLAGS_reverse_iterator) {
6550
+ // Set upper bound to next prefix
6551
+ auto mutable_upper_bound = const_cast<char*>(upper_bound.data());
6552
+ std::memcpy(mutable_upper_bound, key.data(), prefix_size_);
6553
+ mutable_upper_bound[prefix_size_ - 1]++;
6554
+ upper_bound = Slice(upper_bound.data(), prefix_size_);
6555
+ options.iterate_upper_bound = &upper_bound;
6398
6556
  }
6399
6557
 
6400
6558
  // Pick a Iterator to use
@@ -7900,14 +8058,27 @@ class Benchmark {
7900
8058
  flush_opt.wait = true;
7901
8059
 
7902
8060
  if (db_.db != nullptr) {
7903
- Status s = db_.db->Flush(flush_opt, db_.cfh);
8061
+ Status s;
8062
+ if (FLAGS_num_column_families > 1) {
8063
+ s = db_.db->Flush(flush_opt, db_.cfh);
8064
+ } else {
8065
+ s = db_.db->Flush(flush_opt, db_.db->DefaultColumnFamily());
8066
+ }
8067
+
7904
8068
  if (!s.ok()) {
7905
8069
  fprintf(stderr, "Flush failed: %s\n", s.ToString().c_str());
7906
8070
  exit(1);
7907
8071
  }
7908
8072
  } else {
7909
8073
  for (const auto& db_with_cfh : multi_dbs_) {
7910
- Status s = db_with_cfh.db->Flush(flush_opt, db_with_cfh.cfh);
8074
+ Status s;
8075
+ if (FLAGS_num_column_families > 1) {
8076
+ s = db_with_cfh.db->Flush(flush_opt, db_with_cfh.cfh);
8077
+ } else {
8078
+ s = db_with_cfh.db->Flush(flush_opt,
8079
+ db_with_cfh.db->DefaultColumnFamily());
8080
+ }
8081
+
7911
8082
  if (!s.ok()) {
7912
8083
  fprintf(stderr, "Flush failed: %s\n", s.ToString().c_str());
7913
8084
  exit(1);
@@ -7941,7 +8112,8 @@ class Benchmark {
7941
8112
  }
7942
8113
 
7943
8114
  std::unique_ptr<StatsHistoryIterator> shi;
7944
- Status s = db->GetStatsHistory(0, port::kMaxUint64, &shi);
8115
+ Status s =
8116
+ db->GetStatsHistory(0, std::numeric_limits<uint64_t>::max(), &shi);
7945
8117
  if (!s.ok()) {
7946
8118
  fprintf(stdout, "%s\n", s.ToString().c_str());
7947
8119
  return;
@@ -45,8 +45,8 @@ class SanityTest {
45
45
  return s;
46
46
  }
47
47
  for (int i = 0; i < 1000000; ++i) {
48
- std::string k = "key" + ToString(i);
49
- std::string v = "value" + ToString(i);
48
+ std::string k = "key" + std::to_string(i);
49
+ std::string v = "value" + std::to_string(i);
50
50
  s = db->Put(WriteOptions(), Slice(k), Slice(v));
51
51
  if (!s.ok()) {
52
52
  return s;
@@ -63,8 +63,8 @@ class SanityTest {
63
63
  return s;
64
64
  }
65
65
  for (int i = 0; i < 1000000; ++i) {
66
- std::string k = "key" + ToString(i);
67
- std::string v = "value" + ToString(i);
66
+ std::string k = "key" + std::to_string(i);
67
+ std::string v = "value" + std::to_string(i);
68
68
  std::string result;
69
69
  s = db->Get(ReadOptions(), Slice(k), &result);
70
70
  if (!s.ok()) {