@nxtedition/rocksdb 13.5.8 → 13.5.9

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 (508) hide show
  1. package/binding.cc +209 -2
  2. package/deps/rocksdb/rocksdb/BUCK +12 -0
  3. package/deps/rocksdb/rocksdb/CMakeLists.txt +7 -0
  4. package/deps/rocksdb/rocksdb/Makefile +28 -23
  5. package/deps/rocksdb/rocksdb/cache/cache.cc +0 -1
  6. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +1 -2
  7. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +43 -39
  8. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +2 -0
  9. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +0 -1
  10. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +2 -3
  11. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +2 -2
  12. package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +1 -3
  13. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +11 -1
  14. package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache_test.cc +13 -5
  15. package/deps/rocksdb/rocksdb/crash_test.mk +61 -15
  16. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +136 -45
  17. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +34 -16
  18. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +10 -7
  19. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +1 -2
  20. package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.h +1 -0
  21. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +12 -9
  22. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +3 -4
  23. package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +2 -2
  24. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +3 -4
  25. package/deps/rocksdb/rocksdb/db/builder.cc +22 -8
  26. package/deps/rocksdb/rocksdb/db/builder.h +5 -4
  27. package/deps/rocksdb/rocksdb/db/c.cc +556 -15
  28. package/deps/rocksdb/rocksdb/db/c_test.c +133 -12
  29. package/deps/rocksdb/rocksdb/db/column_family.cc +114 -50
  30. package/deps/rocksdb/rocksdb/db/column_family.h +53 -36
  31. package/deps/rocksdb/rocksdb/db/column_family_test.cc +6 -6
  32. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +0 -1
  33. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +95 -70
  34. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +71 -51
  35. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +7 -86
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +26 -68
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +0 -122
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +453 -258
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +117 -92
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +0 -1
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +38 -38
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +24 -17
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +34 -45
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +32 -31
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +12 -3
  46. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +1 -1
  47. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +2 -1
  48. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +10 -10
  49. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +2 -1
  50. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +82 -34
  51. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +267 -179
  52. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +4 -1
  53. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +273 -89
  54. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +300 -14
  55. package/deps/rocksdb/rocksdb/db/compaction/compaction_state.cc +4 -4
  56. package/deps/rocksdb/rocksdb/db/compaction/compaction_state.h +2 -2
  57. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +28 -23
  58. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +69 -51
  59. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +522 -245
  60. package/deps/rocksdb/rocksdb/db/convenience.cc +15 -4
  61. package/deps/rocksdb/rocksdb/db/corruption_test.cc +1 -3
  62. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +0 -2
  63. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +196 -17
  64. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +74 -62
  65. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +48 -0
  66. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +682 -250
  67. package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +0 -1
  68. package/deps/rocksdb/rocksdb/db/db_encryption_test.cc +3 -4
  69. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +11 -16
  70. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +57 -0
  71. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +2 -2
  72. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +1 -1
  73. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +540 -490
  74. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +347 -188
  75. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +584 -217
  76. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +13 -9
  77. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +5 -7
  78. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +40 -36
  79. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +1 -3
  80. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +751 -372
  81. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +35 -32
  82. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +24 -2
  83. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +125 -63
  84. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +2 -2
  85. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +311 -196
  86. package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +15 -5
  87. package/deps/rocksdb/rocksdb/db/db_iter.cc +42 -29
  88. package/deps/rocksdb/rocksdb/db/db_iter.h +96 -31
  89. package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +3 -4
  90. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +168 -228
  91. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +454 -0
  92. package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +8 -8
  93. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +0 -1
  94. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +90 -0
  95. package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +60 -2
  96. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +7 -3
  97. package/deps/rocksdb/rocksdb/db/db_options_test.cc +85 -27
  98. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +3 -1
  99. package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +0 -2
  100. package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +114 -2
  101. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +0 -1
  102. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +0 -1
  103. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +51 -3
  104. package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +0 -1
  105. package/deps/rocksdb/rocksdb/db/db_test.cc +325 -18
  106. package/deps/rocksdb/rocksdb/db/db_test2.cc +644 -20
  107. package/deps/rocksdb/rocksdb/db/db_test_util.cc +14 -6
  108. package/deps/rocksdb/rocksdb/db/db_test_util.h +9 -0
  109. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +64 -45
  110. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +203 -14
  111. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +259 -30
  112. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +0 -1
  113. package/deps/rocksdb/rocksdb/db/db_write_test.cc +75 -1
  114. package/deps/rocksdb/rocksdb/db/dbformat.h +70 -6
  115. package/deps/rocksdb/rocksdb/db/deletefile_test.cc +0 -190
  116. package/deps/rocksdb/rocksdb/db/error_handler.cc +22 -7
  117. package/deps/rocksdb/rocksdb/db/error_handler.h +16 -1
  118. package/deps/rocksdb/rocksdb/db/event_helpers.cc +41 -26
  119. package/deps/rocksdb/rocksdb/db/experimental.cc +4 -3
  120. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +464 -78
  121. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +166 -69
  122. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +54 -25
  123. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +1 -3
  124. package/deps/rocksdb/rocksdb/db/flush_job.cc +98 -81
  125. package/deps/rocksdb/rocksdb/db/flush_job.h +4 -9
  126. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +80 -84
  127. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +1 -1
  128. package/deps/rocksdb/rocksdb/db/forward_iterator.h +2 -2
  129. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +12 -19
  130. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +0 -2
  131. package/deps/rocksdb/rocksdb/db/internal_stats.cc +41 -15
  132. package/deps/rocksdb/rocksdb/db/internal_stats.h +63 -52
  133. package/deps/rocksdb/rocksdb/db/job_context.h +59 -24
  134. package/deps/rocksdb/rocksdb/db/listener_test.cc +69 -10
  135. package/deps/rocksdb/rocksdb/db/log_format.h +11 -2
  136. package/deps/rocksdb/rocksdb/db/log_reader.cc +147 -34
  137. package/deps/rocksdb/rocksdb/db/log_reader.h +40 -11
  138. package/deps/rocksdb/rocksdb/db/log_test.cc +16 -3
  139. package/deps/rocksdb/rocksdb/db/log_writer.cc +102 -55
  140. package/deps/rocksdb/rocksdb/db/log_writer.h +21 -2
  141. package/deps/rocksdb/rocksdb/db/malloc_stats.h +0 -2
  142. package/deps/rocksdb/rocksdb/db/memtable.cc +16 -47
  143. package/deps/rocksdb/rocksdb/db/memtable.h +76 -12
  144. package/deps/rocksdb/rocksdb/db/memtable_list.cc +23 -20
  145. package/deps/rocksdb/rocksdb/db/memtable_list.h +9 -11
  146. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +18 -37
  147. package/deps/rocksdb/rocksdb/db/merge_context.h +2 -1
  148. package/deps/rocksdb/rocksdb/db/merge_test.cc +8 -0
  149. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +3 -5
  150. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +15 -7
  151. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.h +6 -3
  152. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +22 -4
  153. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +41 -1
  154. package/deps/rocksdb/rocksdb/db/prefix_test.cc +0 -1
  155. package/deps/rocksdb/rocksdb/db/repair.cc +29 -34
  156. package/deps/rocksdb/rocksdb/db/repair_test.cc +0 -1
  157. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +14 -15
  158. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +1 -3
  159. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +47 -1
  160. package/deps/rocksdb/rocksdb/db/table_cache.cc +3 -3
  161. package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +1 -3
  162. package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +2 -1
  163. package/deps/rocksdb/rocksdb/db/version_builder.cc +2 -2
  164. package/deps/rocksdb/rocksdb/db/version_edit.cc +8 -37
  165. package/deps/rocksdb/rocksdb/db/version_edit.h +32 -1
  166. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +26 -18
  167. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +7 -5
  168. package/deps/rocksdb/rocksdb/db/version_set.cc +282 -197
  169. package/deps/rocksdb/rocksdb/db/version_set.h +54 -57
  170. package/deps/rocksdb/rocksdb/db/version_set_test.cc +28 -35
  171. package/deps/rocksdb/rocksdb/db/version_util.h +2 -3
  172. package/deps/rocksdb/rocksdb/db/wal_manager.cc +3 -2
  173. package/deps/rocksdb/rocksdb/db/wal_manager.h +0 -1
  174. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +0 -1
  175. package/deps/rocksdb/rocksdb/db/wide/wide_columns.cc +1 -0
  176. package/deps/rocksdb/rocksdb/db/write_batch.cc +22 -8
  177. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +5 -4
  178. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +7 -6
  179. package/deps/rocksdb/rocksdb/db/write_callback_test.cc +3 -4
  180. package/deps/rocksdb/rocksdb/db/write_thread.h +3 -3
  181. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +13 -5
  182. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +9 -2
  183. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_service.h +39 -0
  184. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compression_manager.h +65 -0
  185. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +45 -22
  186. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +7 -4
  187. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +22 -5
  188. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +28 -3
  189. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +143 -38
  190. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +4 -3
  191. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +80 -32
  192. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.h +51 -2
  193. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +23 -1
  194. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +305 -15
  195. package/deps/rocksdb/rocksdb/env/env.cc +32 -2
  196. package/deps/rocksdb/rocksdb/env/env_encryption.cc +0 -2
  197. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +2 -4
  198. package/deps/rocksdb/rocksdb/env/env_posix.cc +4 -2
  199. package/deps/rocksdb/rocksdb/env/env_test.cc +0 -1
  200. package/deps/rocksdb/rocksdb/env/fs_posix.cc +20 -11
  201. package/deps/rocksdb/rocksdb/env/fs_readonly.h +0 -2
  202. package/deps/rocksdb/rocksdb/env/fs_remap.cc +0 -2
  203. package/deps/rocksdb/rocksdb/env/fs_remap.h +0 -2
  204. package/deps/rocksdb/rocksdb/env/io_posix.cc +6 -4
  205. package/deps/rocksdb/rocksdb/env/io_posix.h +3 -2
  206. package/deps/rocksdb/rocksdb/env/mock_env.cc +0 -1
  207. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +2 -2
  208. package/deps/rocksdb/rocksdb/file/delete_scheduler.h +0 -2
  209. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +0 -2
  210. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +30 -21
  211. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +16 -0
  212. package/deps/rocksdb/rocksdb/file/file_util.cc +32 -14
  213. package/deps/rocksdb/rocksdb/file/file_util.h +22 -5
  214. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +229 -76
  215. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +21 -12
  216. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +10 -7
  217. package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +12 -8
  218. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +1 -2
  219. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +0 -2
  220. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +3 -3
  221. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +598 -0
  222. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_iterator.h +36 -0
  223. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +70 -11
  224. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +232 -11
  225. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +1 -1
  226. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +3 -1
  227. package/deps/rocksdb/rocksdb/include/rocksdb/compression_type.h +149 -15
  228. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +17 -2
  229. package/deps/rocksdb/rocksdb/include/rocksdb/data_structure.h +132 -34
  230. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +158 -79
  231. package/deps/rocksdb/rocksdb/include/rocksdb/db_bench_tool.h +2 -1
  232. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +4 -5
  233. package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +1 -3
  234. package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +5 -0
  235. package/deps/rocksdb/rocksdb/include/rocksdb/external_table.h +275 -0
  236. package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +2 -1
  237. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +50 -5
  238. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +10 -0
  239. package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +13 -0
  240. package/deps/rocksdb/rocksdb/include/rocksdb/ldb_tool.h +0 -1
  241. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +5 -2
  242. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +13 -0
  243. package/deps/rocksdb/rocksdb/include/rocksdb/multi_scan.h +237 -0
  244. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +230 -39
  245. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +15 -0
  246. package/deps/rocksdb/rocksdb/include/rocksdb/perf_level.h +31 -11
  247. package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +41 -0
  248. package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +1 -1
  249. package/deps/rocksdb/rocksdb/include/rocksdb/sst_dump_tool.h +0 -1
  250. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +5 -1
  251. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +0 -1
  252. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +18 -3
  253. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +2 -0
  254. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +20 -8
  255. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +19 -2
  256. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -1
  257. package/deps/rocksdb/rocksdb/include/rocksdb/tool_hooks.h +124 -0
  258. package/deps/rocksdb/rocksdb/include/rocksdb/trace_record.h +1 -0
  259. package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +26 -1
  260. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backup_engine.h +55 -6
  261. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/debug.h +3 -5
  262. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_mirror.h +0 -2
  263. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +1 -2
  264. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/memory_util.h +0 -1
  265. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +1 -2
  266. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +0 -1
  267. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/secondary_index.h +96 -8
  268. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/secondary_index_faiss.h +117 -0
  269. package/deps/rocksdb/rocksdb/{utilities/secondary_index/faiss_ivf_index.h → include/rocksdb/utilities/secondary_index_simple.h} +11 -14
  270. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +26 -11
  271. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +16 -3
  272. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +0 -2
  273. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +63 -7
  274. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db_mutex.h +0 -1
  275. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +28 -12
  276. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +3 -3
  277. package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +0 -2
  278. package/deps/rocksdb/rocksdb/logging/event_logger_test.cc +1 -2
  279. package/deps/rocksdb/rocksdb/memory/memory_allocator_impl.h +1 -1
  280. package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +0 -1
  281. package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +0 -1
  282. package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +3 -1
  283. package/deps/rocksdb/rocksdb/memtable/skiplist.h +2 -2
  284. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +2 -4
  285. package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +69 -8
  286. package/deps/rocksdb/rocksdb/memtable/wbwi_memtable.cc +32 -9
  287. package/deps/rocksdb/rocksdb/memtable/wbwi_memtable.h +58 -45
  288. package/deps/rocksdb/rocksdb/monitoring/histogram.h +1 -1
  289. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +5 -3
  290. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +5 -0
  291. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +1 -1
  292. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +3 -2
  293. package/deps/rocksdb/rocksdb/options/cf_options.cc +44 -13
  294. package/deps/rocksdb/rocksdb/options/cf_options.h +21 -7
  295. package/deps/rocksdb/rocksdb/options/configurable.cc +5 -5
  296. package/deps/rocksdb/rocksdb/options/configurable_test.h +1 -2
  297. package/deps/rocksdb/rocksdb/options/customizable.cc +0 -1
  298. package/deps/rocksdb/rocksdb/options/customizable_test.cc +4 -11
  299. package/deps/rocksdb/rocksdb/options/db_options.cc +18 -15
  300. package/deps/rocksdb/rocksdb/options/db_options.h +2 -2
  301. package/deps/rocksdb/rocksdb/options/options.cc +296 -305
  302. package/deps/rocksdb/rocksdb/options/options_helper.cc +188 -62
  303. package/deps/rocksdb/rocksdb/options/options_helper.h +3 -3
  304. package/deps/rocksdb/rocksdb/options/options_parser.cc +2 -4
  305. package/deps/rocksdb/rocksdb/options/options_parser.h +0 -1
  306. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +17 -4
  307. package/deps/rocksdb/rocksdb/options/options_test.cc +101 -76
  308. package/deps/rocksdb/rocksdb/port/lang.h +2 -1
  309. package/deps/rocksdb/rocksdb/port/port_posix.cc +2 -1
  310. package/deps/rocksdb/rocksdb/port/stack_trace.cc +5 -4
  311. package/deps/rocksdb/rocksdb/port/win/env_win.cc +3 -2
  312. package/deps/rocksdb/rocksdb/port/win/xpress_win.cc +99 -1
  313. package/deps/rocksdb/rocksdb/port/win/xpress_win.h +6 -0
  314. package/deps/rocksdb/rocksdb/src.mk +17 -11
  315. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +0 -1
  316. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +1094 -929
  317. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +6 -19
  318. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +76 -22
  319. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +2 -0
  320. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +221 -131
  321. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +12 -9
  322. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +23 -24
  323. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +38 -38
  324. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +7 -4
  325. package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +5 -5
  326. package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +10 -12
  327. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +6 -4
  328. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +35 -43
  329. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +2 -1
  330. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +1 -1
  331. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +1 -2
  332. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +0 -4
  333. package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +0 -1
  334. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +3 -3
  335. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +3 -3
  336. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +4 -4
  337. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +1 -1
  338. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +4 -5
  339. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +4 -4
  340. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +37 -35
  341. package/deps/rocksdb/rocksdb/table/block_fetcher.h +11 -7
  342. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +4 -3
  343. package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +31 -5
  344. package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.h +2 -1
  345. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +0 -1
  346. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +0 -1
  347. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +0 -1
  348. package/deps/rocksdb/rocksdb/table/external_table.cc +483 -0
  349. package/deps/rocksdb/rocksdb/table/format.cc +62 -44
  350. package/deps/rocksdb/rocksdb/table/format.h +35 -12
  351. package/deps/rocksdb/rocksdb/table/internal_iterator.h +3 -13
  352. package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +8 -0
  353. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +6 -0
  354. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +150 -141
  355. package/deps/rocksdb/rocksdb/table/meta_blocks.h +5 -0
  356. package/deps/rocksdb/rocksdb/table/multiget_context.h +3 -2
  357. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +8 -0
  358. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +0 -1
  359. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +0 -2
  360. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.h +0 -2
  361. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +0 -1
  362. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +6 -6
  363. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +0 -1
  364. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +86 -7
  365. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +88 -2
  366. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +0 -1
  367. package/deps/rocksdb/rocksdb/table/table_builder.h +10 -1
  368. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +3 -2
  369. package/deps/rocksdb/rocksdb/table/table_test.cc +899 -22
  370. package/deps/rocksdb/rocksdb/test_util/testutil.cc +3 -4
  371. package/deps/rocksdb/rocksdb/test_util/testutil.h +132 -1
  372. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +0 -1
  373. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +0 -2
  374. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +163 -77
  375. package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +0 -2
  376. package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +0 -1
  377. package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +0 -1
  378. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +120 -52
  379. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +1 -0
  380. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -1
  381. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +0 -2
  382. package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.cc +2 -2
  383. package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.h +0 -2
  384. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +2 -1
  385. package/deps/rocksdb/rocksdb/tools/tool_hooks.cc +94 -0
  386. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +0 -1
  387. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.h +0 -1
  388. package/deps/rocksdb/rocksdb/trace_replay/io_tracer.cc +1 -1
  389. package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +2 -1
  390. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +3 -5
  391. package/deps/rocksdb/rocksdb/util/async_file_reader.cc +1 -1
  392. package/deps/rocksdb/rocksdb/util/async_file_reader.h +15 -8
  393. package/deps/rocksdb/rocksdb/util/auto_skip_compressor.cc +131 -0
  394. package/deps/rocksdb/rocksdb/util/auto_skip_compressor.h +90 -0
  395. package/deps/rocksdb/rocksdb/util/autovector.h +1 -1
  396. package/deps/rocksdb/rocksdb/util/autovector_test.cc +2 -2
  397. package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +0 -2
  398. package/deps/rocksdb/rocksdb/util/compression.cc +936 -4
  399. package/deps/rocksdb/rocksdb/util/compression.h +348 -232
  400. package/deps/rocksdb/rocksdb/util/compression_test.cc +229 -0
  401. package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +10 -10
  402. package/deps/rocksdb/rocksdb/util/crc32c_ppc.c +1 -0
  403. package/deps/rocksdb/rocksdb/util/data_structure.cc +2 -0
  404. package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +1 -3
  405. package/deps/rocksdb/rocksdb/util/ppc-opcode.h +5 -5
  406. package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +108 -0
  407. package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +67 -0
  408. package/deps/rocksdb/rocksdb/util/slice_test.cc +83 -0
  409. package/deps/rocksdb/rocksdb/util/string_util.cc +0 -2
  410. package/deps/rocksdb/rocksdb/util/string_util.h +10 -0
  411. package/deps/rocksdb/rocksdb/util/thread_operation.h +2 -1
  412. package/deps/rocksdb/rocksdb/util/udt_util.cc +18 -5
  413. package/deps/rocksdb/rocksdb/util/udt_util.h +10 -7
  414. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +650 -154
  415. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +438 -144
  416. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +0 -1
  417. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +0 -1
  418. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_gc_stats.h +0 -1
  419. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +16 -17
  420. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +2 -1
  421. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +0 -1
  422. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +0 -1
  423. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +7 -8
  424. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +4 -3
  425. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.h +0 -1
  426. package/deps/rocksdb/rocksdb/utilities/cache_dump_load.cc +0 -1
  427. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +2 -2
  428. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +1 -1
  429. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +0 -48
  430. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +0 -1
  431. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.h +0 -1
  432. package/deps/rocksdb/rocksdb/utilities/debug.cc +7 -14
  433. package/deps/rocksdb/rocksdb/utilities/env_mirror.cc +0 -1
  434. package/deps/rocksdb/rocksdb/utilities/env_mirror_test.cc +0 -2
  435. package/deps/rocksdb/rocksdb/utilities/env_timed.cc +0 -1
  436. package/deps/rocksdb/rocksdb/utilities/env_timed_test.cc +0 -2
  437. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +5 -3
  438. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +10 -9
  439. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +0 -1
  440. package/deps/rocksdb/rocksdb/utilities/memory/memory_util.cc +0 -1
  441. package/deps/rocksdb/rocksdb/utilities/memory_allocators.h +1 -0
  442. package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +0 -2
  443. package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +0 -1
  444. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +0 -1
  445. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +0 -1
  446. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +0 -2
  447. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +0 -2
  448. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.cc +0 -1
  449. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +0 -2
  450. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table.h +0 -2
  451. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_evictable.h +0 -2
  452. package/deps/rocksdb/rocksdb/utilities/persistent_cache/lrulist.h +0 -2
  453. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.h +0 -2
  454. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.cc +0 -1
  455. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +0 -2
  456. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +0 -1
  457. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +0 -2
  458. package/deps/rocksdb/rocksdb/utilities/secondary_index/faiss_ivf_index.cc +183 -32
  459. package/deps/rocksdb/rocksdb/utilities/secondary_index/faiss_ivf_index_test.cc +258 -12
  460. package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_helper.h +33 -0
  461. package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_iterator.cc +99 -0
  462. package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_mixin.h +280 -120
  463. package/deps/rocksdb/rocksdb/utilities/secondary_index/simple_secondary_index.cc +79 -0
  464. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +52 -16
  465. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.h +10 -6
  466. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector_test.cc +55 -0
  467. package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.cc +0 -1
  468. package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.cc +0 -2
  469. package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.h +0 -1
  470. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +37 -12
  471. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +2 -0
  472. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +0 -2
  473. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +0 -2
  474. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +1 -1
  475. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/db.h +1 -1
  476. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +1 -1
  477. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc +2 -1
  478. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +2 -2
  479. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +0 -1
  480. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.h +0 -2
  481. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +1 -3
  482. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +36 -10
  483. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +5 -7
  484. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +4 -5
  485. package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +1 -4
  486. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +1 -2
  487. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.cc +0 -2
  488. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.h +0 -1
  489. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +1118 -37
  490. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +4 -7
  491. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +0 -2
  492. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.h +0 -2
  493. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +3 -3
  494. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +0 -1
  495. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +0 -2
  496. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +1 -2
  497. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +1 -2
  498. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +0 -1
  499. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +0 -3
  500. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +125 -127
  501. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +45 -23
  502. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +54 -22
  503. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +477 -58
  504. package/deps/rocksdb/rocksdb.gyp +5 -0
  505. package/index.js +47 -2
  506. package/package.json +8 -1
  507. package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
  508. package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
