@nxtedition/rocksdb 8.2.8 → 9.0.0

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 (359) hide show
  1. package/deps/rocksdb/rocksdb/CMakeLists.txt +7 -1
  2. package/deps/rocksdb/rocksdb/Makefile +22 -19
  3. package/deps/rocksdb/rocksdb/TARGETS +8 -0
  4. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +157 -61
  5. package/deps/rocksdb/rocksdb/cache/cache_test.cc +43 -92
  6. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +632 -455
  7. package/deps/rocksdb/rocksdb/cache/clock_cache.h +244 -149
  8. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +41 -13
  9. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +11 -1
  10. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +216 -17
  11. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +7 -5
  12. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +279 -199
  13. package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +2 -1
  14. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +159 -8
  15. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.h +28 -2
  16. package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +1 -1
  17. package/deps/rocksdb/rocksdb/cache/sharded_cache.h +8 -0
  18. package/deps/rocksdb/rocksdb/crash_test.mk +14 -0
  19. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +3 -1
  20. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +1 -1
  21. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +1 -1
  22. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +2 -2
  23. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +1 -1
  24. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +18 -21
  25. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +1 -2
  26. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +1 -1
  27. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +2 -3
  28. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +1 -1
  29. package/deps/rocksdb/rocksdb/db/builder.cc +32 -7
  30. package/deps/rocksdb/rocksdb/db/c.cc +169 -6
  31. package/deps/rocksdb/rocksdb/db/c_test.c +104 -6
  32. package/deps/rocksdb/rocksdb/db/column_family.cc +98 -47
  33. package/deps/rocksdb/rocksdb/db/column_family.h +25 -2
  34. package/deps/rocksdb/rocksdb/db/column_family_test.cc +213 -2
  35. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +4 -1
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +93 -23
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +33 -9
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +7 -6
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +17 -6
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +2 -2
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +107 -43
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +15 -4
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -0
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +4 -2
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +25 -17
  46. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +13 -4
  47. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +11 -11
  48. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +29 -4
  49. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +24 -31
  50. package/deps/rocksdb/rocksdb/db/compaction/file_pri.h +3 -1
  51. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +19 -19
  52. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +2 -1
  53. package/deps/rocksdb/rocksdb/db/convenience.cc +20 -3
  54. package/deps/rocksdb/rocksdb/db/convenience_impl.h +15 -0
  55. package/deps/rocksdb/rocksdb/db/corruption_test.cc +17 -0
  56. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +1 -0
  57. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +17 -3
  58. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +5 -0
  59. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +15 -15
  60. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +666 -44
  61. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +2 -29
  62. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +274 -1
  63. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +40 -19
  64. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +6 -5
  65. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +250 -116
  66. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +51 -23
  67. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +354 -96
  68. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +6 -3
  69. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +2 -1
  70. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +5 -0
  71. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +50 -21
  72. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +26 -13
  73. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +13 -5
  74. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +61 -21
  75. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +8 -87
  76. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +7 -1
  77. package/deps/rocksdb/rocksdb/db/db_iter.cc +2 -2
  78. package/deps/rocksdb/rocksdb/db/db_iter.h +1 -0
  79. package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +4 -11
  80. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +6 -6
  81. package/deps/rocksdb/rocksdb/db/db_options_test.cc +39 -29
  82. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +26 -36
  83. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +106 -0
  84. package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +12 -3
  85. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +1 -1
  86. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +1 -0
  87. package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +279 -166
  88. package/deps/rocksdb/rocksdb/db/db_test.cc +48 -21
  89. package/deps/rocksdb/rocksdb/db/db_test2.cc +81 -12
  90. package/deps/rocksdb/rocksdb/db/db_test_util.cc +14 -6
  91. package/deps/rocksdb/rocksdb/db/db_test_util.h +40 -0
  92. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +13 -1
  93. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +233 -0
  94. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +143 -0
  95. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +6 -6
  96. package/deps/rocksdb/rocksdb/db/db_write_test.cc +2 -2
  97. package/deps/rocksdb/rocksdb/db/dbformat.cc +36 -0
  98. package/deps/rocksdb/rocksdb/db/dbformat.h +169 -20
  99. package/deps/rocksdb/rocksdb/db/dbformat_test.cc +129 -0
  100. package/deps/rocksdb/rocksdb/db/error_handler.cc +16 -0
  101. package/deps/rocksdb/rocksdb/db/error_handler.h +6 -3
  102. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +4 -4
  103. package/deps/rocksdb/rocksdb/db/event_helpers.cc +4 -0
  104. package/deps/rocksdb/rocksdb/db/experimental.cc +2 -1
  105. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +4 -4
  106. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +17 -8
  107. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +86 -4
  108. package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +1 -1
  109. package/deps/rocksdb/rocksdb/db/file_indexer.cc +2 -4
  110. package/deps/rocksdb/rocksdb/db/flush_job.cc +101 -11
  111. package/deps/rocksdb/rocksdb/db/flush_job.h +24 -1
  112. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +88 -11
  113. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +2 -3
  114. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +159 -91
  115. package/deps/rocksdb/rocksdb/db/import_column_family_job.h +19 -10
  116. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +143 -0
  117. package/deps/rocksdb/rocksdb/db/internal_stats.cc +13 -1
  118. package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -0
  119. package/deps/rocksdb/rocksdb/db/listener_test.cc +2 -1
  120. package/deps/rocksdb/rocksdb/db/log_reader.h +3 -2
  121. package/deps/rocksdb/rocksdb/db/log_test.cc +17 -21
  122. package/deps/rocksdb/rocksdb/db/log_writer.cc +1 -1
  123. package/deps/rocksdb/rocksdb/db/log_writer.h +3 -2
  124. package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +4 -3
  125. package/deps/rocksdb/rocksdb/db/memtable.cc +52 -13
  126. package/deps/rocksdb/rocksdb/db/memtable.h +45 -1
  127. package/deps/rocksdb/rocksdb/db/memtable_list.cc +44 -10
  128. package/deps/rocksdb/rocksdb/db/memtable_list.h +32 -1
  129. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +90 -4
  130. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +2 -2
  131. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +1 -0
  132. package/deps/rocksdb/rocksdb/db/repair.cc +21 -4
  133. package/deps/rocksdb/rocksdb/db/repair_test.cc +143 -2
  134. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +5 -4
  135. package/deps/rocksdb/rocksdb/db/table_cache.cc +44 -35
  136. package/deps/rocksdb/rocksdb/db/table_cache.h +6 -6
  137. package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +2 -2
  138. package/deps/rocksdb/rocksdb/db/version_builder.cc +0 -1
  139. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +236 -204
  140. package/deps/rocksdb/rocksdb/db/version_edit.cc +66 -4
  141. package/deps/rocksdb/rocksdb/db/version_edit.h +48 -6
  142. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +80 -8
  143. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +12 -0
  144. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +86 -17
  145. package/deps/rocksdb/rocksdb/db/version_set.cc +136 -41
  146. package/deps/rocksdb/rocksdb/db/version_set.h +28 -7
  147. package/deps/rocksdb/rocksdb/db/version_set_test.cc +25 -15
  148. package/deps/rocksdb/rocksdb/db/write_batch.cc +11 -0
  149. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +3 -0
  150. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +16 -0
  151. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +22 -3
  152. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +2 -0
  153. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +42 -0
  154. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +32 -3
  155. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +7 -0
  156. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +247 -120
  157. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +9 -4
  158. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +13 -6
  159. package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.h +2 -0
  160. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +15 -27
  161. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +264 -69
  162. package/deps/rocksdb/rocksdb/env/env.cc +1 -2
  163. package/deps/rocksdb/rocksdb/env/env_encryption.cc +11 -165
  164. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +0 -17
  165. package/deps/rocksdb/rocksdb/env/env_posix.cc +6 -2
  166. package/deps/rocksdb/rocksdb/env/env_test.cc +86 -2
  167. package/deps/rocksdb/rocksdb/env/fs_posix.cc +6 -4
  168. package/deps/rocksdb/rocksdb/env/unique_id_gen.cc +78 -0
  169. package/deps/rocksdb/rocksdb/env/unique_id_gen.h +34 -0
  170. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +1 -0
  171. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +15 -4
  172. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +52 -43
  173. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +34 -18
  174. package/deps/rocksdb/rocksdb/file/file_util.cc +10 -5
  175. package/deps/rocksdb/rocksdb/file/file_util.h +13 -1
  176. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +724 -79
  177. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +64 -33
  178. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +3 -16
  179. package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +23 -12
  180. package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +3 -0
  181. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +2 -1
  182. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +153 -88
  183. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +70 -2
  184. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +50 -11
  185. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +3 -0
  186. package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +16 -2
  187. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +1 -1
  188. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +55 -8
  189. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +32 -4
  190. package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +9 -109
  191. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +90 -13
  192. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +3 -0
  193. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +85 -17
  194. package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +13 -1
  195. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +2 -1
  196. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +5 -1
  197. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +21 -2
  198. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +7 -1
  199. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +6 -0
  200. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +5 -0
  201. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +33 -2
  202. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +14 -0
  203. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +33 -2
  204. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +0 -3
  205. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  206. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +3 -0
  207. package/deps/rocksdb/rocksdb/memory/arena_test.cc +18 -11
  208. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +2 -1
  209. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +69 -34
  210. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +16 -1
  211. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +10 -0
  212. package/deps/rocksdb/rocksdb/options/cf_options.cc +19 -0
  213. package/deps/rocksdb/rocksdb/options/cf_options.h +10 -2
  214. package/deps/rocksdb/rocksdb/options/customizable_test.cc +2 -1
  215. package/deps/rocksdb/rocksdb/options/db_options.cc +7 -0
  216. package/deps/rocksdb/rocksdb/options/db_options.h +1 -0
  217. package/deps/rocksdb/rocksdb/options/options.cc +15 -1
  218. package/deps/rocksdb/rocksdb/options/options_helper.cc +6 -0
  219. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +11 -3
  220. package/deps/rocksdb/rocksdb/options/options_test.cc +8 -0
  221. package/deps/rocksdb/rocksdb/port/mmap.h +20 -0
  222. package/deps/rocksdb/rocksdb/port/stack_trace.cc +27 -12
  223. package/deps/rocksdb/rocksdb/port/win/env_win.h +1 -1
  224. package/deps/rocksdb/rocksdb/src.mk +3 -0
  225. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
  226. package/deps/rocksdb/rocksdb/table/block_based/block.cc +48 -22
  227. package/deps/rocksdb/rocksdb/table/block_based/block.h +60 -12
  228. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +115 -42
  229. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +6 -5
  230. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +60 -2
  231. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +2 -0
  232. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +62 -44
  233. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +36 -14
  234. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +38 -15
  235. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +219 -51
  236. package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +41 -8
  237. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +25 -1
  238. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +50 -21
  239. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +11 -4
  240. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +195 -55
  241. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +1 -1
  242. package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +31 -16
  243. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +97 -58
  244. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +1 -1
  245. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +6 -0
  246. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +27 -12
  247. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +3 -1
  248. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +114 -70
  249. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +1 -2
  250. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +9 -6
  251. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +15 -3
  252. package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +6 -3
  253. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +11 -11
  254. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +3 -0
  255. package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +1 -0
  256. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +6 -2
  257. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +1 -2
  258. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +2 -3
  259. package/deps/rocksdb/rocksdb/table/format.cc +175 -33
  260. package/deps/rocksdb/rocksdb/table/format.h +63 -10
  261. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +10 -2
  262. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +12 -4
  263. package/deps/rocksdb/rocksdb/table/meta_blocks.h +1 -0
  264. package/deps/rocksdb/rocksdb/table/mock_table.cc +8 -3
  265. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +10 -5
  266. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +10 -1
  267. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +1 -2
  268. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +3 -3
  269. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +12 -3
  270. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +26 -1
  271. package/deps/rocksdb/rocksdb/table/table_builder.h +6 -2
  272. package/deps/rocksdb/rocksdb/table/table_properties.cc +6 -0
  273. package/deps/rocksdb/rocksdb/table/table_test.cc +52 -22
  274. package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.h +19 -7
  275. package/deps/rocksdb/rocksdb/test_util/sync_point.h +3 -1
  276. package/deps/rocksdb/rocksdb/test_util/testutil.cc +29 -0
  277. package/deps/rocksdb/rocksdb/test_util/testutil.h +19 -0
  278. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +65 -26
  279. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +8 -5
  280. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -0
  281. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +1 -0
  282. package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +0 -1
  283. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +4 -0
  284. package/deps/rocksdb/rocksdb/unreleased_history/README.txt +73 -0
  285. package/deps/rocksdb/rocksdb/unreleased_history/add.sh +27 -0
  286. package/deps/rocksdb/rocksdb/unreleased_history/behavior_changes/.gitkeep +0 -0
  287. package/deps/rocksdb/rocksdb/unreleased_history/bug_fixes/.gitkeep +0 -0
  288. package/deps/rocksdb/rocksdb/unreleased_history/new_features/.gitkeep +0 -0
  289. package/deps/rocksdb/rocksdb/unreleased_history/performance_improvements/.gitkeep +0 -0
  290. package/deps/rocksdb/rocksdb/unreleased_history/public_api_changes/.gitkeep +0 -0
  291. package/deps/rocksdb/rocksdb/unreleased_history/release.sh +104 -0
  292. package/deps/rocksdb/rocksdb/util/async_file_reader.cc +5 -0
  293. package/deps/rocksdb/rocksdb/util/bloom_impl.h +3 -3
  294. package/deps/rocksdb/rocksdb/util/cast_util.h +14 -0
  295. package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +2 -0
  296. package/deps/rocksdb/rocksdb/util/comparator.cc +29 -7
  297. package/deps/rocksdb/rocksdb/util/compression.cc +4 -4
  298. package/deps/rocksdb/rocksdb/util/compression.h +110 -32
  299. package/deps/rocksdb/rocksdb/util/core_local.h +2 -1
  300. package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +4 -4
  301. package/deps/rocksdb/rocksdb/util/filelock_test.cc +3 -0
  302. package/deps/rocksdb/rocksdb/util/hash.h +7 -3
  303. package/deps/rocksdb/rocksdb/util/hash_test.cc +44 -0
  304. package/deps/rocksdb/rocksdb/util/math.h +58 -6
  305. package/deps/rocksdb/rocksdb/util/math128.h +29 -7
  306. package/deps/rocksdb/rocksdb/util/mutexlock.h +35 -27
  307. package/deps/rocksdb/rocksdb/util/single_thread_executor.h +1 -0
  308. package/deps/rocksdb/rocksdb/util/stop_watch.h +1 -1
  309. package/deps/rocksdb/rocksdb/util/thread_operation.h +8 -1
  310. package/deps/rocksdb/rocksdb/util/udt_util.cc +343 -0
  311. package/deps/rocksdb/rocksdb/util/udt_util.h +173 -1
  312. package/deps/rocksdb/rocksdb/util/udt_util_test.cc +447 -0
  313. package/deps/rocksdb/rocksdb/util/write_batch_util.cc +25 -0
  314. package/deps/rocksdb/rocksdb/util/write_batch_util.h +80 -0
  315. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +4 -4
  316. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +69 -25
  317. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +7 -6
  318. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +1 -1
  319. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +2 -3
  320. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +6 -11
  321. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +1 -2
  322. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +4 -5
  323. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +1 -1
  324. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +2 -2
  325. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +2 -1
  326. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +3 -3
  327. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +1 -2
  328. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +2 -3
  329. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +2 -2
  330. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +1 -1
  331. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +23 -8
  332. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +9 -6
  333. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +37 -12
  334. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +231 -33
  335. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +0 -1
  336. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +76 -20
  337. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +18 -9
  338. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +40 -23
  339. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +13 -12
  340. package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +7 -0
  341. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +1 -1
  342. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +41 -11
  343. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +6 -3
  344. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +71 -24
  345. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +19 -4
  346. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +60 -107
  347. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +39 -11
  348. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +6 -3
  349. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +14 -8
  350. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.h +1 -1
  351. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +10 -5
  352. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +1 -1
  353. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +1 -1
  354. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +2 -1
  355. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +6 -6
  356. package/deps/rocksdb/rocksdb.gyp +2 -0
  357. package/package.json +1 -1
  358. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  359. package/prebuilds/linux-x64/node.napi.node +0 -0