@@ -0,0 +1,229 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+ // This source code is licensed under both the GPLv2 (found in the
3
+ // COPYING file in the root directory) and Apache 2.0 License
4
+ // (found in the LICENSE.Apache file in the root directory).
5
+ //
6
+ // Testing the features of auto skip compression manager
7
+ //
8
+ // ***********************************************************************
9
+ // EXPERIMENTAL - subject to change while under development
10
+ // ***********************************************************************
11
+
12
+ #include <cstdlib>
13
+ #include <memory>
14
+
15
+ #include "db/db_test_util.h"
16
+ #include "port/stack_trace.h"
17
+ #include "rocksdb/flush_block_policy.h"
18
+ #include "table/block_based/block_builder.h"
19
+ #include "test_util/testutil.h"
20
+ #include "util/random.h"
21
+
22
+ namespace ROCKSDB_NAMESPACE {
23
+
24
+ class AutoSkipTestFlushBlockPolicy : public FlushBlockPolicy {
25
+ public:
26
+ explicit AutoSkipTestFlushBlockPolicy(const int window,
27
+ const BlockBuilder& data_block_builder,
28
+ std::shared_ptr<Statistics> statistics)
29
+ : window_(window),
30
+ num_keys_(0),
31
+ data_block_builder_(data_block_builder),
32
+ statistics_(statistics) {}
33
+
34
+ bool Update(const Slice& /*key*/, const Slice& /*value*/) override {
35
+ auto nth_window = num_keys_ / window_;
36
+ if (data_block_builder_.empty()) {
37
+ // First key in this block
38
+ return false;
39
+ }
40
+ // Check every window
41
+ if (num_keys_ % window_ == 0) {
42
+ auto set_exploration = [&](void* arg) {
43
+ bool* exploration = static_cast<bool*>(arg);
44
+ *exploration = true;
45
+ };
46
+ auto unset_exploration = [&](void* arg) {
47
+ bool* exploration = static_cast<bool*>(arg);
48
+ *exploration = false;
49
+ };
50
+ SyncPoint::GetInstance()->DisableProcessing();
51
+ SyncPoint::GetInstance()->ClearAllCallBacks();
52
+ // We force exploration to set the predicted rejection ratio for odd
53
+ // window and then test that the prediction is exploited in the even
54
+ // window
55
+ if (nth_window % 2 == 0) {
56
+ SyncPoint::GetInstance()->SetCallBack(
57
+ "AutoSkipCompressorWrapper::CompressBlock::exploitOrExplore",
58
+ set_exploration);
59
+ } else {
60
+ SyncPoint::GetInstance()->SetCallBack(
61
+ "AutoSkipCompressorWrapper::CompressBlock::exploitOrExplore",
62
+ unset_exploration);
63
+ }
64
+ SyncPoint::GetInstance()->EnableProcessing();
65
+
66
+ auto compressed_count = PopStat(NUMBER_BLOCK_COMPRESSED);
67
+ auto bypassed_count = PopStat(NUMBER_BLOCK_COMPRESSION_BYPASSED);
68
+ auto rejected_count = PopStat(NUMBER_BLOCK_COMPRESSION_REJECTED);
69
+ auto total = compressed_count + rejected_count + bypassed_count;
70
+ int rejection_percentage, bypassed_percentage, compressed_percentage;
71
+ if (total != 0) {
72
+ rejection_percentage = static_cast<int>(rejected_count * 100 / total);
73
+ bypassed_percentage = static_cast<int>(bypassed_count * 100 / total);
74
+ compressed_percentage =
75
+ static_cast<int>(compressed_count * 100 / total);
76
+ // use nth window to detect test cases and set the expected
77
+ switch (nth_window) {
78
+ case 1:
79
+ // In first window we only explore and thus here we verify that the
80
+ // correct prediction has been made by the end of the window
81
+ // Since 6 of 10 blocks are compression unfriendly, the predicted
82
+ // rejection ratio should be 60%
83
+ EXPECT_EQ(rejection_percentage, 60);
84
+ EXPECT_EQ(bypassed_percentage, 0);
85
+ EXPECT_EQ(compressed_percentage, 40);
86
+ break;
87
+ case 2:
88
+ // With the rejection ratio set to 0.6 all the blocks should be
89
+ // bypassed in next window
90
+ EXPECT_EQ(rejection_percentage, 0);
91
+ EXPECT_EQ(bypassed_percentage, 100);
92
+ EXPECT_EQ(compressed_percentage, 0);
93
+ break;
94
+ case 3:
95
+ // In third window we only explore and verify that the correct
96
+ // prediction has been made by the end of the window
97
+ // since 4 of 10 blocks are compression ufriendly, the predicted
98
+ // rejection ratio should be 40%
99
+ EXPECT_EQ(rejection_percentage, 40);
100
+ EXPECT_EQ(bypassed_percentage, 0);
101
+ EXPECT_EQ(compressed_percentage, 60);
102
+ break;
103
+ case 4:
104
+ // With the rejection ratio set to 0.4 all the blocks should be
105
+ // attempted to be compressed
106
+ // 6 of 10 blocks are compression unfriendly and thus should be
107
+ // rejected 4 of 10 blocks are compression friendly and thus should
108
+ // be compressed
109
+ EXPECT_EQ(rejection_percentage, 60);
110
+ EXPECT_EQ(bypassed_percentage, 0);
111
+ EXPECT_EQ(compressed_percentage, 40);
112
+ }
113
+ }
114
+ }
115
+ num_keys_++;
116
+ return true;
117
+ }
118
+ uint64_t PopStat(Tickers t) { return statistics_->getAndResetTickerCount(t); }
119
+
120
+ private:
121
+ int window_;
122
+ int num_keys_;
123
+ const BlockBuilder& data_block_builder_;
124
+ std::shared_ptr<Statistics> statistics_;
125
+ };
126
+
127
+ class AutoSkipTestFlushBlockPolicyFactory : public FlushBlockPolicyFactory {
128
+ public:
129
+ explicit AutoSkipTestFlushBlockPolicyFactory(
130
+ const int window, std::shared_ptr<Statistics> statistics)
131
+ : window_(window), statistics_(statistics) {}
132
+
133
+ virtual const char* Name() const override {
134
+ return "AutoSkipTestFlushBlockPolicyFactory";
135
+ }
136
+
137
+ virtual FlushBlockPolicy* NewFlushBlockPolicy(
138
+ const BlockBasedTableOptions& /*table_options*/,
139
+ const BlockBuilder& data_block_builder) const override {
140
+ (void)data_block_builder;
141
+ return new AutoSkipTestFlushBlockPolicy(window_, data_block_builder,
142
+ statistics_);
143
+ }
144
+
145
+ private:
146
+ int window_;
147
+ std::shared_ptr<Statistics> statistics_;
148
+ };
149
+
150
+ class DBAutoSkip : public DBTestBase {
151
+ public:
152
+ Options options;
153
+ Random rnd_;
154
+ int key_index_;
155
+ DBAutoSkip()
156
+ : DBTestBase("db_auto_skip", /*env_do_fsync=*/true),
157
+ options(CurrentOptions()),
158
+ rnd_(231),
159
+ key_index_(0) {
160
+ options.compression_manager =
161
+ CreateAutoSkipCompressionManager(GetBuiltinV2CompressionManager());
162
+ auto statistics = ROCKSDB_NAMESPACE::CreateDBStatistics();
163
+ options.statistics = statistics;
164
+ options.statistics->set_stats_level(StatsLevel::kExceptTimeForMutex);
165
+ BlockBasedTableOptions bbto;
166
+ bbto.enable_index_compression = false;
167
+ bbto.flush_block_policy_factory.reset(
168
+ new AutoSkipTestFlushBlockPolicyFactory(10, statistics));
169
+ options.table_factory.reset(NewBlockBasedTableFactory(bbto));
170
+ DestroyAndReopen(options);
171
+ }
172
+
173
+ bool CompressionFriendlyPut(const int no_of_kvs, const int size_of_value) {
174
+ auto value = std::string(size_of_value, 'A');
175
+ for (int i = 0; i < no_of_kvs; ++i) {
176
+ auto status = Put(Key(key_index_), value);
177
+ EXPECT_EQ(status.ok(), true);
178
+ key_index_++;
179
+ }
180
+ return true;
181
+ }
182
+ bool CompressionUnfriendlyPut(const int no_of_kvs, const int size_of_value) {
183
+ auto value = rnd_.RandomBinaryString(size_of_value);
184
+ for (int i = 0; i < no_of_kvs; ++i) {
185
+ auto status = Put(Key(key_index_), value);
186
+ EXPECT_EQ(status.ok(), true);
187
+ key_index_++;
188
+ }
189
+ return true;
190
+ }
191
+ };
192
+
193
+ // FIXME: the test is failing the assertion in auto_skip_compressor.cc
194
+ // when run on nightly build in build-linux-arm-test-full mode [1].
195
+ //
196
+ // [1]
197
+ // auto_skip_compressor.cc:101: Assertion `preferred != kNoCompression' failed.
198
+ TEST_F(DBAutoSkip, DISABLED_AutoSkipCompressionManager) {
199
+ if (GetSupportedCompressions().size() > 1) {
200
+ const int kValueSize = 20000;
201
+ // This will set the rejection ratio to 60%
202
+ CompressionUnfriendlyPut(6, kValueSize);
203
+ CompressionFriendlyPut(4, kValueSize);
204
+ // This will verify all the data block compressions are bypassed based on
205
+ // previous prediction
206
+ CompressionUnfriendlyPut(6, kValueSize);
207
+ CompressionFriendlyPut(4, kValueSize);
208
+ // This will set the rejection ratio to 40%
209
+ CompressionUnfriendlyPut(4, kValueSize);
210
+ CompressionFriendlyPut(6, kValueSize);
211
+ // This will verify all the data block compression are attempted based on
212
+ // previous prediction
213
+ // Compression will be rejected for 6 compression unfriendly blocks
214
+ // Compression will be accepted for 4 compression friendly blocks
215
+ CompressionUnfriendlyPut(6, kValueSize);
216
+ CompressionFriendlyPut(4, kValueSize);
217
+ // Extra block write to ensure that the all above cases are checked
218
+ CompressionFriendlyPut(6, kValueSize);
219
+ CompressionFriendlyPut(4, kValueSize);
220
+ ASSERT_OK(Flush());
221
+ }
222
+ }
223
+ } // namespace ROCKSDB_NAMESPACE
224
+ int main(int argc, char** argv) {
225
+ ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
226
+ ::testing::InitGoogleTest(&argc, argv);
227
+ RegisterCustomObjects(argc, argv);
228
+ return RUN_ALL_TESTS();
229
+ }
@@ -10,7 +10,7 @@
10
10
  #if defined(__linux__)