@@ -15,6 +15,7 @@
15
15
 
16
16
  #include "db/blob/blob_file_builder.h"
17
17
  #include "db/compaction/compaction_iterator.h"
18
+ #include "db/dbformat.h"
18
19
  #include "db/event_helpers.h"
19
20
  #include "db/internal_stats.h"
20
21
  #include "db/merge_helper.h"
@@ -202,24 +203,42 @@ Status BuildTable(
202
203
  blob_file_builder.get(), ioptions.allow_data_in_errors,
203
204
  ioptions.enforce_single_del_contracts,
204
205
  /*manual_compaction_canceled=*/kManualCompactionCanceledFalse,
206
+ true /* must_count_input_entries */,
205
207
  /*compaction=*/nullptr, compaction_filter.get(),
206
208
  /*shutting_down=*/nullptr, db_options.info_log, full_history_ts_low);
207
209
 
210
+ const size_t ts_sz = ucmp->timestamp_size();
211
+ const bool strip_timestamp =
212
+ ts_sz > 0 && !ioptions.persist_user_defined_timestamps;
213
+
214
+ std::string key_after_flush_buf;
208
215
  c_iter.SeekToFirst();
209
216
  for (; c_iter.Valid(); c_iter.Next()) {
210
217
  const Slice& key = c_iter.key();
211
218
  const Slice& value = c_iter.value();
212
219
  const ParsedInternalKey& ikey = c_iter.ikey();
213
- // Generate a rolling 64-bit hash of the key and values
214
- // Note :
215
- // Here "key" integrates 'sequence_number'+'kType'+'user key'.
216
- s = output_validator.Add(key, value);
220
+ Slice key_after_flush = key;
221
+ // If user defined timestamps will be stripped from user key after flush,
222
+ // the in memory version of the key act logically the same as one with a
223
+ // minimum timestamp. We update the timestamp here so file boundary and
224
+ // output validator, block builder all see the effect of the stripping.
225
+ if (strip_timestamp) {
226
+ key_after_flush_buf.clear();
227
+ ReplaceInternalKeyWithMinTimestamp(&key_after_flush_buf, key, ts_sz);
228
+ key_after_flush = key_after_flush_buf;
229
+ }
230
+
231
+ // Generate a rolling 64-bit hash of the key and values
232
+ // Note :
233
+ // Here "key" integrates 'sequence_number'+'kType'+'user key'.
234
+ s = output_validator.Add(key_after_flush, value);
217
235
  if (!s.ok()) {
218
236
  break;
219
237
  }
220
- builder->Add(key, value);
238
+ builder->Add(key_after_flush, value);
221
239
 
222
- s = meta->UpdateBoundaries(key, value, ikey.sequence, ikey.type);
240
+ s = meta->UpdateBoundaries(key_after_flush, value, ikey.sequence,
241
+ ikey.type);
223
242
  if (!s.ok()) {
224
243
  break;
225
244
  }
@@ -244,6 +263,7 @@ Status BuildTable(
244
263
  range_del_it->Next()) {
245
264
  auto tombstone = range_del_it->Tombstone();
246
265
  auto kv = tombstone.Serialize();
266
+ // TODO(yuzhangyu): handle range deletion for UDT in memtables only.
247
267
  builder->Add(kv.first.Encode(), kv.second);
248
268
  InternalKey tombstone_end = tombstone.SerializeEndKey();
249
269
  meta->UpdateBoundariesForRange(kv.first, tombstone_end, tombstone.seq_,
@@ -267,8 +287,9 @@ Status BuildTable(
267
287
  TEST_SYNC_POINT("BuildTable:BeforeFinishBuildTable");
268
288
  const bool empty = builder->IsEmpty();
269
289
  if (num_input_entries != nullptr) {
290
+ assert(c_iter.HasNumInputEntryScanned());
270
291
  *num_input_entries =
271
- c_iter.num_input_entry_scanned() + num_unfragmented_tombstones;
292
+ c_iter.NumInputEntryScanned() + num_unfragmented_tombstones;
272
293
  }
273
294
  if (!s.ok() || empty) {
274
295
  builder->Abandon();
@@ -293,6 +314,8 @@ Status BuildTable(
293
314
  meta->fd.file_size = file_size;
294
315
  meta->tail_size = builder->GetTailSize();
295
316
  meta->marked_for_compaction = builder->NeedCompact();
317
+ meta->user_defined_timestamps_persisted =
318
+ ioptions.persist_user_defined_timestamps;
296
319
  assert(meta->fd.GetFileSize() > 0);
297
320
  tp = builder
298
321
  ->GetTableProperties(); // refresh now that builder is finished
@@ -352,6 +375,8 @@ Status BuildTable(
352
375
  s = *io_status;
353
376
  }
354
377
 
378
+ // TODO(yuzhangyu): handle the key copy in the blob when ts should be
379
+ // stripped.
355
380
  if (blob_file_builder) {
356
381
  if (s.ok()) {
357
382
  s = blob_file_builder->Finish();
@@ -77,6 +77,7 @@ using ROCKSDB_NAMESPACE::EnvOptions;
77
77
  using ROCKSDB_NAMESPACE::FileLock;
78
78
  using ROCKSDB_NAMESPACE::FilterPolicy;
79
79
  using ROCKSDB_NAMESPACE::FlushOptions;
80
+ using ROCKSDB_NAMESPACE::HistogramData;
80
81
  using ROCKSDB_NAMESPACE::HyperClockCacheOptions;
81
82
  using ROCKSDB_NAMESPACE::InfoLogLevel;
82
83
  using ROCKSDB_NAMESPACE::IngestExternalFileOptions;
@@ -279,6 +280,11 @@ struct rocksdb_compactionfiltercontext_t {
279
280
  CompactionFilter::Context rep;
280
281
  };
281
282
 
283
+ struct rocksdb_statistics_histogram_data_t {
284
+ rocksdb_statistics_histogram_data_t() : rep() {}
285
+ HistogramData rep;
286
+ };
287
+
282
288
  struct rocksdb_compactionfilter_t : public CompactionFilter {
283
289
  void* state_;
284
290
  void (*destructor_)(void*);
@@ -1057,6 +1063,36 @@ rocksdb_column_family_handle_t* rocksdb_create_column_family(
1057
1063
  return handle;
1058
1064
  }
1059
1065
 
1066
+ rocksdb_column_family_handle_t** rocksdb_create_column_families(
1067
+ rocksdb_t* db, const rocksdb_options_t* column_family_options,
1068
+ int num_column_families, const char* const* column_family_names,
1069
+ size_t* lencfs, char** errptr) {
1070
+ std::vector<ColumnFamilyHandle*> handles;
1071
+ std::vector<std::string> names;
1072
+ for (int i = 0; i != num_column_families; ++i) {
1073
+ names.push_back(std::string(column_family_names[i]));
1074
+ }
1075
+ SaveError(errptr, db->rep->CreateColumnFamilies(
1076
+ ColumnFamilyOptions(column_family_options->rep), names,
1077
+ &handles));
1078
+
1079
+ *lencfs = handles.size();
1080
+ rocksdb_column_family_handle_t** c_handles =
1081
+ static_cast<rocksdb_column_family_handle_t**>(
1082
+ malloc(sizeof(rocksdb_column_family_handle_t*) * handles.size()));
1083
+ for (size_t i = 0; i != handles.size(); ++i) {
1084
+ c_handles[i] = new rocksdb_column_family_handle_t;
1085
+ c_handles[i]->rep = handles[i];
1086
+ }
1087
+
1088
+ return c_handles;
1089
+ }
1090
+
1091
+ void rocksdb_create_column_families_destroy(
1092
+ rocksdb_column_family_handle_t** list) {
1093
+ free(list);
1094
+ }
1095
+
1060
1096
  rocksdb_column_family_handle_t* rocksdb_create_column_family_with_ttl(
1061
1097
  rocksdb_t* db, const rocksdb_options_t* column_family_options,
1062
1098
  const char* column_family_name, int ttl, char** errptr) {
@@ -2993,6 +3029,29 @@ void rocksdb_options_enable_statistics(rocksdb_options_t* opt) {
2993
3029
  opt->rep.statistics = ROCKSDB_NAMESPACE::CreateDBStatistics();
2994
3030
  }
2995
3031
 
3032
+ void rocksdb_options_set_statistics_level(rocksdb_options_t* opt, int level) {
3033
+ if (!opt->rep.statistics) {
3034
+ return;
3035
+ }
3036
+
3037
+ if (level < rocksdb_statistics_level_disable_all) {
3038
+ level = rocksdb_statistics_level_disable_all;
3039
+ }
3040
+ if (level > rocksdb_statistics_level_all) {
3041
+ level = rocksdb_statistics_level_all;
3042
+ }
3043
+ opt->rep.statistics->set_stats_level(
3044
+ static_cast<ROCKSDB_NAMESPACE::StatsLevel>(level));
3045
+ }
3046
+
3047
+ int rocksdb_options_get_statistics_level(rocksdb_options_t* opt) {
3048
+ if (!opt->rep.statistics) {
3049
+ return ROCKSDB_NAMESPACE::StatsLevel::kDisableAll;
3050
+ }
3051
+
3052
+ return static_cast<int>(opt->rep.statistics->get_stats_level());
3053
+ }
3054
+
2996
3055
  void rocksdb_options_set_skip_stats_update_on_db_open(rocksdb_options_t* opt,
2997
3056
  unsigned char val) {
2998
3057
  opt->rep.skip_stats_update_on_db_open = val;
@@ -3740,16 +3799,21 @@ void rocksdb_options_set_hash_link_list_rep(rocksdb_options_t* opt,
3740
3799
  ROCKSDB_NAMESPACE::NewHashLinkListRepFactory(bucket_count));
3741
3800
  }
3742
3801
 
3743
- void rocksdb_options_set_plain_table_factory(rocksdb_options_t* opt,
3744
- uint32_t user_key_len,
3745
- int bloom_bits_per_key,
3746
- double hash_table_ratio,
3747
- size_t index_sparseness) {
3802
+ void rocksdb_options_set_plain_table_factory(
3803
+ rocksdb_options_t* opt, uint32_t user_key_len, int bloom_bits_per_key,
3804
+ double hash_table_ratio, size_t index_sparseness, size_t huge_page_tlb_size,
3805
+ char encoding_type, unsigned char full_scan_mode,
3806
+ unsigned char store_index_in_file) {
3748
3807
  ROCKSDB_NAMESPACE::PlainTableOptions options;
3749
3808
  options.user_key_len = user_key_len;
3750
3809
  options.bloom_bits_per_key = bloom_bits_per_key;
3751
3810
  options.hash_table_ratio = hash_table_ratio;
3752
3811
  options.index_sparseness = index_sparseness;
3812
+ options.huge_page_tlb_size = huge_page_tlb_size;
3813
+ options.encoding_type =
3814
+ static_cast<ROCKSDB_NAMESPACE::EncodingType>(encoding_type);
3815
+ options.full_scan_mode = full_scan_mode;
3816
+ options.store_index_in_file = store_index_in_file;
3753
3817
 
3754
3818
  ROCKSDB_NAMESPACE::TableFactory* factory =
3755
3819
  ROCKSDB_NAMESPACE::NewPlainTableFactory(options);
@@ -3827,6 +3891,26 @@ char* rocksdb_options_statistics_get_string(rocksdb_options_t* opt) {
3827
3891
  return nullptr;
3828
3892
  }
3829
3893
 
3894
+ uint64_t rocksdb_options_statistics_get_ticker_count(rocksdb_options_t* opt,
3895
+ uint32_t ticker_type) {
3896
+ ROCKSDB_NAMESPACE::Statistics* statistics = opt->rep.statistics.get();
3897
+ if (statistics) {
3898
+ return statistics->getTickerCount(ticker_type);
3899
+ }
3900
+ return 0;
3901
+ }
3902
+
3903
+ void rocksdb_options_statistics_get_histogram_data(
3904
+ rocksdb_options_t* opt, uint32_t type,
3905
+ rocksdb_statistics_histogram_data_t* const data) {
3906
+ ROCKSDB_NAMESPACE::Statistics* statistics = opt->rep.statistics.get();
3907
+ if (statistics) {
3908
+ statistics->histogramData(type, &data->rep);
3909
+ } else {
3910
+ *data = rocksdb_statistics_histogram_data_t{};
3911
+ }
3912
+ }
3913
+
3830
3914
  void rocksdb_options_set_ratelimiter(rocksdb_options_t* opt,
3831
3915
  rocksdb_ratelimiter_t* limiter) {
3832
3916
  if (limiter) {
@@ -3888,6 +3972,15 @@ void rocksdb_options_add_compact_on_deletion_collector_factory(
3888
3972
  opt->rep.table_properties_collector_factories.emplace_back(compact_on_del);
3889
3973
  }
3890
3974
 
3975
+ void rocksdb_options_add_compact_on_deletion_collector_factory_del_ratio(
3976
+ rocksdb_options_t* opt, size_t window_size, size_t num_dels_trigger,
3977
+ double deletion_ratio) {
3978
+ std::shared_ptr<ROCKSDB_NAMESPACE::TablePropertiesCollectorFactory>
3979
+ compact_on_del = NewCompactOnDeletionCollectorFactory(
3980
+ window_size, num_dels_trigger, deletion_ratio);
3981
+ opt->rep.table_properties_collector_factories.emplace_back(compact_on_del);
3982
+ }
3983
+
3891
3984
  void rocksdb_set_perf_level(int v) {
3892
3985
  PerfLevel level = static_cast<PerfLevel>(v);
3893
3986
  SetPerfLevel(level);
@@ -5150,7 +5243,8 @@ rocksdb_fifo_compaction_options_t* rocksdb_fifo_compaction_options_create() {
5150
5243
  }
5151
5244
 
5152
5245
  void rocksdb_fifo_compaction_options_set_allow_compaction(
5153
- rocksdb_fifo_compaction_options_t* fifo_opts, unsigned char allow_compaction) {
5246
+ rocksdb_fifo_compaction_options_t* fifo_opts,
5247
+ unsigned char allow_compaction) {
5154
5248
  fifo_opts->rep.allow_compaction = allow_compaction;
5155
5249
  }
5156
5250
 
@@ -5579,6 +5673,20 @@ int rocksdb_transactiondb_property_int(rocksdb_transactiondb_t* db,
5579
5673
  }
5580
5674
  }
5581
5675
 
5676
+ rocksdb_t* rocksdb_transactiondb_get_base_db(rocksdb_transactiondb_t* txn_db) {
5677
+ DB* base_db = txn_db->rep->GetBaseDB();
5678
+
5679
+ if (base_db != nullptr) {
5680
+ rocksdb_t* result = new rocksdb_t;
5681
+ result->rep = base_db;
5682
+ return result;
5683
+ }
5684
+
5685
+ return nullptr;
5686
+ }
5687
+
5688
+ void rocksdb_transactiondb_close_base_db(rocksdb_t* base_db) { delete base_db; }
5689
+
5582
5690
  rocksdb_transaction_t* rocksdb_transaction_begin(
5583
5691
  rocksdb_transactiondb_t* txn_db,
5584
5692
  const rocksdb_writeoptions_t* write_options,
@@ -6556,4 +6664,59 @@ void rocksdb_enable_manual_compaction(rocksdb_t* db) {
6556
6664
  db->rep->EnableManualCompaction();
6557
6665
  }
6558
6666
 
6667
+ rocksdb_statistics_histogram_data_t*
6668
+ rocksdb_statistics_histogram_data_create() {
6669
+ return new rocksdb_statistics_histogram_data_t{};
6670
+ }
6671
+
6672
+ void rocksdb_statistics_histogram_data_destroy(
6673
+ rocksdb_statistics_histogram_data_t* data) {
6674
+ delete data;
6675
+ }
6676
+
6677
+ double rocksdb_statistics_histogram_data_get_median(
6678
+ rocksdb_statistics_histogram_data_t* data) {
6679
+ return data->rep.median;
6680
+ }
6681
+
6682
+ double rocksdb_statistics_histogram_data_get_p95(
6683
+ rocksdb_statistics_histogram_data_t* data) {
6684
+ return data->rep.percentile95;
6685
+ }
6686
+
6687
+ double rocksdb_statistics_histogram_data_get_p99(
6688
+ rocksdb_statistics_histogram_data_t* data) {
6689
+ return data->rep.percentile99;
6690
+ }
6691
+
6692
+ double rocksdb_statistics_histogram_data_get_average(
6693
+ rocksdb_statistics_histogram_data_t* data) {
6694
+ return data->rep.average;
6695
+ }
6696
+
6697
+ double rocksdb_statistics_histogram_data_get_std_dev(
6698
+ rocksdb_statistics_histogram_data_t* data) {
6699
+ return data->rep.standard_deviation;
6700
+ }
6701
+
6702
+ double rocksdb_statistics_histogram_data_get_max(
6703
+ rocksdb_statistics_histogram_data_t* data) {
6704
+ return data->rep.max;
6705
+ }
6706
+
6707
+ uint64_t rocksdb_statistics_histogram_data_get_count(
6708
+ rocksdb_statistics_histogram_data_t* data) {
6709
+ return data->rep.count;
6710
+ }
6711
+
6712
+ uint64_t rocksdb_statistics_histogram_data_get_sum(
6713
+ rocksdb_statistics_histogram_data_t* data) {
6714
+ return data->rep.sum;
6715
+ }
6716
+
6717
+ double rocksdb_statistics_histogram_data_get_min(
6718
+ rocksdb_statistics_histogram_data_t* data) {
6719
+ return data->rep.min;
6720
+ }
6721
+
6559
6722
  } // end extern "C"
@@ -3,15 +3,14 @@
3
3
  found in the LICENSE file. See the AUTHORS file for names of contributors. */
4
4
  // Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
5
5
 
6
- #include <stdio.h>
6
+ #include "rocksdb/c.h"
7
7
 
8
8
  #include <assert.h>
9
9
  #include <stddef.h>
10
+ #include <stdio.h>
10
11
  #include <stdlib.h>
11
12
  #include <string.h>
12
13
  #include <sys/types.h>
13
-
14
- #include "rocksdb/c.h"
15
14
  #ifndef OS_WIN
16
15
  #include <unistd.h>
17
16
  #endif
@@ -721,6 +720,8 @@ int main(int argc, char** argv) {
721
720
 
722
721
  rocksdb_options_add_compact_on_deletion_collector_factory(options, 10000,
723
722
  10001);
723
+ rocksdb_options_add_compact_on_deletion_collector_factory_del_ratio(
724
+ options, 10000, 10001, 0.0);
724
725
 
725
726
  StartPhase("destroy");
726
727
  rocksdb_destroy_db(options, dbname, &err);
@@ -1672,7 +1673,8 @@ int main(int argc, char** argv) {
1672
1673
  rocksdb_options_set_prefix_extractor(
1673
1674
  options, rocksdb_slicetransform_create_fixed_prefix(3));
1674
1675
  rocksdb_options_set_hash_skip_list_rep(options, 5000, 4, 4);
1675
- rocksdb_options_set_plain_table_factory(options, 4, 10, 0.75, 16);
1676
+ rocksdb_options_set_plain_table_factory(options, 4, 10, 0.75, 16, 0, 0, 0,
1677
+ 0);
1676
1678
  rocksdb_options_set_allow_concurrent_memtable_write(options, 0);
1677
1679
 
1678
1680
  db = rocksdb_open(options, dbname, &err);
@@ -2058,6 +2060,15 @@ int main(int argc, char** argv) {
2058
2060
  CheckCondition(29.0 ==
2059
2061
  rocksdb_options_get_experimental_mempurge_threshold(o));
2060
2062
 
2063
+ CheckCondition(rocksdb_statistics_level_disable_all ==
2064
+ rocksdb_options_get_statistics_level(o));
2065
+ rocksdb_options_enable_statistics(o);
2066
+ CheckCondition(rocksdb_statistics_level_disable_all !=
2067
+ rocksdb_options_get_statistics_level(o));
2068
+ rocksdb_options_set_statistics_level(o, rocksdb_statistics_level_all);
2069
+ CheckCondition(rocksdb_statistics_level_all ==
2070
+ rocksdb_options_get_statistics_level(o));
2071
+
2061
2072
  /* Blob Options */
2062
2073
  rocksdb_options_set_enable_blob_files(o, 1);
2063
2074
  CheckCondition(1 == rocksdb_options_get_enable_blob_files(o));
@@ -3119,6 +3130,17 @@ int main(int argc, char** argv) {
3119
3130
  CheckTxnDBGetCF(txn_db, roptions, cfh, "cf_foo", NULL);
3120
3131
  CheckTxnDBPinGetCF(txn_db, roptions, cfh, "cf_foo", NULL);
3121
3132
 
3133
+ // memory usage
3134
+ rocksdb_t* base_db = rocksdb_transactiondb_get_base_db(txn_db);
3135
+ rocksdb_memory_consumers_t* consumers = rocksdb_memory_consumers_create();
3136
+ rocksdb_memory_consumers_add_db(consumers, base_db);
3137
+ rocksdb_memory_usage_t* usage =
3138
+ rocksdb_approximate_memory_usage_create(consumers, &err);
3139
+ CheckNoError(err);
3140
+ rocksdb_approximate_memory_usage_destroy(usage);
3141
+ rocksdb_memory_consumers_destroy(consumers);
3142
+ rocksdb_transactiondb_close_base_db(base_db);
3143
+
3122
3144
  // flush
3123
3145
  rocksdb_flushoptions_t* flush_options = rocksdb_flushoptions_create();
3124
3146
  rocksdb_flushoptions_set_wait(flush_options, 1);
@@ -3374,8 +3396,19 @@ int main(int argc, char** argv) {
3374
3396
  rocksdb_put(db, woptions, "key", 3, "value", 5, &err);
3375
3397
  CheckNoError(err);
3376
3398
  rocksdb_column_family_handle_t *cfh1, *cfh2;
3377
- cfh1 = rocksdb_create_column_family(db, db_options, "txn_db_cf1", &err);
3378
- cfh2 = rocksdb_create_column_family(db, db_options, "txn_db_cf2", &err);
3399
+ char** list_const_cf_names = (char**)malloc(2 * sizeof(char*));
3400
+ list_const_cf_names[0] = "txn_db_cf1";
3401
+ list_const_cf_names[1] = "txn_db_cf2";
3402
+ size_t cflen;
3403
+ rocksdb_column_family_handle_t** list_cfh = rocksdb_create_column_families(
3404
+ db, db_options, 2, (const char* const*)list_const_cf_names, &cflen,
3405
+ &err);
3406
+ free(list_const_cf_names);
3407
+ CheckNoError(err);
3408
+ assert(cflen == 2);
3409
+ cfh1 = list_cfh[0];
3410
+ cfh2 = list_cfh[1];
3411
+ rocksdb_create_column_families_destroy(list_cfh);
3379
3412
  txn = rocksdb_optimistictransaction_begin(otxn_db, woptions, otxn_options,
3380
3413
  NULL);
3381
3414
  rocksdb_transaction_put_cf(txn, cfh1, "key_cf1", 7, "val_cf1", 7, &err);
@@ -3589,6 +3622,71 @@ int main(int argc, char** argv) {
3589
3622
  rocksdb_readoptions_destroy(ropts);
3590
3623
  }
3591
3624
 
3625
+ StartPhase("statistics");
3626
+ {
3627
+ const uint32_t BYTES_WRITTEN_TICKER = 40;
3628
+ const uint32_t DB_WRITE_HIST = 1;
3629
+
3630
+ rocksdb_statistics_histogram_data_t* hist =
3631
+ rocksdb_statistics_histogram_data_create();
3632
+ {
3633
+ // zero by default
3634
+ CheckCondition(0.0 == rocksdb_statistics_histogram_data_get_median(hist));
3635
+ CheckCondition(0.0 == rocksdb_statistics_histogram_data_get_p95(hist));
3636
+ CheckCondition(0.0 == rocksdb_statistics_histogram_data_get_p99(hist));
3637
+ CheckCondition(0.0 ==
3638
+ rocksdb_statistics_histogram_data_get_average(hist));
3639
+ CheckCondition(0.0 ==
3640
+ rocksdb_statistics_histogram_data_get_std_dev(hist));
3641
+ CheckCondition(0.0 == rocksdb_statistics_histogram_data_get_max(hist));
3642
+ CheckCondition(0 == rocksdb_statistics_histogram_data_get_count(hist));
3643
+ CheckCondition(0 == rocksdb_statistics_histogram_data_get_sum(hist));
3644
+ CheckCondition(0.0 == rocksdb_statistics_histogram_data_get_min(hist));
3645
+ }
3646
+
3647
+ rocksdb_close(db);
3648
+ rocksdb_destroy_db(options, dbname, &err);
3649
+ CheckNoError(err);
3650
+
3651
+ rocksdb_options_enable_statistics(options);
3652
+ rocksdb_options_set_statistics_level(options, rocksdb_statistics_level_all);
3653
+
3654
+ db = rocksdb_open(options, dbname, &err);
3655
+ CheckNoError(err);
3656
+
3657
+ CheckCondition(0 == rocksdb_options_statistics_get_ticker_count(
3658
+ options, BYTES_WRITTEN_TICKER));
3659
+ rocksdb_options_statistics_get_histogram_data(options, DB_WRITE_HIST, hist);
3660
+ CheckCondition(0.0 == rocksdb_statistics_histogram_data_get_median(hist));
3661
+ CheckCondition(0.0 == rocksdb_statistics_histogram_data_get_p95(hist));
3662
+ CheckCondition(0.0 == rocksdb_statistics_histogram_data_get_p99(hist));
3663
+ CheckCondition(0.0 == rocksdb_statistics_histogram_data_get_average(hist));
3664
+ CheckCondition(0.0 == rocksdb_statistics_histogram_data_get_std_dev(hist));
3665
+ CheckCondition(0.0 == rocksdb_statistics_histogram_data_get_max(hist));
3666
+ CheckCondition(0 == rocksdb_statistics_histogram_data_get_count(hist));
3667
+ CheckCondition(0 == rocksdb_statistics_histogram_data_get_sum(hist));
3668
+
3669
+ int i;
3670
+ for (i = 0; i < 10; ++i) {
3671
+ char key = '0' + (char)i;
3672
+ rocksdb_put(db, woptions, &key, 1, "", 1, &err);
3673
+ CheckNoError(err);
3674
+ }
3675
+ CheckCondition(0 != rocksdb_options_statistics_get_ticker_count(
3676
+ options, BYTES_WRITTEN_TICKER));
3677
+ rocksdb_options_statistics_get_histogram_data(options, DB_WRITE_HIST, hist);
3678
+ CheckCondition(0.0 != rocksdb_statistics_histogram_data_get_median(hist));
3679
+ CheckCondition(0.0 != rocksdb_statistics_histogram_data_get_p95(hist));
3680
+ CheckCondition(0.0 != rocksdb_statistics_histogram_data_get_p99(hist));
3681
+ CheckCondition(0.0 != rocksdb_statistics_histogram_data_get_average(hist));
3682
+ CheckCondition(0.0 != rocksdb_statistics_histogram_data_get_std_dev(hist));
3683
+ CheckCondition(0.0 != rocksdb_statistics_histogram_data_get_max(hist));
3684
+ CheckCondition(0 != rocksdb_statistics_histogram_data_get_count(hist));
3685
+ CheckCondition(0 != rocksdb_statistics_histogram_data_get_sum(hist));
3686
+
3687
+ rocksdb_statistics_histogram_data_destroy(hist);
3688
+ }
3689
+
3592
3690
  StartPhase("cancel_all_background_work");
3593
3691
  rocksdb_cancel_all_background_work(db, 1);
3594
3692