11
11
  #include <asm/hwcap.h>
12
12
  #endif
13
- #ifdef ROCKSDB_AUXV_GETAUXVAL_PRESENT
13
+ #if defined(ROCKSDB_AUXV_GETAUXVAL_PRESENT)
14
14
  #include <sys/auxv.h>
15
15
  #endif
16
16
  #ifndef HWCAP_CRC32
@@ -37,15 +37,15 @@
37
37
  crc0 = crc32c_u64(crc0, *(buf64 + (ITR)));
38
38
 
39
39
  /* unfolding to compute 24 * 7 = 168 bytes parallelly */
40
- #define CRC32C7X24BYTES(ITR) \
41
- do { \
42
- CRC32C24BYTES((ITR)*7 + 0) \
43
- CRC32C24BYTES((ITR)*7 + 1) \
44
- CRC32C24BYTES((ITR)*7 + 2) \
45
- CRC32C24BYTES((ITR)*7 + 3) \
46
- CRC32C24BYTES((ITR)*7 + 4) \
47
- CRC32C24BYTES((ITR)*7 + 5) \
48
- CRC32C24BYTES((ITR)*7 + 6) \
40
+ #define CRC32C7X24BYTES(ITR) \
41
+ do { \
42
+ CRC32C24BYTES((ITR) * 7 + 0) \
43
+ CRC32C24BYTES((ITR) * 7 + 1) \
44
+ CRC32C24BYTES((ITR) * 7 + 2) \
45
+ CRC32C24BYTES((ITR) * 7 + 3) \
46
+ CRC32C24BYTES((ITR) * 7 + 4) \
47
+ CRC32C24BYTES((ITR) * 7 + 5) \
48
+ CRC32C24BYTES((ITR) * 7 + 6) \
49
49
  } while (0)
50
50
  #endif
51
51
 
@@ -9,6 +9,7 @@
9
9
  #include <stdint.h>
10
10
  #include <stdlib.h>
11
11
  #include <strings.h>
12
+
12
13
  #include "util/crc32c_ppc_constants.h"
13
14
 
14
15
  #define VMX_ALIGN 16
@@ -13,4 +13,6 @@ int CountTrailingZeroBitsForSmallEnumSet(uint64_t v) {
13
13
  return CountTrailingZeroBits(v);
14
14
  }
15
15
 
16
+ int BitsSetToOneForSmallEnumSet(uint64_t v) { return BitsSetToOne(v); }
17
+
16
18
  } // namespace ROCKSDB_NAMESPACE::detail
@@ -205,9 +205,7 @@ TEST_F(WritableFileWriterTest, IncrementalBuffer) {
205
205
  env_options.writable_file_max_buffer_size =
206
206
  (attempt < kNumAttempts / 2) ? 512 * 1024 : 700 * 1024;
207
207
  std::string actual;
208
- std::unique_ptr<FakeWF> wf(new FakeWF(&actual,
209
- attempt % 2 == 1,
210
- no_flush));
208
+ std::unique_ptr<FakeWF> wf(new FakeWF(&actual, attempt % 2 == 1, no_flush));
211
209
  std::unique_ptr<WritableFileWriter> writer(new WritableFileWriter(
212
210
  std::move(wf), "" /* don't care */, env_options));
213
211
 
@@ -7,11 +7,11 @@
7
7
 
8
8
  #pragma once
9
9
 
10
- #define __PPC_RA(a) (((a)&0x1f) << 16)
11
- #define __PPC_RB(b) (((b)&0x1f) << 11)
12
- #define __PPC_XA(a) ((((a)&0x1f) << 16) | (((a)&0x20) >> 3))
13
- #define __PPC_XB(b) ((((b)&0x1f) << 11) | (((b)&0x20) >> 4))
14
- #define __PPC_XS(s) ((((s)&0x1f) << 21) | (((s)&0x20) >> 5))
10
+ #define __PPC_RA(a) (((a) & 0x1f) << 16)
11
+ #define __PPC_RB(b) (((b) & 0x1f) << 11)
12
+ #define __PPC_XA(a) ((((a) & 0x1f) << 16) | (((a) & 0x20) >> 3))
13
+ #define __PPC_XB(b) ((((b) & 0x1f) << 11) | (((b) & 0x20) >> 4))
14
+ #define __PPC_XS(s) ((((s) & 0x1f) << 21) | (((s) & 0x20) >> 5))
15
15
  #define __PPC_XT(s) __PPC_XS(s)
16
16
  #define VSX_XX3(t, a, b) (__PPC_XT(t) | __PPC_XA(a) | __PPC_XB(b))
17
17
  #define VSX_XX1(s, a, b) (__PPC_XS(s) | __PPC_RA(a) | __PPC_RB(b))
@@ -0,0 +1,108 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+ // This source code is licensed under both the GPLv2 (found in the
3
+ // COPYING file in the root directory) and Apache 2.0 License
4
+ // (found in the LICENSE.Apache file in the root directory).
5
+ //
6
+ // Creates mixed compressor wrapper which uses multiple compression algorithm
7
+ // within same SST file.
8
+
9
+ #include "simple_mixed_compressor.h"
10
+
11
+ #include <options/options_helper.h>
12
+
13
+ #include "random.h"
14
+ #include "rocksdb/advanced_compression.h"
15
+ namespace ROCKSDB_NAMESPACE {
16
+
17
+ // MultiCompressorWrapper implementation
18
+ MultiCompressorWrapper::MultiCompressorWrapper(const CompressionOptions& opts,
19
+ CompressionDict&& dict) {
20
+ // TODO: make the compression manager a field
21
+ auto builtInManager = GetBuiltinV2CompressionManager();
22
+ const auto& compressions = GetSupportedCompressions();
23
+ for (auto type : compressions) {
24
+ if (type == kNoCompression) {
25
+ continue;
26
+ }
27
+ compressors_.push_back(builtInManager->GetCompressor(opts, type));
28
+ }
29
+ (void)dict;
30
+ }
31
+
32
+ size_t MultiCompressorWrapper::GetMaxSampleSizeIfWantDict(
33
+ CacheEntryRole block_type) const {
34
+ return compressors_.back()->GetMaxSampleSizeIfWantDict(block_type);
35
+ }
36
+
37
+ Slice MultiCompressorWrapper::GetSerializedDict() const {
38
+ return compressors_.back()->GetSerializedDict();
39
+ }
40
+
41
+ CompressionType MultiCompressorWrapper::GetPreferredCompressionType() const {
42
+ return compressors_.back()->GetPreferredCompressionType();
43
+ }
44
+
45
+ Compressor::ManagedWorkingArea MultiCompressorWrapper::ObtainWorkingArea() {
46
+ return compressors_.back()->ObtainWorkingArea();
47
+ }
48
+
49
+ std::unique_ptr<Compressor> MultiCompressorWrapper::MaybeCloneSpecialized(
50
+ CacheEntryRole block_type, DictSampleArgs&& dict_samples) {
51
+ // TODO: full dictionary compression support. Currently this just falls
52
+ // back on a non-multi compressor when asked to use a dictionary.
53
+ return compressors_.back()->MaybeCloneSpecialized(block_type,
54
+ std::move(dict_samples));
55
+ }
56
+
57
+ // RandomMixedCompressor implementation
58
+ const char* RandomMixedCompressor::Name() const {
59
+ return "RandomMixedCompressor";
60
+ }
61
+
62
+ Status RandomMixedCompressor::CompressBlock(
63
+ Slice uncompressed_data, std::string* compressed_output,
64
+ CompressionType* out_compression_type, ManagedWorkingArea* wa) {
65
+ auto selected =
66
+ Random::GetTLSInstance()->Uniform(static_cast<int>(compressors_.size()));
67
+ auto& compressor = compressors_[selected];
68
+ return compressor->CompressBlock(uncompressed_data, compressed_output,
69
+ out_compression_type, wa);
70
+ }
71
+
72
+ const char* RandomMixedCompressionManager::Name() const {
73
+ return "RandomMixedCompressionManager";
74
+ }
75
+
76
+ std::unique_ptr<Compressor> RandomMixedCompressionManager::GetCompressorForSST(
77
+ const FilterBuildingContext& /*context*/, const CompressionOptions& opts,
78
+ CompressionType /*preferred*/) {
79
+ return std::make_unique<RandomMixedCompressor>(opts);
80
+ }
81
+
82
+ // RoundRobinCompressor implementation
83
+ const char* RoundRobinCompressor::Name() const {
84
+ return "RoundRobinCompressor";
85
+ }
86
+
87
+ Status RoundRobinCompressor::CompressBlock(
88
+ Slice uncompressed_data, std::string* compressed_output,
89
+ CompressionType* out_compression_type, ManagedWorkingArea* wa) {
90
+ auto counter = block_counter.FetchAddRelaxed(1);
91
+ auto sel_idx = counter % (compressors_.size());
92
+ auto& compressor = compressors_[sel_idx];
93
+ return compressor->CompressBlock(uncompressed_data, compressed_output,
94
+ out_compression_type, wa);
95
+ }
96
+
97
+ RelaxedAtomic<uint64_t> RoundRobinCompressor::block_counter{0};
98
+
99
+ // RoundRobinManager implementation
100
+ const char* RoundRobinManager::Name() const { return "RoundRobinManager"; }
101
+
102
+ std::unique_ptr<Compressor> RoundRobinManager::GetCompressorForSST(
103
+ const FilterBuildingContext& /*context*/, const CompressionOptions& opts,
104
+ CompressionType /*preferred*/) {
105
+ return std::make_unique<RoundRobinCompressor>(opts);
106
+ }
107
+
108
+ } // namespace ROCKSDB_NAMESPACE
@@ -0,0 +1,67 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+ // This source code is licensed under both the GPLv2 (found in the
3
+ // COPYING file in the root directory) and Apache 2.0 License
4
+ // (found in the LICENSE.Apache file in the root directory).
5
+ //
6
+ // Creates mixed compressor wrapper which uses multiple compression algorithm
7
+ // within same SST file.
8
+
9
+ #pragma once
10
+ #include <memory>
11
+ #include <vector>
12
+
13
+ #include "compression.h"
14
+ #include "rocksdb/advanced_compression.h"
15
+
16
+ namespace ROCKSDB_NAMESPACE {
17
+
18
+ class MultiCompressorWrapper : public Compressor {
19
+ public:
20
+ explicit MultiCompressorWrapper(const CompressionOptions& opts,
21
+ CompressionDict&& dict = {});
22
+
23
+ size_t GetMaxSampleSizeIfWantDict(CacheEntryRole block_type) const override;
24
+ Slice GetSerializedDict() const override;
25
+ CompressionType GetPreferredCompressionType() const override;
26
+ ManagedWorkingArea ObtainWorkingArea() override;
27
+ std::unique_ptr<Compressor> MaybeCloneSpecialized(
28
+ CacheEntryRole block_type, DictSampleArgs&& dict_samples) override;
29
+
30
+ protected:
31
+ std::vector<std::unique_ptr<Compressor>> compressors_;
32
+ };
33
+
34
+ struct RandomMixedCompressor : public MultiCompressorWrapper {
35
+ using MultiCompressorWrapper::MultiCompressorWrapper;
36
+ const char* Name() const override;
37
+ Status CompressBlock(Slice uncompressed_data, std::string* compressed_output,
38
+ CompressionType* out_compression_type,
39
+ ManagedWorkingArea* wa) override;
40
+ };
41
+
42
+ class RandomMixedCompressionManager : public CompressionManagerWrapper {
43
+ using CompressionManagerWrapper::CompressionManagerWrapper;
44
+ const char* Name() const override;
45
+ std::unique_ptr<Compressor> GetCompressorForSST(
46
+ const FilterBuildingContext& context, const CompressionOptions& opts,
47
+ CompressionType preferred) override;
48
+ };
49
+
50
+ struct RoundRobinCompressor : public MultiCompressorWrapper {
51
+ using MultiCompressorWrapper::MultiCompressorWrapper;
52
+ const char* Name() const override;
53
+ Status CompressBlock(Slice uncompressed_data, std::string* compressed_output,
54
+ CompressionType* out_compression_type,
55
+ ManagedWorkingArea* wa) override;
56
+ static RelaxedAtomic<uint64_t> block_counter;
57
+ };
58
+
59
+ class RoundRobinManager : public CompressionManagerWrapper {
60
+ using CompressionManagerWrapper::CompressionManagerWrapper;
61
+ const char* Name() const override;
62
+ std::unique_ptr<Compressor> GetCompressorForSST(
63
+ const FilterBuildingContext& context, const CompressionOptions& opts,
64
+ CompressionType preferred) override;
65
+ };
66
+
67
+ } // namespace ROCKSDB_NAMESPACE
@@ -14,6 +14,7 @@
14
14
  #include "test_util/testharness.h"
15
15
  #include "test_util/testutil.h"
16
16
  #include "util/cast_util.h"
17
+ #include "util/string_util.h"
17
18
 
18
19
  namespace ROCKSDB_NAMESPACE {
19
20
 
@@ -177,18 +178,23 @@ class SmallEnumSetTest : public testing::Test {
177
178
  TEST_F(SmallEnumSetTest, SmallEnumSetTest1) {
178
179
  FileTypeSet fs; // based on a legacy enum type
179
180
  ASSERT_TRUE(fs.empty());
181
+ ASSERT_EQ(fs.count(), 0U);
180
182
  ASSERT_TRUE(fs.Add(FileType::kIdentityFile));
181
183
  ASSERT_FALSE(fs.empty());
184
+ ASSERT_EQ(fs.count(), 1U);
182
185
  ASSERT_FALSE(fs.Add(FileType::kIdentityFile));
183
186
  ASSERT_TRUE(fs.Add(FileType::kInfoLogFile));
184
187
  ASSERT_TRUE(fs.Contains(FileType::kIdentityFile));
185
188
  ASSERT_FALSE(fs.Contains(FileType::kDBLockFile));
186
189
  ASSERT_FALSE(fs.empty());
190
+ ASSERT_EQ(fs.count(), 2U);
187
191
  ASSERT_FALSE(fs.Remove(FileType::kDBLockFile));
188
192
  ASSERT_TRUE(fs.Remove(FileType::kIdentityFile));
189
193
  ASSERT_FALSE(fs.empty());
194
+ ASSERT_EQ(fs.count(), 1U);
190
195
  ASSERT_TRUE(fs.Remove(FileType::kInfoLogFile));
191
196
  ASSERT_TRUE(fs.empty());
197
+ ASSERT_EQ(fs.count(), 0U);
192
198
  }
193
199
 
194
200
  namespace {
@@ -224,12 +230,16 @@ TEST_F(SmallEnumSetTest, SmallEnumSetTest2) {
224
230
  ASSERT_NE(cs, MyEnumClassSet{MyEnumClass::B});
225
231
  ASSERT_NE(cs, MyEnumClassSet::All());
226
232
 
233
+ ASSERT_EQ(MyEnumClassSet{}.count(), 0U);
234
+ ASSERT_EQ(MyEnumClassSet::All().count(), 3U);
235
+
227
236
  int count = 0;
228
237
  for (MyEnumClass e : cs) {
229
238
  ASSERT_EQ(e, MyEnumClass::A);
230
239
  ++count;
231
240
  }
232
241
  ASSERT_EQ(count, 1);
242
+ ASSERT_EQ(cs.count(), 1U);
233
243
 
234
244
  count = 0;
235
245
  for (MyEnumClass e : MyEnumClassSet::All().Without(MyEnumClass::B)) {
@@ -244,6 +254,68 @@ TEST_F(SmallEnumSetTest, SmallEnumSetTest2) {
244
254
  }
245
255
  }
246
256
 
257
+ template <typename ENUM_TYPE, ENUM_TYPE MAX_ENUMERATOR>
258
+ void TestBiggerEnumSet() {
259
+ using MySet = SmallEnumSet<ENUM_TYPE, MAX_ENUMERATOR>;
260
+ constexpr int kMaxValue = static_cast<int>(MAX_ENUMERATOR);
261
+ SCOPED_TRACE("kMaxValue = " + std::to_string(kMaxValue));
262
+
263
+ ASSERT_EQ(sizeof(MySet), (kMaxValue + 1 + 63) / 64 * 8);
264
+
265
+ MySet s;
266
+ ASSERT_TRUE(s.empty());
267
+ ASSERT_EQ(s.count(), 0U);
268
+ ASSERT_TRUE(s.Add(ENUM_TYPE(0)));
269
+ ASSERT_FALSE(s.empty());
270
+ ASSERT_EQ(s.count(), 1U);
271
+ ASSERT_TRUE(s.Add(ENUM_TYPE(kMaxValue - 1)));
272
+ ASSERT_FALSE(s.empty());
273
+ ASSERT_EQ(s.count(), 2U);
274
+ ASSERT_TRUE(s.Add(ENUM_TYPE(kMaxValue)));
275
+ ASSERT_FALSE(s.empty());
276
+ ASSERT_EQ(s.count(), 3U);
277
+
278
+ int count = 0;
279
+ for (ENUM_TYPE e : s) {
280
+ ASSERT_TRUE(e == ENUM_TYPE(0) || e == ENUM_TYPE(kMaxValue - 1) ||
281
+ e == ENUM_TYPE(kMaxValue));
282
+ ++count;
283
+ }
284
+ ASSERT_EQ(count, 3);
285
+
286
+ ASSERT_TRUE(s.Remove(ENUM_TYPE(0)));
287
+ ASSERT_TRUE(s.Remove(ENUM_TYPE(kMaxValue)));
288
+ ASSERT_FALSE(s.empty());
289
+ ASSERT_EQ(s.count(), 1U);
290
+
291
+ count = 0;
292
+ for (ENUM_TYPE e : s) {
293
+ ASSERT_EQ(e, ENUM_TYPE(kMaxValue - 1));
294
+ ++count;
295
+ }
296
+ ASSERT_EQ(count, 1);
297
+ }
298
+
299
+ TEST_F(SmallEnumSetTest, BiggerEnumClasses) {
300
+ enum class BiggerEnumClass63 { A, B, C = 63 };
301
+ enum class BiggerEnumClass64 { A, B, C = 64 };
302
+ enum class BiggerEnumClass65 { A, B, C = 65 };
303
+ enum class BiggerEnumClass127 { A, B, C = 127 };
304
+ enum class BiggerEnumClass128 { A, B, C = 128 };
305
+ enum class BiggerEnumClass129 { A, B, C = 129 };
306
+ enum class BiggerEnumClass150 { A, B, C = 150 };
307
+ enum class BiggerEnumClass255 { A, B, C = 255 };
308
+
309
+ TestBiggerEnumSet<BiggerEnumClass63, BiggerEnumClass63::C>();
310
+ TestBiggerEnumSet<BiggerEnumClass64, BiggerEnumClass64::C>();
311
+ TestBiggerEnumSet<BiggerEnumClass65, BiggerEnumClass65::C>();
312
+ TestBiggerEnumSet<BiggerEnumClass127, BiggerEnumClass127::C>();
313
+ TestBiggerEnumSet<BiggerEnumClass128, BiggerEnumClass128::C>();
314
+ TestBiggerEnumSet<BiggerEnumClass129, BiggerEnumClass129::C>();
315
+ TestBiggerEnumSet<BiggerEnumClass150, BiggerEnumClass150::C>();
316
+ TestBiggerEnumSet<BiggerEnumClass255, BiggerEnumClass255::C>();
317
+ }
318
+
247
319
  // ***************************************************************** //
248
320
  // Unit test for Status
249
321
  TEST(StatusTest, Update) {
@@ -339,6 +411,17 @@ TEST(UnownedPtrTest, Tests) {
339
411
  }
340
412
  }
341
413
 
414
+ TEST(ToBaseCharsStringTest, Tests) {
415
+ using ROCKSDB_NAMESPACE::ToBaseCharsString;
416
+ // Base 16
417
+ ASSERT_EQ(ToBaseCharsString<16>(5, 0, true), "00000");
418
+ ASSERT_EQ(ToBaseCharsString<16>(5, 42, true), "0002A");
419
+ ASSERT_EQ(ToBaseCharsString<16>(5, 42, false), "0002a");
420
+ ASSERT_EQ(ToBaseCharsString<16>(2, 255, false), "ff");
421
+ // Base 32
422
+ ASSERT_EQ(ToBaseCharsString<32>(2, 255, false), "7v");
423
+ }
424
+
342
425
  } // namespace ROCKSDB_NAMESPACE
343
426
 
344
427
  int main(int argc, char** argv) {
@@ -296,7 +296,6 @@ bool StartsWith(const std::string& string, const std::string& pattern) {
296
296
  return string.compare(0, pattern.size(), pattern) == 0;
297
297
  }
298
298
 
299
-
300
299
  bool ParseBoolean(const std::string& type, const std::string& value) {
301
300
  if (value == "true" || value == "1") {
302
301
  return true;
@@ -334,7 +333,6 @@ int32_t ParseInt32(const std::string& value) {
334
333
  }
335
334
  }
336
335
 
337
-
338
336
  uint64_t ParseUint64(const std::string& value) {
339
337
  size_t endchar;
340
338
  #ifndef CYGWIN
@@ -40,6 +40,16 @@ inline void PutBaseChars(char** buf, size_t n, uint64_t v, bool uppercase) {
40
40
  *buf += n;
41
41
  }
42
42
 
43
+ // Construct a string of n digits from v in base kBase
44
+ template <size_t kBase>
45
+ inline std::string ToBaseCharsString(size_t n, uint64_t v, bool uppercase) {
46
+ std::string result;
47
+ result.resize(n);
48
+ char* buf = &result[0];
49
+ PutBaseChars<kBase>(&buf, n, v, uppercase);
50
+ return result;
51
+ }
52
+
43
53
  // Parse n digits from *buf in base kBase to *v and advance *buf to the
44
54
  // position after what was read. On success, true is returned. On failure,
45
55
  // false is returned, *buf is placed at the first bad character, and *v
@@ -47,7 +47,8 @@ static OperationInfo global_operation_table[] = {
47
47
  {ThreadStatus::OP_VERIFY_FILE_CHECKSUMS, "VerifyFileChecksums"},
48
48
  {ThreadStatus::OP_GETENTITY, "GetEntity"},
49
49
  {ThreadStatus::OP_MULTIGETENTITY, "MultiGetEntity"},
50
- {ThreadStatus::OP_READ_MANIFEST, "ReadManifest"},
50
+ {ThreadStatus::OP_GET_FILE_CHECKSUMS_FROM_CURRENT_MANIFEST,
51
+ "GetFileChecksumsFromCurrentManifest"},
51
52
 
52
53
  };
53
54