@nxtedition/rocksdb 1.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 (1088) hide show
  1. package/CHANGELOG.md +294 -0
  2. package/LICENSE +21 -0
  3. package/README.md +102 -0
  4. package/UPGRADING.md +91 -0
  5. package/binding.cc +1276 -0
  6. package/binding.gyp +73 -0
  7. package/binding.js +1 -0
  8. package/chained-batch.js +44 -0
  9. package/deps/rocksdb/build_version.cc +4 -0
  10. package/deps/rocksdb/rocksdb/CMakeLists.txt +1356 -0
  11. package/deps/rocksdb/rocksdb/COPYING +339 -0
  12. package/deps/rocksdb/rocksdb/LICENSE.Apache +202 -0
  13. package/deps/rocksdb/rocksdb/LICENSE.leveldb +29 -0
  14. package/deps/rocksdb/rocksdb/Makefile +2521 -0
  15. package/deps/rocksdb/rocksdb/TARGETS +2100 -0
  16. package/deps/rocksdb/rocksdb/cache/cache.cc +63 -0
  17. package/deps/rocksdb/rocksdb/cache/cache_bench.cc +381 -0
  18. package/deps/rocksdb/rocksdb/cache/cache_helpers.h +114 -0
  19. package/deps/rocksdb/rocksdb/cache/cache_test.cc +775 -0
  20. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +769 -0
  21. package/deps/rocksdb/rocksdb/cache/clock_cache.h +16 -0
  22. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +574 -0
  23. package/deps/rocksdb/rocksdb/cache/lru_cache.h +339 -0
  24. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +199 -0
  25. package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +162 -0
  26. package/deps/rocksdb/rocksdb/cache/sharded_cache.h +111 -0
  27. package/deps/rocksdb/rocksdb/cmake/RocksDBConfig.cmake.in +54 -0
  28. package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +7 -0
  29. package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +29 -0
  30. package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +29 -0
  31. package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +29 -0
  32. package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +33 -0
  33. package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +29 -0
  34. package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +29 -0
  35. package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +29 -0
  36. package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +10 -0
  37. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +108 -0
  38. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +115 -0
  39. package/deps/rocksdb/rocksdb/db/blob/blob_constants.h +16 -0
  40. package/deps/rocksdb/rocksdb/db/blob/blob_file_addition.cc +154 -0
  41. package/deps/rocksdb/rocksdb/db/blob/blob_file_addition.h +67 -0
  42. package/deps/rocksdb/rocksdb/db/blob/blob_file_addition_test.cc +206 -0
  43. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +316 -0
  44. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +91 -0
  45. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +660 -0
  46. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +99 -0
  47. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +49 -0
  48. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +268 -0
  49. package/deps/rocksdb/rocksdb/db/blob/blob_file_garbage.cc +134 -0
  50. package/deps/rocksdb/rocksdb/db/blob/blob_file_garbage.h +57 -0
  51. package/deps/rocksdb/rocksdb/db/blob/blob_file_garbage_test.cc +173 -0
  52. package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.cc +55 -0
  53. package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.h +164 -0
  54. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +423 -0
  55. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +81 -0
  56. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +771 -0
  57. package/deps/rocksdb/rocksdb/db/blob/blob_index.h +184 -0
  58. package/deps/rocksdb/rocksdb/db/blob/blob_log_format.cc +145 -0
  59. package/deps/rocksdb/rocksdb/db/blob/blob_log_format.h +148 -0
  60. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +132 -0
  61. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.h +76 -0
  62. package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.cc +168 -0
  63. package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.h +83 -0
  64. package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +307 -0
  65. package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +464 -0
  66. package/deps/rocksdb/rocksdb/db/builder.cc +358 -0
  67. package/deps/rocksdb/rocksdb/db/builder.h +95 -0
  68. package/deps/rocksdb/rocksdb/db/c.cc +5281 -0
  69. package/deps/rocksdb/rocksdb/db/c_test.c +2883 -0
  70. package/deps/rocksdb/rocksdb/db/column_family.cc +1602 -0
  71. package/deps/rocksdb/rocksdb/db/column_family.h +787 -0
  72. package/deps/rocksdb/rocksdb/db/column_family_test.cc +3427 -0
  73. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +425 -0
  74. package/deps/rocksdb/rocksdb/db/compacted_db_impl.cc +169 -0
  75. package/deps/rocksdb/rocksdb/db/compacted_db_impl.h +118 -0
  76. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +591 -0
  77. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +389 -0
  78. package/deps/rocksdb/rocksdb/db/compaction/compaction_iteration_stats.h +37 -0
  79. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +1023 -0
  80. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +353 -0
  81. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +1254 -0
  82. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +1917 -0
  83. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +208 -0
  84. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +1037 -0
  85. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +1224 -0
  86. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +1135 -0
  87. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +318 -0
  88. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +255 -0
  89. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +57 -0
  90. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +510 -0
  91. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +33 -0
  92. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +2190 -0
  93. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +1103 -0
  94. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +32 -0
  95. package/deps/rocksdb/rocksdb/db/compaction/sst_partitioner.cc +44 -0
  96. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +660 -0
  97. package/deps/rocksdb/rocksdb/db/convenience.cc +78 -0
  98. package/deps/rocksdb/rocksdb/db/corruption_test.cc +921 -0
  99. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +359 -0
  100. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +3820 -0
  101. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +1058 -0
  102. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +2128 -0
  103. package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +851 -0
  104. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +6292 -0
  105. package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +509 -0
  106. package/deps/rocksdb/rocksdb/db/db_encryption_test.cc +130 -0
  107. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +137 -0
  108. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1119 -0
  109. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +5057 -0
  110. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +2274 -0
  111. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +3421 -0
  112. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +298 -0
  113. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +151 -0
  114. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +967 -0
  115. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +1806 -0
  116. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +270 -0
  117. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +146 -0
  118. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +683 -0
  119. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +333 -0
  120. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +2024 -0
  121. package/deps/rocksdb/rocksdb/db/db_impl/db_secondary_test.cc +932 -0
  122. package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +137 -0
  123. package/deps/rocksdb/rocksdb/db/db_info_dumper.h +15 -0
  124. package/deps/rocksdb/rocksdb/db/db_inplace_update_test.cc +178 -0
  125. package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +592 -0
  126. package/deps/rocksdb/rocksdb/db/db_iter.cc +1493 -0
  127. package/deps/rocksdb/rocksdb/db/db_iter.h +390 -0
  128. package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +657 -0
  129. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +3268 -0
  130. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +3197 -0
  131. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +299 -0
  132. package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +513 -0
  133. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +329 -0
  134. package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +241 -0
  135. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +671 -0
  136. package/deps/rocksdb/rocksdb/db/db_options_test.cc +1022 -0
  137. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +1723 -0
  138. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +1694 -0
  139. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +1261 -0
  140. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +164 -0
  141. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +488 -0
  142. package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +567 -0
  143. package/deps/rocksdb/rocksdb/db/db_test.cc +6736 -0
  144. package/deps/rocksdb/rocksdb/db/db_test2.cc +5408 -0
  145. package/deps/rocksdb/rocksdb/db/db_test_util.cc +1633 -0
  146. package/deps/rocksdb/rocksdb/db/db_test_util.h +1194 -0
  147. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +2235 -0
  148. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +1780 -0
  149. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +2520 -0
  150. package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +119 -0
  151. package/deps/rocksdb/rocksdb/db/db_write_test.cc +465 -0
  152. package/deps/rocksdb/rocksdb/db/dbformat.cc +222 -0
  153. package/deps/rocksdb/rocksdb/db/dbformat.h +786 -0
  154. package/deps/rocksdb/rocksdb/db/dbformat_test.cc +206 -0
  155. package/deps/rocksdb/rocksdb/db/deletefile_test.cc +580 -0
  156. package/deps/rocksdb/rocksdb/db/error_handler.cc +726 -0
  157. package/deps/rocksdb/rocksdb/db/error_handler.h +117 -0
  158. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +2598 -0
  159. package/deps/rocksdb/rocksdb/db/event_helpers.cc +233 -0
  160. package/deps/rocksdb/rocksdb/db/event_helpers.h +57 -0
  161. package/deps/rocksdb/rocksdb/db/experimental.cc +50 -0
  162. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +1559 -0
  163. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +910 -0
  164. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +195 -0
  165. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +2936 -0
  166. package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +556 -0
  167. package/deps/rocksdb/rocksdb/db/file_indexer.cc +216 -0
  168. package/deps/rocksdb/rocksdb/db/file_indexer.h +142 -0
  169. package/deps/rocksdb/rocksdb/db/file_indexer_test.cc +350 -0
  170. package/deps/rocksdb/rocksdb/db/filename_test.cc +179 -0
  171. package/deps/rocksdb/rocksdb/db/flush_job.cc +514 -0
  172. package/deps/rocksdb/rocksdb/db/flush_job.h +169 -0
  173. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +647 -0
  174. package/deps/rocksdb/rocksdb/db/flush_scheduler.cc +86 -0
  175. package/deps/rocksdb/rocksdb/db/flush_scheduler.h +54 -0
  176. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +1023 -0
  177. package/deps/rocksdb/rocksdb/db/forward_iterator.h +163 -0
  178. package/deps/rocksdb/rocksdb/db/forward_iterator_bench.cc +377 -0
  179. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +282 -0
  180. package/deps/rocksdb/rocksdb/db/import_column_family_job.h +75 -0
  181. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +632 -0
  182. package/deps/rocksdb/rocksdb/db/internal_stats.cc +1461 -0
  183. package/deps/rocksdb/rocksdb/db/internal_stats.h +712 -0
  184. package/deps/rocksdb/rocksdb/db/job_context.h +226 -0
  185. package/deps/rocksdb/rocksdb/db/listener_test.cc +1118 -0
  186. package/deps/rocksdb/rocksdb/db/log_format.h +48 -0
  187. package/deps/rocksdb/rocksdb/db/log_reader.cc +654 -0
  188. package/deps/rocksdb/rocksdb/db/log_reader.h +192 -0
  189. package/deps/rocksdb/rocksdb/db/log_test.cc +901 -0
  190. package/deps/rocksdb/rocksdb/db/log_writer.cc +164 -0
  191. package/deps/rocksdb/rocksdb/db/log_writer.h +115 -0
  192. package/deps/rocksdb/rocksdb/db/logs_with_prep_tracker.cc +67 -0
  193. package/deps/rocksdb/rocksdb/db/logs_with_prep_tracker.h +63 -0
  194. package/deps/rocksdb/rocksdb/db/lookup_key.h +66 -0
  195. package/deps/rocksdb/rocksdb/db/malloc_stats.cc +54 -0
  196. package/deps/rocksdb/rocksdb/db/malloc_stats.h +24 -0
  197. package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +296 -0
  198. package/deps/rocksdb/rocksdb/db/memtable.cc +1169 -0
  199. package/deps/rocksdb/rocksdb/db/memtable.h +554 -0
  200. package/deps/rocksdb/rocksdb/db/memtable_list.cc +888 -0
  201. package/deps/rocksdb/rocksdb/db/memtable_list.h +438 -0
  202. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +935 -0
  203. package/deps/rocksdb/rocksdb/db/merge_context.h +134 -0
  204. package/deps/rocksdb/rocksdb/db/merge_helper.cc +421 -0
  205. package/deps/rocksdb/rocksdb/db/merge_helper.h +197 -0
  206. package/deps/rocksdb/rocksdb/db/merge_helper_test.cc +290 -0
  207. package/deps/rocksdb/rocksdb/db/merge_operator.cc +86 -0
  208. package/deps/rocksdb/rocksdb/db/merge_test.cc +608 -0
  209. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +338 -0
  210. package/deps/rocksdb/rocksdb/db/options_file_test.cc +119 -0
  211. package/deps/rocksdb/rocksdb/db/output_validator.cc +30 -0
  212. package/deps/rocksdb/rocksdb/db/output_validator.h +47 -0
  213. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +993 -0
  214. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.cc +113 -0
  215. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.h +76 -0
  216. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler_test.cc +231 -0
  217. package/deps/rocksdb/rocksdb/db/pinned_iterators_manager.h +87 -0
  218. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +1374 -0
  219. package/deps/rocksdb/rocksdb/db/pre_release_callback.h +38 -0
  220. package/deps/rocksdb/rocksdb/db/prefix_test.cc +910 -0
  221. package/deps/rocksdb/rocksdb/db/range_del_aggregator.cc +489 -0
  222. package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +446 -0
  223. package/deps/rocksdb/rocksdb/db/range_del_aggregator_bench.cc +260 -0
  224. package/deps/rocksdb/rocksdb/db/range_del_aggregator_test.cc +709 -0
  225. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +439 -0
  226. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +256 -0
  227. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter_test.cc +552 -0
  228. package/deps/rocksdb/rocksdb/db/read_callback.h +53 -0
  229. package/deps/rocksdb/rocksdb/db/repair.cc +722 -0
  230. package/deps/rocksdb/rocksdb/db/repair_test.cc +390 -0
  231. package/deps/rocksdb/rocksdb/db/snapshot_checker.h +61 -0
  232. package/deps/rocksdb/rocksdb/db/snapshot_impl.cc +26 -0
  233. package/deps/rocksdb/rocksdb/db/snapshot_impl.h +167 -0
  234. package/deps/rocksdb/rocksdb/db/table_cache.cc +704 -0
  235. package/deps/rocksdb/rocksdb/db/table_cache.h +233 -0
  236. package/deps/rocksdb/rocksdb/db/table_properties_collector.cc +75 -0
  237. package/deps/rocksdb/rocksdb/db/table_properties_collector.h +107 -0
  238. package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +517 -0
  239. package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +318 -0
  240. package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +128 -0
  241. package/deps/rocksdb/rocksdb/db/trim_history_scheduler.cc +54 -0
  242. package/deps/rocksdb/rocksdb/db/trim_history_scheduler.h +44 -0
  243. package/deps/rocksdb/rocksdb/db/version_builder.cc +1078 -0
  244. package/deps/rocksdb/rocksdb/db/version_builder.h +69 -0
  245. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +1551 -0
  246. package/deps/rocksdb/rocksdb/db/version_edit.cc +955 -0
  247. package/deps/rocksdb/rocksdb/db/version_edit.h +609 -0
  248. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +699 -0
  249. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +252 -0
  250. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +597 -0
  251. package/deps/rocksdb/rocksdb/db/version_set.cc +6333 -0
  252. package/deps/rocksdb/rocksdb/db/version_set.h +1485 -0
  253. package/deps/rocksdb/rocksdb/db/version_set_test.cc +3035 -0
  254. package/deps/rocksdb/rocksdb/db/wal_edit.cc +204 -0
  255. package/deps/rocksdb/rocksdb/db/wal_edit.h +166 -0
  256. package/deps/rocksdb/rocksdb/db/wal_edit_test.cc +214 -0
  257. package/deps/rocksdb/rocksdb/db/wal_manager.cc +517 -0
  258. package/deps/rocksdb/rocksdb/db/wal_manager.h +119 -0
  259. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +340 -0
  260. package/deps/rocksdb/rocksdb/db/write_batch.cc +2174 -0
  261. package/deps/rocksdb/rocksdb/db/write_batch_base.cc +94 -0
  262. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +250 -0
  263. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +907 -0
  264. package/deps/rocksdb/rocksdb/db/write_callback.h +27 -0
  265. package/deps/rocksdb/rocksdb/db/write_callback_test.cc +457 -0
  266. package/deps/rocksdb/rocksdb/db/write_controller.cc +128 -0
  267. package/deps/rocksdb/rocksdb/db/write_controller.h +144 -0
  268. package/deps/rocksdb/rocksdb/db/write_controller_test.cc +135 -0
  269. package/deps/rocksdb/rocksdb/db/write_thread.cc +796 -0
  270. package/deps/rocksdb/rocksdb/db/write_thread.h +433 -0
  271. package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +14 -0
  272. package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +341 -0
  273. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +520 -0
  274. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress.cc +23 -0
  275. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +337 -0
  276. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +554 -0
  277. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_filter.h +79 -0
  278. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +173 -0
  279. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.h +17 -0
  280. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +38 -0
  281. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +763 -0
  282. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +222 -0
  283. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.cc +27 -0
  284. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +428 -0
  285. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_stat.h +218 -0
  286. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +64 -0
  287. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +2430 -0
  288. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +237 -0
  289. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +343 -0
  290. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +800 -0
  291. package/deps/rocksdb/rocksdb/env/composite_env_wrapper.h +920 -0
  292. package/deps/rocksdb/rocksdb/env/env.cc +733 -0
  293. package/deps/rocksdb/rocksdb/env/env_basic_test.cc +352 -0
  294. package/deps/rocksdb/rocksdb/env/env_chroot.cc +346 -0
  295. package/deps/rocksdb/rocksdb/env/env_chroot.h +22 -0
  296. package/deps/rocksdb/rocksdb/env/env_encryption.cc +1148 -0
  297. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +137 -0
  298. package/deps/rocksdb/rocksdb/env/env_hdfs.cc +648 -0
  299. package/deps/rocksdb/rocksdb/env/env_posix.cc +514 -0
  300. package/deps/rocksdb/rocksdb/env/env_test.cc +2230 -0
  301. package/deps/rocksdb/rocksdb/env/file_system.cc +132 -0
  302. package/deps/rocksdb/rocksdb/env/file_system_tracer.cc +448 -0
  303. package/deps/rocksdb/rocksdb/env/file_system_tracer.h +415 -0
  304. package/deps/rocksdb/rocksdb/env/fs_posix.cc +1086 -0
  305. package/deps/rocksdb/rocksdb/env/io_posix.cc +1499 -0
  306. package/deps/rocksdb/rocksdb/env/io_posix.h +402 -0
  307. package/deps/rocksdb/rocksdb/env/io_posix_test.cc +140 -0
  308. package/deps/rocksdb/rocksdb/env/mock_env.cc +1066 -0
  309. package/deps/rocksdb/rocksdb/env/mock_env.h +41 -0
  310. package/deps/rocksdb/rocksdb/env/mock_env_test.cc +85 -0
  311. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +402 -0
  312. package/deps/rocksdb/rocksdb/file/delete_scheduler.h +150 -0
  313. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +717 -0
  314. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +156 -0
  315. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +99 -0
  316. package/deps/rocksdb/rocksdb/file/file_util.cc +268 -0
  317. package/deps/rocksdb/rocksdb/file/file_util.h +96 -0
  318. package/deps/rocksdb/rocksdb/file/filename.cc +473 -0
  319. package/deps/rocksdb/rocksdb/file/filename.h +182 -0
  320. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +188 -0
  321. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +315 -0
  322. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +142 -0
  323. package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +482 -0
  324. package/deps/rocksdb/rocksdb/file/read_write_util.cc +67 -0
  325. package/deps/rocksdb/rocksdb/file/read_write_util.h +34 -0
  326. package/deps/rocksdb/rocksdb/file/readahead_raf.cc +169 -0
  327. package/deps/rocksdb/rocksdb/file/readahead_raf.h +29 -0
  328. package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +237 -0
  329. package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +63 -0
  330. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +552 -0
  331. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +203 -0
  332. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +523 -0
  333. package/deps/rocksdb/rocksdb/file/writable_file_writer.h +251 -0
  334. package/deps/rocksdb/rocksdb/hdfs/env_hdfs.h +386 -0
  335. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +839 -0
  336. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +2218 -0
  337. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +294 -0
  338. package/deps/rocksdb/rocksdb/include/rocksdb/cleanable.h +71 -0
  339. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +214 -0
  340. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +98 -0
  341. package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +137 -0
  342. package/deps/rocksdb/rocksdb/include/rocksdb/compression_type.h +40 -0
  343. package/deps/rocksdb/rocksdb/include/rocksdb/concurrent_task_limiter.h +46 -0
  344. package/deps/rocksdb/rocksdb/include/rocksdb/configurable.h +359 -0
  345. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +499 -0
  346. package/deps/rocksdb/rocksdb/include/rocksdb/customizable.h +138 -0
  347. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +1697 -0
  348. package/deps/rocksdb/rocksdb/include/rocksdb/db_bench_tool.h +11 -0
  349. package/deps/rocksdb/rocksdb/include/rocksdb/db_dump_tool.h +45 -0
  350. package/deps/rocksdb/rocksdb/include/rocksdb/db_stress_tool.h +11 -0
  351. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +1671 -0
  352. package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +405 -0
  353. package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +29 -0
  354. package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +129 -0
  355. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +1472 -0
  356. package/deps/rocksdb/rocksdb/include/rocksdb/filter_policy.h +238 -0
  357. package/deps/rocksdb/rocksdb/include/rocksdb/flush_block_policy.h +61 -0
  358. package/deps/rocksdb/rocksdb/include/rocksdb/io_status.h +269 -0
  359. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +56 -0
  360. package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +128 -0
  361. package/deps/rocksdb/rocksdb/include/rocksdb/ldb_tool.h +43 -0
  362. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +556 -0
  363. package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +77 -0
  364. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +385 -0
  365. package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +257 -0
  366. package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +155 -0
  367. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +1702 -0
  368. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +237 -0
  369. package/deps/rocksdb/rocksdb/include/rocksdb/perf_level.h +35 -0
  370. package/deps/rocksdb/rocksdb/include/rocksdb/persistent_cache.h +73 -0
  371. package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +139 -0
  372. package/deps/rocksdb/rocksdb/include/rocksdb/rocksdb_namespace.h +10 -0
  373. package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +269 -0
  374. package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +103 -0
  375. package/deps/rocksdb/rocksdb/include/rocksdb/snapshot.h +48 -0
  376. package/deps/rocksdb/rocksdb/include/rocksdb/sst_dump_tool.h +19 -0
  377. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +136 -0
  378. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +47 -0
  379. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +145 -0
  380. package/deps/rocksdb/rocksdb/include/rocksdb/sst_partitioner.h +135 -0
  381. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +592 -0
  382. package/deps/rocksdb/rocksdb/include/rocksdb/stats_history.h +69 -0
  383. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +608 -0
  384. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +711 -0
  385. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +280 -0
  386. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +188 -0
  387. package/deps/rocksdb/rocksdb/include/rocksdb/threadpool.h +58 -0
  388. package/deps/rocksdb/rocksdb/include/rocksdb/trace_reader_writer.h +48 -0
  389. package/deps/rocksdb/rocksdb/include/rocksdb/transaction_log.h +121 -0
  390. package/deps/rocksdb/rocksdb/include/rocksdb/types.h +74 -0
  391. package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +86 -0
  392. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backupable_db.h +535 -0
  393. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/checkpoint.h +61 -0
  394. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/convenience.h +10 -0
  395. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/db_ttl.h +72 -0
  396. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/debug.h +49 -0
  397. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_librados.h +175 -0
  398. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_mirror.h +180 -0
  399. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/info_log_finder.h +19 -0
  400. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +288 -0
  401. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd_execute_result.h +71 -0
  402. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/leveldb_options.h +145 -0
  403. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_custom_library.h +43 -0
  404. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_util.h +55 -0
  405. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/memory_util.h +50 -0
  406. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +205 -0
  407. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +100 -0
  408. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/option_change_migration.h +19 -0
  409. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +876 -0
  410. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +128 -0
  411. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/sim_cache.h +94 -0
  412. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +504 -0
  413. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +95 -0
  414. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +626 -0
  415. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +432 -0
  416. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db_mutex.h +92 -0
  417. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/utility_db.h +34 -0
  418. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +279 -0
  419. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +16 -0
  420. package/deps/rocksdb/rocksdb/include/rocksdb/wal_filter.h +102 -0
  421. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +377 -0
  422. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch_base.h +127 -0
  423. package/deps/rocksdb/rocksdb/include/rocksdb/write_buffer_manager.h +106 -0
  424. package/deps/rocksdb/rocksdb/logging/auto_roll_logger.cc +300 -0
  425. package/deps/rocksdb/rocksdb/logging/auto_roll_logger.h +165 -0
  426. package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +684 -0
  427. package/deps/rocksdb/rocksdb/logging/env_logger.h +165 -0
  428. package/deps/rocksdb/rocksdb/logging/env_logger_test.cc +162 -0
  429. package/deps/rocksdb/rocksdb/logging/event_logger.cc +70 -0
  430. package/deps/rocksdb/rocksdb/logging/event_logger.h +203 -0
  431. package/deps/rocksdb/rocksdb/logging/event_logger_test.cc +43 -0
  432. package/deps/rocksdb/rocksdb/logging/log_buffer.cc +92 -0
  433. package/deps/rocksdb/rocksdb/logging/log_buffer.h +56 -0
  434. package/deps/rocksdb/rocksdb/logging/logging.h +68 -0
  435. package/deps/rocksdb/rocksdb/logging/posix_logger.h +185 -0
  436. package/deps/rocksdb/rocksdb/memory/allocator.h +57 -0
  437. package/deps/rocksdb/rocksdb/memory/arena.cc +233 -0
  438. package/deps/rocksdb/rocksdb/memory/arena.h +141 -0
  439. package/deps/rocksdb/rocksdb/memory/arena_test.cc +204 -0
  440. package/deps/rocksdb/rocksdb/memory/concurrent_arena.cc +47 -0
  441. package/deps/rocksdb/rocksdb/memory/concurrent_arena.h +218 -0
  442. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +206 -0
  443. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +78 -0
  444. package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator.cc +33 -0
  445. package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator.h +27 -0
  446. package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator_test.cc +102 -0
  447. package/deps/rocksdb/rocksdb/memory/memory_allocator.h +38 -0
  448. package/deps/rocksdb/rocksdb/memory/memory_usage.h +25 -0
  449. package/deps/rocksdb/rocksdb/memtable/alloc_tracker.cc +62 -0
  450. package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +844 -0
  451. package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.h +49 -0
  452. package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.cc +349 -0
  453. package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.h +44 -0
  454. package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +997 -0
  455. package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +663 -0
  456. package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +677 -0
  457. package/deps/rocksdb/rocksdb/memtable/skiplist.h +496 -0
  458. package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +388 -0
  459. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +280 -0
  460. package/deps/rocksdb/rocksdb/memtable/stl_wrappers.h +33 -0
  461. package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +301 -0
  462. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +148 -0
  463. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +203 -0
  464. package/deps/rocksdb/rocksdb/monitoring/file_read_sample.h +23 -0
  465. package/deps/rocksdb/rocksdb/monitoring/histogram.cc +287 -0
  466. package/deps/rocksdb/rocksdb/monitoring/histogram.h +149 -0
  467. package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +231 -0
  468. package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.cc +200 -0
  469. package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.h +84 -0
  470. package/deps/rocksdb/rocksdb/monitoring/in_memory_stats_history.cc +49 -0
  471. package/deps/rocksdb/rocksdb/monitoring/in_memory_stats_history.h +74 -0
  472. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.cc +71 -0
  473. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +98 -0
  474. package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +62 -0
  475. package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +60 -0
  476. package/deps/rocksdb/rocksdb/monitoring/iostats_context_test.cc +29 -0
  477. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +566 -0
  478. package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +97 -0
  479. package/deps/rocksdb/rocksdb/monitoring/perf_level.cc +28 -0
  480. package/deps/rocksdb/rocksdb/monitoring/perf_level_imp.h +18 -0
  481. package/deps/rocksdb/rocksdb/monitoring/perf_step_timer.h +79 -0
  482. package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.cc +169 -0
  483. package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.h +83 -0
  484. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +431 -0
  485. package/deps/rocksdb/rocksdb/monitoring/statistics.h +138 -0
  486. package/deps/rocksdb/rocksdb/monitoring/statistics_test.cc +47 -0
  487. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +652 -0
  488. package/deps/rocksdb/rocksdb/monitoring/thread_status_impl.cc +163 -0
  489. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +314 -0
  490. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +233 -0
  491. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater_debug.cc +43 -0
  492. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +206 -0
  493. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +134 -0
  494. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +32 -0
  495. package/deps/rocksdb/rocksdb/options/cf_options.cc +1026 -0
  496. package/deps/rocksdb/rocksdb/options/cf_options.h +308 -0
  497. package/deps/rocksdb/rocksdb/options/configurable.cc +681 -0
  498. package/deps/rocksdb/rocksdb/options/configurable_helper.h +251 -0
  499. package/deps/rocksdb/rocksdb/options/configurable_test.cc +757 -0
  500. package/deps/rocksdb/rocksdb/options/configurable_test.h +127 -0
  501. package/deps/rocksdb/rocksdb/options/customizable.cc +77 -0
  502. package/deps/rocksdb/rocksdb/options/customizable_helper.h +216 -0
  503. package/deps/rocksdb/rocksdb/options/customizable_test.cc +625 -0
  504. package/deps/rocksdb/rocksdb/options/db_options.cc +835 -0
  505. package/deps/rocksdb/rocksdb/options/db_options.h +126 -0
  506. package/deps/rocksdb/rocksdb/options/options.cc +664 -0
  507. package/deps/rocksdb/rocksdb/options/options_helper.cc +1391 -0
  508. package/deps/rocksdb/rocksdb/options/options_helper.h +118 -0
  509. package/deps/rocksdb/rocksdb/options/options_parser.cc +721 -0
  510. package/deps/rocksdb/rocksdb/options/options_parser.h +151 -0
  511. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +583 -0
  512. package/deps/rocksdb/rocksdb/options/options_test.cc +3794 -0
  513. package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +106 -0
  514. package/deps/rocksdb/rocksdb/port/lang.h +16 -0
  515. package/deps/rocksdb/rocksdb/port/likely.h +18 -0
  516. package/deps/rocksdb/rocksdb/port/malloc.h +17 -0
  517. package/deps/rocksdb/rocksdb/port/port.h +21 -0
  518. package/deps/rocksdb/rocksdb/port/port_dirent.h +44 -0
  519. package/deps/rocksdb/rocksdb/port/port_example.h +101 -0
  520. package/deps/rocksdb/rocksdb/port/port_posix.cc +266 -0
  521. package/deps/rocksdb/rocksdb/port/port_posix.h +223 -0
  522. package/deps/rocksdb/rocksdb/port/stack_trace.cc +179 -0
  523. package/deps/rocksdb/rocksdb/port/stack_trace.h +28 -0
  524. package/deps/rocksdb/rocksdb/port/sys_time.h +47 -0
  525. package/deps/rocksdb/rocksdb/port/util_logger.h +20 -0
  526. package/deps/rocksdb/rocksdb/port/win/env_default.cc +45 -0
  527. package/deps/rocksdb/rocksdb/port/win/env_win.cc +1449 -0
  528. package/deps/rocksdb/rocksdb/port/win/env_win.h +294 -0
  529. package/deps/rocksdb/rocksdb/port/win/io_win.cc +1084 -0
  530. package/deps/rocksdb/rocksdb/port/win/io_win.h +494 -0
  531. package/deps/rocksdb/rocksdb/port/win/port_win.cc +283 -0
  532. package/deps/rocksdb/rocksdb/port/win/port_win.h +411 -0
  533. package/deps/rocksdb/rocksdb/port/win/win_jemalloc.cc +79 -0
  534. package/deps/rocksdb/rocksdb/port/win/win_logger.cc +194 -0
  535. package/deps/rocksdb/rocksdb/port/win/win_logger.h +67 -0
  536. package/deps/rocksdb/rocksdb/port/win/win_thread.cc +183 -0
  537. package/deps/rocksdb/rocksdb/port/win/win_thread.h +122 -0
  538. package/deps/rocksdb/rocksdb/port/win/xpress_win.cc +221 -0
  539. package/deps/rocksdb/rocksdb/port/win/xpress_win.h +26 -0
  540. package/deps/rocksdb/rocksdb/port/xpress.h +17 -0
  541. package/deps/rocksdb/rocksdb/src.mk +631 -0
  542. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +126 -0
  543. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +57 -0
  544. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +73 -0
  545. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.h +48 -0
  546. package/deps/rocksdb/rocksdb/table/block_based/block.cc +1049 -0
  547. package/deps/rocksdb/rocksdb/table/block_based/block.h +720 -0
  548. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +348 -0
  549. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.h +119 -0
  550. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block_test.cc +434 -0
  551. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +1835 -0
  552. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +193 -0
  553. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +839 -0
  554. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +95 -0
  555. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +383 -0
  556. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +251 -0
  557. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +3563 -0
  558. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +681 -0
  559. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +190 -0
  560. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +347 -0
  561. package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +201 -0
  562. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +78 -0
  563. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +66 -0
  564. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +32 -0
  565. package/deps/rocksdb/rocksdb/table/block_based/block_prefix_index.cc +232 -0
  566. package/deps/rocksdb/rocksdb/table/block_based/block_prefix_index.h +66 -0
  567. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +623 -0
  568. package/deps/rocksdb/rocksdb/table/block_based/block_type.h +30 -0
  569. package/deps/rocksdb/rocksdb/table/block_based/cachable_entry.h +220 -0
  570. package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.cc +59 -0
  571. package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.h +25 -0
  572. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index.cc +93 -0
  573. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index.h +136 -0
  574. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +717 -0
  575. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +180 -0
  576. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +102 -0
  577. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +55 -0
  578. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +1407 -0
  579. package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +168 -0
  580. package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +88 -0
  581. package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.h +41 -0
  582. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +344 -0
  583. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +139 -0
  584. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +333 -0
  585. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +147 -0
  586. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.h +49 -0
  587. package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +248 -0
  588. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +444 -0
  589. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +54 -0
  590. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +85 -0
  591. package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +56 -0
  592. package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.cc +22 -0
  593. package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.h +40 -0
  594. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +521 -0
  595. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +144 -0
  596. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +424 -0
  597. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +163 -0
  598. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.h +142 -0
  599. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +186 -0
  600. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.h +51 -0
  601. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +64 -0
  602. package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +38 -0
  603. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +120 -0
  604. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +59 -0
  605. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +324 -0
  606. package/deps/rocksdb/rocksdb/table/block_fetcher.h +129 -0
  607. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +534 -0
  608. package/deps/rocksdb/rocksdb/table/cleanable_test.cc +277 -0
  609. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +543 -0
  610. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +136 -0
  611. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +663 -0
  612. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.cc +107 -0
  613. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.h +81 -0
  614. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +404 -0
  615. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.h +101 -0
  616. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +585 -0
  617. package/deps/rocksdb/rocksdb/table/format.cc +422 -0
  618. package/deps/rocksdb/rocksdb/table/format.h +348 -0
  619. package/deps/rocksdb/rocksdb/table/get_context.cc +408 -0
  620. package/deps/rocksdb/rocksdb/table/get_context.h +212 -0
  621. package/deps/rocksdb/rocksdb/table/internal_iterator.h +205 -0
  622. package/deps/rocksdb/rocksdb/table/iter_heap.h +42 -0
  623. package/deps/rocksdb/rocksdb/table/iterator.cc +210 -0
  624. package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +180 -0
  625. package/deps/rocksdb/rocksdb/table/merger_test.cc +180 -0
  626. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +481 -0
  627. package/deps/rocksdb/rocksdb/table/merging_iterator.h +64 -0
  628. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +541 -0
  629. package/deps/rocksdb/rocksdb/table/meta_blocks.h +154 -0
  630. package/deps/rocksdb/rocksdb/table/mock_table.cc +328 -0
  631. package/deps/rocksdb/rocksdb/table/mock_table.h +89 -0
  632. package/deps/rocksdb/rocksdb/table/multiget_context.h +282 -0
  633. package/deps/rocksdb/rocksdb/table/persistent_cache_helper.cc +116 -0
  634. package/deps/rocksdb/rocksdb/table/persistent_cache_helper.h +44 -0
  635. package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +34 -0
  636. package/deps/rocksdb/rocksdb/table/plain/plain_table_bloom.cc +78 -0
  637. package/deps/rocksdb/rocksdb/table/plain/plain_table_bloom.h +135 -0
  638. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +332 -0
  639. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +153 -0
  640. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +263 -0
  641. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.h +182 -0
  642. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +211 -0
  643. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +249 -0
  644. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +506 -0
  645. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.h +201 -0
  646. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +781 -0
  647. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +247 -0
  648. package/deps/rocksdb/rocksdb/table/scoped_arena_iterator.h +61 -0
  649. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +502 -0
  650. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +96 -0
  651. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +98 -0
  652. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +228 -0
  653. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +340 -0
  654. package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +94 -0
  655. package/deps/rocksdb/rocksdb/table/table_builder.h +203 -0
  656. package/deps/rocksdb/rocksdb/table/table_factory.cc +38 -0
  657. package/deps/rocksdb/rocksdb/table/table_properties.cc +300 -0
  658. package/deps/rocksdb/rocksdb/table/table_properties_internal.h +30 -0
  659. package/deps/rocksdb/rocksdb/table/table_reader.h +147 -0
  660. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +347 -0
  661. package/deps/rocksdb/rocksdb/table/table_reader_caller.h +39 -0
  662. package/deps/rocksdb/rocksdb/table/table_test.cc +4769 -0
  663. package/deps/rocksdb/rocksdb/table/two_level_iterator.cc +215 -0
  664. package/deps/rocksdb/rocksdb/table/two_level_iterator.h +43 -0
  665. package/deps/rocksdb/rocksdb/test_util/mock_time_env.cc +38 -0
  666. package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +74 -0
  667. package/deps/rocksdb/rocksdb/test_util/sync_point.cc +93 -0
  668. package/deps/rocksdb/rocksdb/test_util/sync_point.h +161 -0
  669. package/deps/rocksdb/rocksdb/test_util/sync_point_impl.cc +129 -0
  670. package/deps/rocksdb/rocksdb/test_util/sync_point_impl.h +74 -0
  671. package/deps/rocksdb/rocksdb/test_util/testharness.cc +56 -0
  672. package/deps/rocksdb/rocksdb/test_util/testharness.h +53 -0
  673. package/deps/rocksdb/rocksdb/test_util/testutil.cc +566 -0
  674. package/deps/rocksdb/rocksdb/test_util/testutil.h +887 -0
  675. package/deps/rocksdb/rocksdb/test_util/testutil_test.cc +43 -0
  676. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +388 -0
  677. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +132 -0
  678. package/deps/rocksdb/rocksdb/third-party/folly/folly/CPortability.h +27 -0
  679. package/deps/rocksdb/rocksdb/third-party/folly/folly/ConstexprMath.h +45 -0
  680. package/deps/rocksdb/rocksdb/third-party/folly/folly/Indestructible.h +166 -0
  681. package/deps/rocksdb/rocksdb/third-party/folly/folly/Optional.h +570 -0
  682. package/deps/rocksdb/rocksdb/third-party/folly/folly/Portability.h +92 -0
  683. package/deps/rocksdb/rocksdb/third-party/folly/folly/ScopeGuard.h +54 -0
  684. package/deps/rocksdb/rocksdb/third-party/folly/folly/Traits.h +152 -0
  685. package/deps/rocksdb/rocksdb/third-party/folly/folly/Unit.h +59 -0
  686. package/deps/rocksdb/rocksdb/third-party/folly/folly/Utility.h +141 -0
  687. package/deps/rocksdb/rocksdb/third-party/folly/folly/chrono/Hardware.h +33 -0
  688. package/deps/rocksdb/rocksdb/third-party/folly/folly/container/Array.h +74 -0
  689. package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex-inl.h +117 -0
  690. package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex.cpp +263 -0
  691. package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex.h +96 -0
  692. package/deps/rocksdb/rocksdb/third-party/folly/folly/functional/Invoke.h +40 -0
  693. package/deps/rocksdb/rocksdb/third-party/folly/folly/hash/Hash.h +29 -0
  694. package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Align.h +144 -0
  695. package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Bits.h +30 -0
  696. package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Launder.h +51 -0
  697. package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/Asm.h +28 -0
  698. package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/SysSyscall.h +10 -0
  699. package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/SysTypes.h +26 -0
  700. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification-inl.h +138 -0
  701. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification.cpp +23 -0
  702. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification.h +57 -0
  703. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicUtil-inl.h +260 -0
  704. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicUtil.h +52 -0
  705. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/Baton.h +328 -0
  706. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex-inl.h +1703 -0
  707. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex.cpp +16 -0
  708. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex.h +304 -0
  709. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutexSpecializations.h +39 -0
  710. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/ParkingLot.cpp +26 -0
  711. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/ParkingLot.h +318 -0
  712. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/WaitOptions.cpp +12 -0
  713. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/WaitOptions.h +57 -0
  714. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/InlineFunctionRef.h +219 -0
  715. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable-inl.h +207 -0
  716. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable.h +164 -0
  717. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/Sleeper.h +57 -0
  718. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/Spin.h +77 -0
  719. package/deps/rocksdb/rocksdb/third-party/gcc/ppc-asm.h +390 -0
  720. package/deps/rocksdb/rocksdb/thirdparty.inc +268 -0
  721. package/deps/rocksdb/rocksdb/tools/CMakeLists.txt +30 -0
  722. package/deps/rocksdb/rocksdb/tools/blob_dump.cc +110 -0
  723. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/__init__.py +2 -0
  724. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim.py +2000 -0
  725. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim.sh +156 -0
  726. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim_test.py +734 -0
  727. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +2307 -0
  728. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.h +395 -0
  729. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_plot.py +721 -0
  730. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +719 -0
  731. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_tool.cc +25 -0
  732. package/deps/rocksdb/rocksdb/tools/db_bench.cc +21 -0
  733. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +7416 -0
  734. package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +328 -0
  735. package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +130 -0
  736. package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +297 -0
  737. package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +259 -0
  738. package/deps/rocksdb/rocksdb/tools/dump/rocksdb_dump.cc +63 -0
  739. package/deps/rocksdb/rocksdb/tools/dump/rocksdb_undump.cc +62 -0
  740. package/deps/rocksdb/rocksdb/tools/io_tracer_parser.cc +25 -0
  741. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +187 -0
  742. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_tool.cc +120 -0
  743. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_tool.h +40 -0
  744. package/deps/rocksdb/rocksdb/tools/ldb.cc +21 -0
  745. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +3609 -0
  746. package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +665 -0
  747. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +746 -0
  748. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +159 -0
  749. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +221 -0
  750. package/deps/rocksdb/rocksdb/tools/sst_dump.cc +20 -0
  751. package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +427 -0
  752. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +541 -0
  753. package/deps/rocksdb/rocksdb/tools/trace_analyzer.cc +25 -0
  754. package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +752 -0
  755. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +2001 -0
  756. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.h +292 -0
  757. package/deps/rocksdb/rocksdb/tools/write_stress.cc +305 -0
  758. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.cc +496 -0
  759. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +294 -0
  760. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer_test.cc +379 -0
  761. package/deps/rocksdb/rocksdb/trace_replay/io_tracer.cc +229 -0
  762. package/deps/rocksdb/rocksdb/trace_replay/io_tracer.h +174 -0
  763. package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +215 -0
  764. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +491 -0
  765. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.h +195 -0
  766. package/deps/rocksdb/rocksdb/util/aligned_buffer.h +255 -0
  767. package/deps/rocksdb/rocksdb/util/autovector.h +367 -0
  768. package/deps/rocksdb/rocksdb/util/autovector_test.cc +330 -0
  769. package/deps/rocksdb/rocksdb/util/bloom_impl.h +485 -0
  770. package/deps/rocksdb/rocksdb/util/bloom_test.cc +1191 -0
  771. package/deps/rocksdb/rocksdb/util/build_version.cc.in +5 -0
  772. package/deps/rocksdb/rocksdb/util/build_version.h +15 -0
  773. package/deps/rocksdb/rocksdb/util/cast_util.h +20 -0
  774. package/deps/rocksdb/rocksdb/util/channel.h +67 -0
  775. package/deps/rocksdb/rocksdb/util/coding.cc +89 -0
  776. package/deps/rocksdb/rocksdb/util/coding.h +419 -0
  777. package/deps/rocksdb/rocksdb/util/coding_lean.h +101 -0
  778. package/deps/rocksdb/rocksdb/util/coding_test.cc +217 -0
  779. package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +92 -0
  780. package/deps/rocksdb/rocksdb/util/comparator.cc +219 -0
  781. package/deps/rocksdb/rocksdb/util/compression.h +1529 -0
  782. package/deps/rocksdb/rocksdb/util/compression_context_cache.cc +108 -0
  783. package/deps/rocksdb/rocksdb/util/compression_context_cache.h +47 -0
  784. package/deps/rocksdb/rocksdb/util/concurrent_task_limiter_impl.cc +67 -0
  785. package/deps/rocksdb/rocksdb/util/concurrent_task_limiter_impl.h +67 -0
  786. package/deps/rocksdb/rocksdb/util/core_local.h +83 -0
  787. package/deps/rocksdb/rocksdb/util/crc32c.cc +1283 -0
  788. package/deps/rocksdb/rocksdb/util/crc32c.h +51 -0
  789. package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +169 -0
  790. package/deps/rocksdb/rocksdb/util/crc32c_arm64.h +50 -0
  791. package/deps/rocksdb/rocksdb/util/crc32c_ppc.c +94 -0
  792. package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +19 -0
  793. package/deps/rocksdb/rocksdb/util/crc32c_ppc_asm.S +756 -0
  794. package/deps/rocksdb/rocksdb/util/crc32c_ppc_constants.h +900 -0
  795. package/deps/rocksdb/rocksdb/util/crc32c_test.cc +180 -0
  796. package/deps/rocksdb/rocksdb/util/defer.h +52 -0
  797. package/deps/rocksdb/rocksdb/util/defer_test.cc +39 -0
  798. package/deps/rocksdb/rocksdb/util/duplicate_detector.h +68 -0
  799. package/deps/rocksdb/rocksdb/util/dynamic_bloom.cc +70 -0
  800. package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +214 -0
  801. package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +323 -0
  802. package/deps/rocksdb/rocksdb/util/fastrange.h +112 -0
  803. package/deps/rocksdb/rocksdb/util/file_checksum_helper.cc +136 -0
  804. package/deps/rocksdb/rocksdb/util/file_checksum_helper.h +98 -0
  805. package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +449 -0
  806. package/deps/rocksdb/rocksdb/util/filelock_test.cc +152 -0
  807. package/deps/rocksdb/rocksdb/util/filter_bench.cc +781 -0
  808. package/deps/rocksdb/rocksdb/util/gflags_compat.h +20 -0
  809. package/deps/rocksdb/rocksdb/util/hash.cc +83 -0
  810. package/deps/rocksdb/rocksdb/util/hash.h +107 -0
  811. package/deps/rocksdb/rocksdb/util/hash_map.h +67 -0
  812. package/deps/rocksdb/rocksdb/util/hash_test.cc +593 -0
  813. package/deps/rocksdb/rocksdb/util/heap.h +166 -0
  814. package/deps/rocksdb/rocksdb/util/heap_test.cc +139 -0
  815. package/deps/rocksdb/rocksdb/util/kv_map.h +33 -0
  816. package/deps/rocksdb/rocksdb/util/log_write_bench.cc +86 -0
  817. package/deps/rocksdb/rocksdb/util/math.h +186 -0
  818. package/deps/rocksdb/rocksdb/util/math128.h +298 -0
  819. package/deps/rocksdb/rocksdb/util/murmurhash.cc +191 -0
  820. package/deps/rocksdb/rocksdb/util/murmurhash.h +42 -0
  821. package/deps/rocksdb/rocksdb/util/mutexlock.h +186 -0
  822. package/deps/rocksdb/rocksdb/util/ppc-opcode.h +27 -0
  823. package/deps/rocksdb/rocksdb/util/random.cc +56 -0
  824. package/deps/rocksdb/rocksdb/util/random.h +186 -0
  825. package/deps/rocksdb/rocksdb/util/random_test.cc +105 -0
  826. package/deps/rocksdb/rocksdb/util/rate_limiter.cc +340 -0
  827. package/deps/rocksdb/rocksdb/util/rate_limiter.h +113 -0
  828. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +251 -0
  829. package/deps/rocksdb/rocksdb/util/repeatable_thread.h +151 -0
  830. package/deps/rocksdb/rocksdb/util/repeatable_thread_test.cc +107 -0
  831. package/deps/rocksdb/rocksdb/util/ribbon_alg.h +1201 -0
  832. package/deps/rocksdb/rocksdb/util/ribbon_impl.h +1062 -0
  833. package/deps/rocksdb/rocksdb/util/ribbon_test.cc +931 -0
  834. package/deps/rocksdb/rocksdb/util/set_comparator.h +22 -0
  835. package/deps/rocksdb/rocksdb/util/slice.cc +243 -0
  836. package/deps/rocksdb/rocksdb/util/slice_test.cc +163 -0
  837. package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +153 -0
  838. package/deps/rocksdb/rocksdb/util/status.cc +149 -0
  839. package/deps/rocksdb/rocksdb/util/stderr_logger.h +31 -0
  840. package/deps/rocksdb/rocksdb/util/stop_watch.h +118 -0
  841. package/deps/rocksdb/rocksdb/util/string_util.cc +422 -0
  842. package/deps/rocksdb/rocksdb/util/string_util.h +144 -0
  843. package/deps/rocksdb/rocksdb/util/thread_list_test.cc +354 -0
  844. package/deps/rocksdb/rocksdb/util/thread_local.cc +554 -0
  845. package/deps/rocksdb/rocksdb/util/thread_local.h +101 -0
  846. package/deps/rocksdb/rocksdb/util/thread_local_test.cc +583 -0
  847. package/deps/rocksdb/rocksdb/util/thread_operation.h +121 -0
  848. package/deps/rocksdb/rocksdb/util/threadpool_imp.cc +506 -0
  849. package/deps/rocksdb/rocksdb/util/threadpool_imp.h +112 -0
  850. package/deps/rocksdb/rocksdb/util/timer.h +331 -0
  851. package/deps/rocksdb/rocksdb/util/timer_queue.h +230 -0
  852. package/deps/rocksdb/rocksdb/util/timer_queue_test.cc +72 -0
  853. package/deps/rocksdb/rocksdb/util/timer_test.cc +399 -0
  854. package/deps/rocksdb/rocksdb/util/user_comparator_wrapper.h +80 -0
  855. package/deps/rocksdb/rocksdb/util/vector_iterator.h +101 -0
  856. package/deps/rocksdb/rocksdb/util/work_queue.h +148 -0
  857. package/deps/rocksdb/rocksdb/util/work_queue_test.cc +268 -0
  858. package/deps/rocksdb/rocksdb/util/xxh3p.h +1392 -0
  859. package/deps/rocksdb/rocksdb/util/xxhash.cc +1158 -0
  860. package/deps/rocksdb/rocksdb/util/xxhash.h +598 -0
  861. package/deps/rocksdb/rocksdb/utilities/backupable/backupable_db.cc +2354 -0
  862. package/deps/rocksdb/rocksdb/utilities/backupable/backupable_db_test.cc +2955 -0
  863. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +488 -0
  864. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +199 -0
  865. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +112 -0
  866. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +266 -0
  867. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_gc_stats.h +52 -0
  868. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +2167 -0
  869. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +500 -0
  870. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +113 -0
  871. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_iterator.h +147 -0
  872. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +66 -0
  873. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +2386 -0
  874. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +281 -0
  875. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.h +58 -0
  876. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +314 -0
  877. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +244 -0
  878. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.cc +47 -0
  879. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.h +42 -0
  880. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_format_test.cc +375 -0
  881. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +327 -0
  882. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_row_merge_test.cc +114 -0
  883. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_serialize_test.cc +187 -0
  884. package/deps/rocksdb/rocksdb/utilities/cassandra/format.cc +390 -0
  885. package/deps/rocksdb/rocksdb/utilities/cassandra/format.h +184 -0
  886. package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.cc +67 -0
  887. package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.h +44 -0
  888. package/deps/rocksdb/rocksdb/utilities/cassandra/serialize.h +75 -0
  889. package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.cc +72 -0
  890. package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.h +43 -0
  891. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +588 -0
  892. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.h +82 -0
  893. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +821 -0
  894. package/deps/rocksdb/rocksdb/utilities/compaction_filters/layered_compaction_filter_base.h +37 -0
  895. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +29 -0
  896. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.h +27 -0
  897. package/deps/rocksdb/rocksdb/utilities/convenience/info_log_finder.cc +25 -0
  898. package/deps/rocksdb/rocksdb/utilities/debug.cc +82 -0
  899. package/deps/rocksdb/rocksdb/utilities/env_librados.cc +1497 -0
  900. package/deps/rocksdb/rocksdb/utilities/env_librados_test.cc +1146 -0
  901. package/deps/rocksdb/rocksdb/utilities/env_mirror.cc +262 -0
  902. package/deps/rocksdb/rocksdb/utilities/env_mirror_test.cc +223 -0
  903. package/deps/rocksdb/rocksdb/utilities/env_timed.cc +145 -0
  904. package/deps/rocksdb/rocksdb/utilities/env_timed_test.cc +44 -0
  905. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.cc +490 -0
  906. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +242 -0
  907. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +581 -0
  908. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +437 -0
  909. package/deps/rocksdb/rocksdb/utilities/leveldb_options/leveldb_options.cc +56 -0
  910. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +275 -0
  911. package/deps/rocksdb/rocksdb/utilities/memory/memory_util.cc +52 -0
  912. package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.cc +59 -0
  913. package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.h +39 -0
  914. package/deps/rocksdb/rocksdb/utilities/merge_operators/max.cc +77 -0
  915. package/deps/rocksdb/rocksdb/utilities/merge_operators/put.cc +83 -0
  916. package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.cc +97 -0
  917. package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.h +38 -0
  918. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.cc +59 -0
  919. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.h +31 -0
  920. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.cc +117 -0
  921. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.h +49 -0
  922. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +598 -0
  923. package/deps/rocksdb/rocksdb/utilities/merge_operators/uint64add.cc +69 -0
  924. package/deps/rocksdb/rocksdb/utilities/merge_operators.h +55 -0
  925. package/deps/rocksdb/rocksdb/utilities/object_registry.cc +87 -0
  926. package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +174 -0
  927. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +168 -0
  928. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +431 -0
  929. package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +159 -0
  930. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +655 -0
  931. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +425 -0
  932. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +156 -0
  933. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +609 -0
  934. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +296 -0
  935. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file_buffer.h +127 -0
  936. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.cc +86 -0
  937. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +125 -0
  938. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table.h +238 -0
  939. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_bench.cc +308 -0
  940. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_evictable.h +168 -0
  941. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_test.cc +160 -0
  942. package/deps/rocksdb/rocksdb/utilities/persistent_cache/lrulist.h +174 -0
  943. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_bench.cc +360 -0
  944. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +456 -0
  945. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.h +286 -0
  946. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.cc +167 -0
  947. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +339 -0
  948. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_util.h +67 -0
  949. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +140 -0
  950. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +142 -0
  951. package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator.cc +285 -0
  952. package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator.h +231 -0
  953. package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator_test.cc +494 -0
  954. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +356 -0
  955. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +224 -0
  956. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +122 -0
  957. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.h +72 -0
  958. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector_test.cc +244 -0
  959. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +125 -0
  960. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.h +48 -0
  961. package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.cc +29 -0
  962. package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.h +82 -0
  963. package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_tracker.h +209 -0
  964. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +720 -0
  965. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +223 -0
  966. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +181 -0
  967. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +319 -0
  968. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +270 -0
  969. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.h +99 -0
  970. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_lock_manager.h +30 -0
  971. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +306 -0
  972. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/COPYING.AGPLv3 +661 -0
  973. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/COPYING.APACHEv2 +174 -0
  974. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/COPYING.GPLv2 +339 -0
  975. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/db.h +76 -0
  976. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/ft/comparator.h +138 -0
  977. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/ft/ft-status.h +102 -0
  978. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/concurrent_tree.cc +139 -0
  979. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/concurrent_tree.h +174 -0
  980. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/keyrange.cc +222 -0
  981. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/keyrange.h +141 -0
  982. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc +525 -0
  983. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.h +253 -0
  984. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc +1007 -0
  985. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.h +560 -0
  986. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/manager.cc +527 -0
  987. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/range_buffer.cc +265 -0
  988. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/range_buffer.h +178 -0
  989. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/treenode.cc +520 -0
  990. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/treenode.h +302 -0
  991. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/txnid_set.cc +120 -0
  992. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/txnid_set.h +92 -0
  993. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/wfg.cc +213 -0
  994. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/wfg.h +124 -0
  995. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/memory.h +215 -0
  996. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_assert_subst.h +39 -0
  997. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_atomic.h +130 -0
  998. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_external_pthread.h +82 -0
  999. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_instrumentation.h +286 -0
  1000. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_portability.h +87 -0
  1001. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_pthread.h +520 -0
  1002. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_race_tools.h +179 -0
  1003. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +172 -0
  1004. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/txn_subst.h +27 -0
  1005. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/standalone_port.cc +132 -0
  1006. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc +153 -0
  1007. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/dbt.h +98 -0
  1008. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/growable_array.h +144 -0
  1009. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/memarena.cc +201 -0
  1010. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/memarena.h +141 -0
  1011. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/omt.h +794 -0
  1012. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/omt_impl.h +1295 -0
  1013. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/partitioned_counter.h +165 -0
  1014. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/status.h +76 -0
  1015. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +479 -0
  1016. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.h +130 -0
  1017. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.cc +156 -0
  1018. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.h +146 -0
  1019. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +196 -0
  1020. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.h +101 -0
  1021. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +111 -0
  1022. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +87 -0
  1023. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +1418 -0
  1024. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +752 -0
  1025. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +232 -0
  1026. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +628 -0
  1027. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.h +228 -0
  1028. package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +49 -0
  1029. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +678 -0
  1030. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +373 -0
  1031. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.cc +135 -0
  1032. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.h +26 -0
  1033. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +6350 -0
  1034. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +522 -0
  1035. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +188 -0
  1036. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.h +80 -0
  1037. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +3531 -0
  1038. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +483 -0
  1039. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +119 -0
  1040. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +999 -0
  1041. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +1109 -0
  1042. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +786 -0
  1043. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +1039 -0
  1044. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +341 -0
  1045. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +470 -0
  1046. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.h +108 -0
  1047. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +332 -0
  1048. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +353 -0
  1049. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +703 -0
  1050. package/deps/rocksdb/rocksdb/utilities/util_merge_operators_test.cc +99 -0
  1051. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +617 -0
  1052. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +345 -0
  1053. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +569 -0
  1054. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +1867 -0
  1055. package/deps/rocksdb/rocksdb.gyp +475 -0
  1056. package/deps/snappy/freebsd/config.h +135 -0
  1057. package/deps/snappy/freebsd/snappy-stubs-public.h +100 -0
  1058. package/deps/snappy/linux/config.h +135 -0
  1059. package/deps/snappy/linux/snappy-stubs-public.h +100 -0
  1060. package/deps/snappy/mac/config.h +137 -0
  1061. package/deps/snappy/mac/snappy-stubs-public.h +100 -0
  1062. package/deps/snappy/openbsd/config.h +135 -0
  1063. package/deps/snappy/openbsd/snappy-stubs-public.h +100 -0
  1064. package/deps/snappy/snappy-1.1.7/COPYING +54 -0
  1065. package/deps/snappy/snappy-1.1.7/cmake/SnappyConfig.cmake +1 -0
  1066. package/deps/snappy/snappy-1.1.7/cmake/config.h.in +62 -0
  1067. package/deps/snappy/snappy-1.1.7/snappy-c.cc +90 -0
  1068. package/deps/snappy/snappy-1.1.7/snappy-c.h +138 -0
  1069. package/deps/snappy/snappy-1.1.7/snappy-internal.h +224 -0
  1070. package/deps/snappy/snappy-1.1.7/snappy-sinksource.cc +104 -0
  1071. package/deps/snappy/snappy-1.1.7/snappy-sinksource.h +182 -0
  1072. package/deps/snappy/snappy-1.1.7/snappy-stubs-internal.cc +42 -0
  1073. package/deps/snappy/snappy-1.1.7/snappy-stubs-internal.h +561 -0
  1074. package/deps/snappy/snappy-1.1.7/snappy-stubs-public.h.in +94 -0
  1075. package/deps/snappy/snappy-1.1.7/snappy-test.cc +612 -0
  1076. package/deps/snappy/snappy-1.1.7/snappy-test.h +573 -0
  1077. package/deps/snappy/snappy-1.1.7/snappy.cc +1515 -0
  1078. package/deps/snappy/snappy-1.1.7/snappy.h +203 -0
  1079. package/deps/snappy/snappy-1.1.7/snappy_unittest.cc +1410 -0
  1080. package/deps/snappy/snappy.gyp +90 -0
  1081. package/deps/snappy/solaris/config.h +135 -0
  1082. package/deps/snappy/solaris/snappy-stubs-public.h +100 -0
  1083. package/deps/snappy/win32/config.h +29 -0
  1084. package/deps/snappy/win32/snappy-stubs-public.h +100 -0
  1085. package/iterator.js +55 -0
  1086. package/leveldown.js +113 -0
  1087. package/package-lock.json +23687 -0
  1088. package/package.json +70 -0
@@ -0,0 +1,1529 @@
1
+ // Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
2
+ // This source code is licensed under both the GPLv2 (found in the
3
+ // COPYING file in the root directory) and Apache 2.0 License
4
+ // (found in the LICENSE.Apache file in the root directory).
5
+ //
6
+ // Copyright (c) 2011 The LevelDB Authors. All rights reserved.
7
+ // Use of this source code is governed by a BSD-style license that can be
8
+ // found in the LICENSE file. See the AUTHORS file for names of contributors.
9
+ //
10
+ #pragma once
11
+
12
+ #include <algorithm>
13
+ #include <limits>
14
+ #ifdef ROCKSDB_MALLOC_USABLE_SIZE
15
+ #ifdef OS_FREEBSD
16
+ #include <malloc_np.h>
17
+ #else // OS_FREEBSD
18
+ #include <malloc.h>
19
+ #endif // OS_FREEBSD
20
+ #endif // ROCKSDB_MALLOC_USABLE_SIZE
21
+ #include <string>
22
+
23
+ #include "memory/memory_allocator.h"
24
+ #include "rocksdb/options.h"
25
+ #include "rocksdb/table.h"
26
+ #include "test_util/sync_point.h"
27
+ #include "util/coding.h"
28
+ #include "util/compression_context_cache.h"
29
+ #include "util/string_util.h"
30
+
31
+ #ifdef SNAPPY
32
+ #include <snappy.h>
33
+ #endif
34
+
35
+ #ifdef ZLIB
36
+ #include <zlib.h>
37
+ #endif
38
+
39
+ #ifdef BZIP2
40
+ #include <bzlib.h>
41
+ #endif
42
+
43
+ #if defined(LZ4)
44
+ #include <lz4.h>
45
+ #include <lz4hc.h>
46
+ #endif
47
+
48
+ #if defined(ZSTD)
49
+ #include <zstd.h>
50
+ #if ZSTD_VERSION_NUMBER >= 10103 // v1.1.3+
51
+ #include <zdict.h>
52
+ #endif // ZSTD_VERSION_NUMBER >= 10103
53
+ namespace ROCKSDB_NAMESPACE {
54
+ // Need this for the context allocation override
55
+ // On windows we need to do this explicitly
56
+ #if (ZSTD_VERSION_NUMBER >= 500)
57
+ #if defined(ROCKSDB_JEMALLOC) && defined(OS_WIN) && \
58
+ defined(ZSTD_STATIC_LINKING_ONLY)
59
+ #define ROCKSDB_ZSTD_CUSTOM_MEM
60
+ namespace port {
61
+ ZSTD_customMem GetJeZstdAllocationOverrides();
62
+ } // namespace port
63
+ #endif // defined(ROCKSDB_JEMALLOC) && defined(OS_WIN) &&
64
+ // defined(ZSTD_STATIC_LINKING_ONLY)
65
+
66
+ // We require `ZSTD_sizeof_DDict` and `ZSTD_createDDict_byReference` to use
67
+ // `ZSTD_DDict`. The former was introduced in v1.0.0 and the latter was
68
+ // introduced in v1.1.3. But an important bug fix for `ZSTD_sizeof_DDict` came
69
+ // in v1.1.4, so that is the version we require. As of today's latest version
70
+ // (v1.3.8), they are both still in the experimental API, which means they are
71
+ // only exported when the compiler flag `ZSTD_STATIC_LINKING_ONLY` is set.
72
+ #if defined(ZSTD_STATIC_LINKING_ONLY) && ZSTD_VERSION_NUMBER >= 10104
73
+ #define ROCKSDB_ZSTD_DDICT
74
+ #endif // defined(ZSTD_STATIC_LINKING_ONLY) && ZSTD_VERSION_NUMBER >= 10104
75
+
76
+ // Cached data represents a portion that can be re-used
77
+ // If, in the future we have more than one native context to
78
+ // cache we can arrange this as a tuple
79
+ class ZSTDUncompressCachedData {
80
+ public:
81
+ using ZSTDNativeContext = ZSTD_DCtx*;
82
+ ZSTDUncompressCachedData() {}
83
+ // Init from cache
84
+ ZSTDUncompressCachedData(const ZSTDUncompressCachedData& o) = delete;
85
+ ZSTDUncompressCachedData& operator=(const ZSTDUncompressCachedData&) = delete;
86
+ ZSTDUncompressCachedData(ZSTDUncompressCachedData&& o) ROCKSDB_NOEXCEPT
87
+ : ZSTDUncompressCachedData() {
88
+ *this = std::move(o);
89
+ }
90
+ ZSTDUncompressCachedData& operator=(ZSTDUncompressCachedData&& o)
91
+ ROCKSDB_NOEXCEPT {
92
+ assert(zstd_ctx_ == nullptr);
93
+ std::swap(zstd_ctx_, o.zstd_ctx_);
94
+ std::swap(cache_idx_, o.cache_idx_);
95
+ return *this;
96
+ }
97
+ ZSTDNativeContext Get() const { return zstd_ctx_; }
98
+ int64_t GetCacheIndex() const { return cache_idx_; }
99
+ void CreateIfNeeded() {
100
+ if (zstd_ctx_ == nullptr) {
101
+ #ifdef ROCKSDB_ZSTD_CUSTOM_MEM
102
+ zstd_ctx_ =
103
+ ZSTD_createDCtx_advanced(port::GetJeZstdAllocationOverrides());
104
+ #else // ROCKSDB_ZSTD_CUSTOM_MEM
105
+ zstd_ctx_ = ZSTD_createDCtx();
106
+ #endif // ROCKSDB_ZSTD_CUSTOM_MEM
107
+ cache_idx_ = -1;
108
+ }
109
+ }
110
+ void InitFromCache(const ZSTDUncompressCachedData& o, int64_t idx) {
111
+ zstd_ctx_ = o.zstd_ctx_;
112
+ cache_idx_ = idx;
113
+ }
114
+ ~ZSTDUncompressCachedData() {
115
+ if (zstd_ctx_ != nullptr && cache_idx_ == -1) {
116
+ ZSTD_freeDCtx(zstd_ctx_);
117
+ }
118
+ }
119
+
120
+ private:
121
+ ZSTDNativeContext zstd_ctx_ = nullptr;
122
+ int64_t cache_idx_ = -1; // -1 means this instance owns the context
123
+ };
124
+ #endif // (ZSTD_VERSION_NUMBER >= 500)
125
+ } // namespace ROCKSDB_NAMESPACE
126
+ #endif // ZSTD
127
+
128
+ #if !(defined ZSTD) || !(ZSTD_VERSION_NUMBER >= 500)
129
+ namespace ROCKSDB_NAMESPACE {
130
+ class ZSTDUncompressCachedData {
131
+ void* padding; // unused
132
+ public:
133
+ using ZSTDNativeContext = void*;
134
+ ZSTDUncompressCachedData() {}
135
+ ZSTDUncompressCachedData(const ZSTDUncompressCachedData&) {}
136
+ ZSTDUncompressCachedData& operator=(const ZSTDUncompressCachedData&) = delete;
137
+ ZSTDUncompressCachedData(ZSTDUncompressCachedData&&)
138
+ ROCKSDB_NOEXCEPT = default;
139
+ ZSTDUncompressCachedData& operator=(ZSTDUncompressCachedData&&)
140
+ ROCKSDB_NOEXCEPT = default;
141
+ ZSTDNativeContext Get() const { return nullptr; }
142
+ int64_t GetCacheIndex() const { return -1; }
143
+ void CreateIfNeeded() {}
144
+ void InitFromCache(const ZSTDUncompressCachedData&, int64_t) {}
145
+ private:
146
+ void ignore_padding__() { padding = nullptr; }
147
+ };
148
+ } // namespace ROCKSDB_NAMESPACE
149
+ #endif
150
+
151
+ #if defined(XPRESS)
152
+ #include "port/xpress.h"
153
+ #endif
154
+
155
+ namespace ROCKSDB_NAMESPACE {
156
+
157
+ // Holds dictionary and related data, like ZSTD's digested compression
158
+ // dictionary.
159
+ struct CompressionDict {
160
+ #if ZSTD_VERSION_NUMBER >= 700
161
+ ZSTD_CDict* zstd_cdict_ = nullptr;
162
+ #endif // ZSTD_VERSION_NUMBER >= 700
163
+ std::string dict_;
164
+
165
+ public:
166
+ #if ZSTD_VERSION_NUMBER >= 700
167
+ CompressionDict(std::string dict, CompressionType type, int level) {
168
+ #else // ZSTD_VERSION_NUMBER >= 700
169
+ CompressionDict(std::string dict, CompressionType /*type*/, int /*level*/) {
170
+ #endif // ZSTD_VERSION_NUMBER >= 700
171
+ dict_ = std::move(dict);
172
+ #if ZSTD_VERSION_NUMBER >= 700
173
+ zstd_cdict_ = nullptr;
174
+ if (!dict_.empty() && (type == kZSTD || type == kZSTDNotFinalCompression)) {
175
+ if (level == CompressionOptions::kDefaultCompressionLevel) {
176
+ // 3 is the value of ZSTD_CLEVEL_DEFAULT (not exposed publicly), see
177
+ // https://github.com/facebook/zstd/issues/1148
178
+ level = 3;
179
+ }
180
+ // Should be safe (but slower) if below call fails as we'll use the
181
+ // raw dictionary to compress.
182
+ zstd_cdict_ = ZSTD_createCDict(dict_.data(), dict_.size(), level);
183
+ assert(zstd_cdict_ != nullptr);
184
+ }
185
+ #endif // ZSTD_VERSION_NUMBER >= 700
186
+ }
187
+
188
+ ~CompressionDict() {
189
+ #if ZSTD_VERSION_NUMBER >= 700
190
+ size_t res = 0;
191
+ if (zstd_cdict_ != nullptr) {
192
+ res = ZSTD_freeCDict(zstd_cdict_);
193
+ }
194
+ assert(res == 0); // Last I checked they can't fail
195
+ (void)res; // prevent unused var warning
196
+ #endif // ZSTD_VERSION_NUMBER >= 700
197
+ }
198
+
199
+ #if ZSTD_VERSION_NUMBER >= 700
200
+ const ZSTD_CDict* GetDigestedZstdCDict() const { return zstd_cdict_; }
201
+ #endif // ZSTD_VERSION_NUMBER >= 700
202
+
203
+ Slice GetRawDict() const { return dict_; }
204
+
205
+ static const CompressionDict& GetEmptyDict() {
206
+ static CompressionDict empty_dict{};
207
+ return empty_dict;
208
+ }
209
+
210
+ CompressionDict() = default;
211
+ // Disable copy/move
212
+ CompressionDict(const CompressionDict&) = delete;
213
+ CompressionDict& operator=(const CompressionDict&) = delete;
214
+ CompressionDict(CompressionDict&&) = delete;
215
+ CompressionDict& operator=(CompressionDict&&) = delete;
216
+ };
217
+
218
+ // Holds dictionary and related data, like ZSTD's digested uncompression
219
+ // dictionary.
220
+ struct UncompressionDict {
221
+ // Block containing the data for the compression dictionary in case the
222
+ // constructor that takes a string parameter is used.
223
+ std::string dict_;
224
+
225
+ // Block containing the data for the compression dictionary in case the
226
+ // constructor that takes a Slice parameter is used and the passed in
227
+ // CacheAllocationPtr is not nullptr.
228
+ CacheAllocationPtr allocation_;
229
+
230
+ // Slice pointing to the compression dictionary data. Can point to
231
+ // dict_, allocation_, or some other memory location, depending on how
232
+ // the object was constructed.
233
+ Slice slice_;
234
+
235
+ #ifdef ROCKSDB_ZSTD_DDICT
236
+ // Processed version of the contents of slice_ for ZSTD compression.
237
+ ZSTD_DDict* zstd_ddict_ = nullptr;
238
+ #endif // ROCKSDB_ZSTD_DDICT
239
+
240
+ #ifdef ROCKSDB_ZSTD_DDICT
241
+ UncompressionDict(std::string dict, bool using_zstd)
242
+ #else // ROCKSDB_ZSTD_DDICT
243
+ UncompressionDict(std::string dict, bool /* using_zstd */)
244
+ #endif // ROCKSDB_ZSTD_DDICT
245
+ : dict_(std::move(dict)), slice_(dict_) {
246
+ #ifdef ROCKSDB_ZSTD_DDICT
247
+ if (!slice_.empty() && using_zstd) {
248
+ zstd_ddict_ = ZSTD_createDDict_byReference(slice_.data(), slice_.size());
249
+ assert(zstd_ddict_ != nullptr);
250
+ }
251
+ #endif // ROCKSDB_ZSTD_DDICT
252
+ }
253
+
254
+ #ifdef ROCKSDB_ZSTD_DDICT
255
+ UncompressionDict(Slice slice, CacheAllocationPtr&& allocation,
256
+ bool using_zstd)
257
+ #else // ROCKSDB_ZSTD_DDICT
258
+ UncompressionDict(Slice slice, CacheAllocationPtr&& allocation,
259
+ bool /* using_zstd */)
260
+ #endif // ROCKSDB_ZSTD_DDICT
261
+ : allocation_(std::move(allocation)), slice_(std::move(slice)) {
262
+ #ifdef ROCKSDB_ZSTD_DDICT
263
+ if (!slice_.empty() && using_zstd) {
264
+ zstd_ddict_ = ZSTD_createDDict_byReference(slice_.data(), slice_.size());
265
+ assert(zstd_ddict_ != nullptr);
266
+ }
267
+ #endif // ROCKSDB_ZSTD_DDICT
268
+ }
269
+
270
+ UncompressionDict(UncompressionDict&& rhs)
271
+ : dict_(std::move(rhs.dict_)),
272
+ allocation_(std::move(rhs.allocation_)),
273
+ slice_(std::move(rhs.slice_))
274
+ #ifdef ROCKSDB_ZSTD_DDICT
275
+ ,
276
+ zstd_ddict_(rhs.zstd_ddict_)
277
+ #endif
278
+ {
279
+ #ifdef ROCKSDB_ZSTD_DDICT
280
+ rhs.zstd_ddict_ = nullptr;
281
+ #endif
282
+ }
283
+
284
+ ~UncompressionDict() {
285
+ #ifdef ROCKSDB_ZSTD_DDICT
286
+ size_t res = 0;
287
+ if (zstd_ddict_ != nullptr) {
288
+ res = ZSTD_freeDDict(zstd_ddict_);
289
+ }
290
+ assert(res == 0); // Last I checked they can't fail
291
+ (void)res; // prevent unused var warning
292
+ #endif // ROCKSDB_ZSTD_DDICT
293
+ }
294
+
295
+ UncompressionDict& operator=(UncompressionDict&& rhs) {
296
+ if (this == &rhs) {
297
+ return *this;
298
+ }
299
+
300
+ dict_ = std::move(rhs.dict_);
301
+ allocation_ = std::move(rhs.allocation_);
302
+ slice_ = std::move(rhs.slice_);
303
+
304
+ #ifdef ROCKSDB_ZSTD_DDICT
305
+ zstd_ddict_ = rhs.zstd_ddict_;
306
+ rhs.zstd_ddict_ = nullptr;
307
+ #endif
308
+
309
+ return *this;
310
+ }
311
+
312
+ // The object is self-contained if the string constructor is used, or the
313
+ // Slice constructor is invoked with a non-null allocation. Otherwise, it
314
+ // is the caller's responsibility to ensure that the underlying storage
315
+ // outlives this object.
316
+ bool own_bytes() const { return !dict_.empty() || allocation_; }
317
+
318
+ const Slice& GetRawDict() const { return slice_; }
319
+
320
+ #ifdef ROCKSDB_ZSTD_DDICT
321
+ const ZSTD_DDict* GetDigestedZstdDDict() const { return zstd_ddict_; }
322
+ #endif // ROCKSDB_ZSTD_DDICT
323
+
324
+ static const UncompressionDict& GetEmptyDict() {
325
+ static UncompressionDict empty_dict{};
326
+ return empty_dict;
327
+ }
328
+
329
+ size_t ApproximateMemoryUsage() const {
330
+ size_t usage = sizeof(struct UncompressionDict);
331
+ usage += dict_.size();
332
+ if (allocation_) {
333
+ auto allocator = allocation_.get_deleter().allocator;
334
+ if (allocator) {
335
+ usage += allocator->UsableSize(allocation_.get(), slice_.size());
336
+ } else {
337
+ usage += slice_.size();
338
+ }
339
+ }
340
+ #ifdef ROCKSDB_ZSTD_DDICT
341
+ usage += ZSTD_sizeof_DDict(zstd_ddict_);
342
+ #endif // ROCKSDB_ZSTD_DDICT
343
+ return usage;
344
+ }
345
+
346
+ UncompressionDict() = default;
347
+ // Disable copy
348
+ UncompressionDict(const CompressionDict&) = delete;
349
+ UncompressionDict& operator=(const CompressionDict&) = delete;
350
+ };
351
+
352
+ class CompressionContext {
353
+ private:
354
+ #if defined(ZSTD) && (ZSTD_VERSION_NUMBER >= 500)
355
+ ZSTD_CCtx* zstd_ctx_ = nullptr;
356
+ void CreateNativeContext(CompressionType type) {
357
+ if (type == kZSTD || type == kZSTDNotFinalCompression) {
358
+ #ifdef ROCKSDB_ZSTD_CUSTOM_MEM
359
+ zstd_ctx_ =
360
+ ZSTD_createCCtx_advanced(port::GetJeZstdAllocationOverrides());
361
+ #else // ROCKSDB_ZSTD_CUSTOM_MEM
362
+ zstd_ctx_ = ZSTD_createCCtx();
363
+ #endif // ROCKSDB_ZSTD_CUSTOM_MEM
364
+ }
365
+ }
366
+ void DestroyNativeContext() {
367
+ if (zstd_ctx_ != nullptr) {
368
+ ZSTD_freeCCtx(zstd_ctx_);
369
+ }
370
+ }
371
+
372
+ public:
373
+ // callable inside ZSTD_Compress
374
+ ZSTD_CCtx* ZSTDPreallocCtx() const {
375
+ assert(zstd_ctx_ != nullptr);
376
+ return zstd_ctx_;
377
+ }
378
+
379
+ #else // ZSTD && (ZSTD_VERSION_NUMBER >= 500)
380
+ private:
381
+ void CreateNativeContext(CompressionType /* type */) {}
382
+ void DestroyNativeContext() {}
383
+ #endif // ZSTD && (ZSTD_VERSION_NUMBER >= 500)
384
+ public:
385
+ explicit CompressionContext(CompressionType type) {
386
+ CreateNativeContext(type);
387
+ }
388
+ ~CompressionContext() { DestroyNativeContext(); }
389
+ CompressionContext(const CompressionContext&) = delete;
390
+ CompressionContext& operator=(const CompressionContext&) = delete;
391
+ };
392
+
393
+ class CompressionInfo {
394
+ const CompressionOptions& opts_;
395
+ const CompressionContext& context_;
396
+ const CompressionDict& dict_;
397
+ const CompressionType type_;
398
+ const uint64_t sample_for_compression_;
399
+
400
+ public:
401
+ CompressionInfo(const CompressionOptions& _opts,
402
+ const CompressionContext& _context,
403
+ const CompressionDict& _dict, CompressionType _type,
404
+ uint64_t _sample_for_compression)
405
+ : opts_(_opts),
406
+ context_(_context),
407
+ dict_(_dict),
408
+ type_(_type),
409
+ sample_for_compression_(_sample_for_compression) {}
410
+
411
+ const CompressionOptions& options() const { return opts_; }
412
+ const CompressionContext& context() const { return context_; }
413
+ const CompressionDict& dict() const { return dict_; }
414
+ CompressionType type() const { return type_; }
415
+ uint64_t SampleForCompression() const { return sample_for_compression_; }
416
+ };
417
+
418
+ class UncompressionContext {
419
+ private:
420
+ CompressionContextCache* ctx_cache_ = nullptr;
421
+ ZSTDUncompressCachedData uncomp_cached_data_;
422
+
423
+ public:
424
+ explicit UncompressionContext(CompressionType type) {
425
+ if (type == kZSTD || type == kZSTDNotFinalCompression) {
426
+ ctx_cache_ = CompressionContextCache::Instance();
427
+ uncomp_cached_data_ = ctx_cache_->GetCachedZSTDUncompressData();
428
+ }
429
+ }
430
+ ~UncompressionContext() {
431
+ if (uncomp_cached_data_.GetCacheIndex() != -1) {
432
+ assert(ctx_cache_ != nullptr);
433
+ ctx_cache_->ReturnCachedZSTDUncompressData(
434
+ uncomp_cached_data_.GetCacheIndex());
435
+ }
436
+ }
437
+ UncompressionContext(const UncompressionContext&) = delete;
438
+ UncompressionContext& operator=(const UncompressionContext&) = delete;
439
+
440
+ ZSTDUncompressCachedData::ZSTDNativeContext GetZSTDContext() const {
441
+ return uncomp_cached_data_.Get();
442
+ }
443
+ };
444
+
445
+ class UncompressionInfo {
446
+ const UncompressionContext& context_;
447
+ const UncompressionDict& dict_;
448
+ const CompressionType type_;
449
+
450
+ public:
451
+ UncompressionInfo(const UncompressionContext& _context,
452
+ const UncompressionDict& _dict, CompressionType _type)
453
+ : context_(_context), dict_(_dict), type_(_type) {}
454
+
455
+ const UncompressionContext& context() const { return context_; }
456
+ const UncompressionDict& dict() const { return dict_; }
457
+ CompressionType type() const { return type_; }
458
+ };
459
+
460
+ inline bool Snappy_Supported() {
461
+ #ifdef SNAPPY
462
+ return true;
463
+ #else
464
+ return false;
465
+ #endif
466
+ }
467
+
468
+ inline bool Zlib_Supported() {
469
+ #ifdef ZLIB
470
+ return true;
471
+ #else
472
+ return false;
473
+ #endif
474
+ }
475
+
476
+ inline bool BZip2_Supported() {
477
+ #ifdef BZIP2
478
+ return true;
479
+ #else
480
+ return false;
481
+ #endif
482
+ }
483
+
484
+ inline bool LZ4_Supported() {
485
+ #ifdef LZ4
486
+ return true;
487
+ #else
488
+ return false;
489
+ #endif
490
+ }
491
+
492
+ inline bool XPRESS_Supported() {
493
+ #ifdef XPRESS
494
+ return true;
495
+ #else
496
+ return false;
497
+ #endif
498
+ }
499
+
500
+ inline bool ZSTD_Supported() {
501
+ #ifdef ZSTD
502
+ // ZSTD format is finalized since version 0.8.0.
503
+ return (ZSTD_versionNumber() >= 800);
504
+ #else
505
+ return false;
506
+ #endif
507
+ }
508
+
509
+ inline bool ZSTDNotFinal_Supported() {
510
+ #ifdef ZSTD
511
+ return true;
512
+ #else
513
+ return false;
514
+ #endif
515
+ }
516
+
517
+ inline bool CompressionTypeSupported(CompressionType compression_type) {
518
+ switch (compression_type) {
519
+ case kNoCompression:
520
+ return true;
521
+ case kSnappyCompression:
522
+ return Snappy_Supported();
523
+ case kZlibCompression:
524
+ return Zlib_Supported();
525
+ case kBZip2Compression:
526
+ return BZip2_Supported();
527
+ case kLZ4Compression:
528
+ return LZ4_Supported();
529
+ case kLZ4HCCompression:
530
+ return LZ4_Supported();
531
+ case kXpressCompression:
532
+ return XPRESS_Supported();
533
+ case kZSTDNotFinalCompression:
534
+ return ZSTDNotFinal_Supported();
535
+ case kZSTD:
536
+ return ZSTD_Supported();
537
+ default:
538
+ assert(false);
539
+ return false;
540
+ }
541
+ }
542
+
543
+ inline bool DictCompressionTypeSupported(CompressionType compression_type) {
544
+ switch (compression_type) {
545
+ case kNoCompression:
546
+ return false;
547
+ case kSnappyCompression:
548
+ return false;
549
+ case kZlibCompression:
550
+ return Zlib_Supported();
551
+ case kBZip2Compression:
552
+ return false;
553
+ case kLZ4Compression:
554
+ case kLZ4HCCompression:
555
+ #if LZ4_VERSION_NUMBER >= 10400 // r124+
556
+ return LZ4_Supported();
557
+ #else
558
+ return false;
559
+ #endif
560
+ case kXpressCompression:
561
+ return false;
562
+ case kZSTDNotFinalCompression:
563
+ #if ZSTD_VERSION_NUMBER >= 500 // v0.5.0+
564
+ return ZSTDNotFinal_Supported();
565
+ #else
566
+ return false;
567
+ #endif
568
+ case kZSTD:
569
+ #if ZSTD_VERSION_NUMBER >= 500 // v0.5.0+
570
+ return ZSTD_Supported();
571
+ #else
572
+ return false;
573
+ #endif
574
+ default:
575
+ assert(false);
576
+ return false;
577
+ }
578
+ }
579
+
580
+ inline std::string CompressionTypeToString(CompressionType compression_type) {
581
+ switch (compression_type) {
582
+ case kNoCompression:
583
+ return "NoCompression";
584
+ case kSnappyCompression:
585
+ return "Snappy";
586
+ case kZlibCompression:
587
+ return "Zlib";
588
+ case kBZip2Compression:
589
+ return "BZip2";
590
+ case kLZ4Compression:
591
+ return "LZ4";
592
+ case kLZ4HCCompression:
593
+ return "LZ4HC";
594
+ case kXpressCompression:
595
+ return "Xpress";
596
+ case kZSTD:
597
+ return "ZSTD";
598
+ case kZSTDNotFinalCompression:
599
+ return "ZSTDNotFinal";
600
+ case kDisableCompressionOption:
601
+ return "DisableOption";
602
+ default:
603
+ assert(false);
604
+ return "";
605
+ }
606
+ }
607
+
608
+ inline std::string CompressionOptionsToString(
609
+ CompressionOptions& compression_options) {
610
+ std::string result;
611
+ result.reserve(512);
612
+ result.append("window_bits=")
613
+ .append(ToString(compression_options.window_bits))
614
+ .append("; ");
615
+ result.append("level=")
616
+ .append(ToString(compression_options.level))
617
+ .append("; ");
618
+ result.append("strategy=")
619
+ .append(ToString(compression_options.strategy))
620
+ .append("; ");
621
+ result.append("max_dict_bytes=")
622
+ .append(ToString(compression_options.max_dict_bytes))
623
+ .append("; ");
624
+ result.append("zstd_max_train_bytes=")
625
+ .append(ToString(compression_options.zstd_max_train_bytes))
626
+ .append("; ");
627
+ result.append("enabled=")
628
+ .append(ToString(compression_options.enabled))
629
+ .append("; ");
630
+ return result;
631
+ }
632
+
633
+ // compress_format_version can have two values:
634
+ // 1 -- decompressed sizes for BZip2 and Zlib are not included in the compressed
635
+ // block. Also, decompressed sizes for LZ4 are encoded in platform-dependent
636
+ // way.
637
+ // 2 -- Zlib, BZip2 and LZ4 encode decompressed size as Varint32 just before the
638
+ // start of compressed block. Snappy format is the same as version 1.
639
+
640
+ inline bool Snappy_Compress(const CompressionInfo& /*info*/, const char* input,
641
+ size_t length, ::std::string* output) {
642
+ #ifdef SNAPPY
643
+ output->resize(snappy::MaxCompressedLength(length));
644
+ size_t outlen;
645
+ snappy::RawCompress(input, length, &(*output)[0], &outlen);
646
+ output->resize(outlen);
647
+ return true;
648
+ #else
649
+ (void)input;
650
+ (void)length;
651
+ (void)output;
652
+ return false;
653
+ #endif
654
+ }
655
+
656
+ inline CacheAllocationPtr Snappy_Uncompress(
657
+ const char* input, size_t length, size_t* uncompressed_size,
658
+ MemoryAllocator* allocator = nullptr) {
659
+ #ifdef SNAPPY
660
+ size_t uncompressed_length = 0;
661
+ if (!snappy::GetUncompressedLength(input, length, &uncompressed_length)) {
662
+ return nullptr;
663
+ }
664
+
665
+ CacheAllocationPtr output = AllocateBlock(uncompressed_length, allocator);
666
+
667
+ if (!snappy::RawUncompress(input, length, output.get())) {
668
+ return nullptr;
669
+ }
670
+
671
+ *uncompressed_size = uncompressed_length;
672
+
673
+ return output;
674
+ #else
675
+ (void)input;
676
+ (void)length;
677
+ (void)uncompressed_size;
678
+ (void)allocator;
679
+ return nullptr;
680
+ #endif
681
+ }
682
+
683
+ namespace compression {
684
+ // returns size
685
+ inline size_t PutDecompressedSizeInfo(std::string* output, uint32_t length) {
686
+ PutVarint32(output, length);
687
+ return output->size();
688
+ }
689
+
690
+ inline bool GetDecompressedSizeInfo(const char** input_data,
691
+ size_t* input_length,
692
+ uint32_t* output_len) {
693
+ auto new_input_data =
694
+ GetVarint32Ptr(*input_data, *input_data + *input_length, output_len);
695
+ if (new_input_data == nullptr) {
696
+ return false;
697
+ }
698
+ *input_length -= (new_input_data - *input_data);
699
+ *input_data = new_input_data;
700
+ return true;
701
+ }
702
+ } // namespace compression
703
+
704
+ // compress_format_version == 1 -- decompressed size is not included in the
705
+ // block header
706
+ // compress_format_version == 2 -- decompressed size is included in the block
707
+ // header in varint32 format
708
+ // @param compression_dict Data for presetting the compression library's
709
+ // dictionary.
710
+ inline bool Zlib_Compress(const CompressionInfo& info,
711
+ uint32_t compress_format_version, const char* input,
712
+ size_t length, ::std::string* output) {
713
+ #ifdef ZLIB
714
+ if (length > std::numeric_limits<uint32_t>::max()) {
715
+ // Can't compress more than 4GB
716
+ return false;
717
+ }
718
+
719
+ size_t output_header_len = 0;
720
+ if (compress_format_version == 2) {
721
+ output_header_len = compression::PutDecompressedSizeInfo(
722
+ output, static_cast<uint32_t>(length));
723
+ }
724
+ // Resize output to be the plain data length.
725
+ // This may not be big enough if the compression actually expands data.
726
+ output->resize(output_header_len + length);
727
+
728
+ // The memLevel parameter specifies how much memory should be allocated for
729
+ // the internal compression state.
730
+ // memLevel=1 uses minimum memory but is slow and reduces compression ratio.
731
+ // memLevel=9 uses maximum memory for optimal speed.
732
+ // The default value is 8. See zconf.h for more details.
733
+ static const int memLevel = 8;
734
+ int level;
735
+ if (info.options().level == CompressionOptions::kDefaultCompressionLevel) {
736
+ level = Z_DEFAULT_COMPRESSION;
737
+ } else {
738
+ level = info.options().level;
739
+ }
740
+ z_stream _stream;
741
+ memset(&_stream, 0, sizeof(z_stream));
742
+ int st = deflateInit2(&_stream, level, Z_DEFLATED, info.options().window_bits,
743
+ memLevel, info.options().strategy);
744
+ if (st != Z_OK) {
745
+ return false;
746
+ }
747
+
748
+ Slice compression_dict = info.dict().GetRawDict();
749
+ if (compression_dict.size()) {
750
+ // Initialize the compression library's dictionary
751
+ st = deflateSetDictionary(
752
+ &_stream, reinterpret_cast<const Bytef*>(compression_dict.data()),
753
+ static_cast<unsigned int>(compression_dict.size()));
754
+ if (st != Z_OK) {
755
+ deflateEnd(&_stream);
756
+ return false;
757
+ }
758
+ }
759
+
760
+ // Compress the input, and put compressed data in output.
761
+ _stream.next_in = (Bytef*)input;
762
+ _stream.avail_in = static_cast<unsigned int>(length);
763
+
764
+ // Initialize the output size.
765
+ _stream.avail_out = static_cast<unsigned int>(length);
766
+ _stream.next_out = reinterpret_cast<Bytef*>(&(*output)[output_header_len]);
767
+
768
+ bool compressed = false;
769
+ st = deflate(&_stream, Z_FINISH);
770
+ if (st == Z_STREAM_END) {
771
+ compressed = true;
772
+ output->resize(output->size() - _stream.avail_out);
773
+ }
774
+ // The only return value we really care about is Z_STREAM_END.
775
+ // Z_OK means insufficient output space. This means the compression is
776
+ // bigger than decompressed size. Just fail the compression in that case.
777
+
778
+ deflateEnd(&_stream);
779
+ return compressed;
780
+ #else
781
+ (void)info;
782
+ (void)compress_format_version;
783
+ (void)input;
784
+ (void)length;
785
+ (void)output;
786
+ return false;
787
+ #endif
788
+ }
789
+
790
+ // compress_format_version == 1 -- decompressed size is not included in the
791
+ // block header
792
+ // compress_format_version == 2 -- decompressed size is included in the block
793
+ // header in varint32 format
794
+ // @param compression_dict Data for presetting the compression library's
795
+ // dictionary.
796
+ inline CacheAllocationPtr Zlib_Uncompress(
797
+ const UncompressionInfo& info, const char* input_data, size_t input_length,
798
+ size_t* uncompressed_size, uint32_t compress_format_version,
799
+ MemoryAllocator* allocator = nullptr, int windowBits = -14) {
800
+ #ifdef ZLIB
801
+ uint32_t output_len = 0;
802
+ if (compress_format_version == 2) {
803
+ if (!compression::GetDecompressedSizeInfo(&input_data, &input_length,
804
+ &output_len)) {
805
+ return nullptr;
806
+ }
807
+ } else {
808
+ // Assume the decompressed data size will 5x of compressed size, but round
809
+ // to the page size
810
+ size_t proposed_output_len = ((input_length * 5) & (~(4096 - 1))) + 4096;
811
+ output_len = static_cast<uint32_t>(
812
+ std::min(proposed_output_len,
813
+ static_cast<size_t>(std::numeric_limits<uint32_t>::max())));
814
+ }
815
+
816
+ z_stream _stream;
817
+ memset(&_stream, 0, sizeof(z_stream));
818
+
819
+ // For raw inflate, the windowBits should be -8..-15.
820
+ // If windowBits is bigger than zero, it will use either zlib
821
+ // header or gzip header. Adding 32 to it will do automatic detection.
822
+ int st =
823
+ inflateInit2(&_stream, windowBits > 0 ? windowBits + 32 : windowBits);
824
+ if (st != Z_OK) {
825
+ return nullptr;
826
+ }
827
+
828
+ const Slice& compression_dict = info.dict().GetRawDict();
829
+ if (compression_dict.size()) {
830
+ // Initialize the compression library's dictionary
831
+ st = inflateSetDictionary(
832
+ &_stream, reinterpret_cast<const Bytef*>(compression_dict.data()),
833
+ static_cast<unsigned int>(compression_dict.size()));
834
+ if (st != Z_OK) {
835
+ return nullptr;
836
+ }
837
+ }
838
+
839
+ _stream.next_in = (Bytef*)input_data;
840
+ _stream.avail_in = static_cast<unsigned int>(input_length);
841
+
842
+ auto output = AllocateBlock(output_len, allocator);
843
+
844
+ _stream.next_out = (Bytef*)output.get();
845
+ _stream.avail_out = static_cast<unsigned int>(output_len);
846
+
847
+ bool done = false;
848
+ while (!done) {
849
+ st = inflate(&_stream, Z_SYNC_FLUSH);
850
+ switch (st) {
851
+ case Z_STREAM_END:
852
+ done = true;
853
+ break;
854
+ case Z_OK: {
855
+ // No output space. Increase the output space by 20%.
856
+ // We should never run out of output space if
857
+ // compress_format_version == 2
858
+ assert(compress_format_version != 2);
859
+ size_t old_sz = output_len;
860
+ uint32_t output_len_delta = output_len / 5;
861
+ output_len += output_len_delta < 10 ? 10 : output_len_delta;
862
+ auto tmp = AllocateBlock(output_len, allocator);
863
+ memcpy(tmp.get(), output.get(), old_sz);
864
+ output = std::move(tmp);
865
+
866
+ // Set more output.
867
+ _stream.next_out = (Bytef*)(output.get() + old_sz);
868
+ _stream.avail_out = static_cast<unsigned int>(output_len - old_sz);
869
+ break;
870
+ }
871
+ case Z_BUF_ERROR:
872
+ default:
873
+ inflateEnd(&_stream);
874
+ return nullptr;
875
+ }
876
+ }
877
+
878
+ // If we encoded decompressed block size, we should have no bytes left
879
+ assert(compress_format_version != 2 || _stream.avail_out == 0);
880
+ assert(output_len >= _stream.avail_out);
881
+ *uncompressed_size = output_len - _stream.avail_out;
882
+ inflateEnd(&_stream);
883
+ return output;
884
+ #else
885
+ (void)info;
886
+ (void)input_data;
887
+ (void)input_length;
888
+ (void)uncompressed_size;
889
+ (void)compress_format_version;
890
+ (void)allocator;
891
+ (void)windowBits;
892
+ return nullptr;
893
+ #endif
894
+ }
895
+
896
+ // compress_format_version == 1 -- decompressed size is not included in the
897
+ // block header
898
+ // compress_format_version == 2 -- decompressed size is included in the block
899
+ // header in varint32 format
900
+ inline bool BZip2_Compress(const CompressionInfo& /*info*/,
901
+ uint32_t compress_format_version, const char* input,
902
+ size_t length, ::std::string* output) {
903
+ #ifdef BZIP2
904
+ if (length > std::numeric_limits<uint32_t>::max()) {
905
+ // Can't compress more than 4GB
906
+ return false;
907
+ }
908
+ size_t output_header_len = 0;
909
+ if (compress_format_version == 2) {
910
+ output_header_len = compression::PutDecompressedSizeInfo(
911
+ output, static_cast<uint32_t>(length));
912
+ }
913
+ // Resize output to be the plain data length.
914
+ // This may not be big enough if the compression actually expands data.
915
+ output->resize(output_header_len + length);
916
+
917
+ bz_stream _stream;
918
+ memset(&_stream, 0, sizeof(bz_stream));
919
+
920
+ // Block size 1 is 100K.
921
+ // 0 is for silent.
922
+ // 30 is the default workFactor
923
+ int st = BZ2_bzCompressInit(&_stream, 1, 0, 30);
924
+ if (st != BZ_OK) {
925
+ return false;
926
+ }
927
+
928
+ // Compress the input, and put compressed data in output.
929
+ _stream.next_in = (char*)input;
930
+ _stream.avail_in = static_cast<unsigned int>(length);
931
+
932
+ // Initialize the output size.
933
+ _stream.avail_out = static_cast<unsigned int>(length);
934
+ _stream.next_out = reinterpret_cast<char*>(&(*output)[output_header_len]);
935
+
936
+ bool compressed = false;
937
+ st = BZ2_bzCompress(&_stream, BZ_FINISH);
938
+ if (st == BZ_STREAM_END) {
939
+ compressed = true;
940
+ output->resize(output->size() - _stream.avail_out);
941
+ }
942
+ // The only return value we really care about is BZ_STREAM_END.
943
+ // BZ_FINISH_OK means insufficient output space. This means the compression
944
+ // is bigger than decompressed size. Just fail the compression in that case.
945
+
946
+ BZ2_bzCompressEnd(&_stream);
947
+ return compressed;
948
+ #else
949
+ (void)compress_format_version;
950
+ (void)input;
951
+ (void)length;
952
+ (void)output;
953
+ return false;
954
+ #endif
955
+ }
956
+
957
+ // compress_format_version == 1 -- decompressed size is not included in the
958
+ // block header
959
+ // compress_format_version == 2 -- decompressed size is included in the block
960
+ // header in varint32 format
961
+ inline CacheAllocationPtr BZip2_Uncompress(
962
+ const char* input_data, size_t input_length, size_t* uncompressed_size,
963
+ uint32_t compress_format_version, MemoryAllocator* allocator = nullptr) {
964
+ #ifdef BZIP2
965
+ uint32_t output_len = 0;
966
+ if (compress_format_version == 2) {
967
+ if (!compression::GetDecompressedSizeInfo(&input_data, &input_length,
968
+ &output_len)) {
969
+ return nullptr;
970
+ }
971
+ } else {
972
+ // Assume the decompressed data size will 5x of compressed size, but round
973
+ // to the next page size
974
+ size_t proposed_output_len = ((input_length * 5) & (~(4096 - 1))) + 4096;
975
+ output_len = static_cast<uint32_t>(
976
+ std::min(proposed_output_len,
977
+ static_cast<size_t>(std::numeric_limits<uint32_t>::max())));
978
+ }
979
+
980
+ bz_stream _stream;
981
+ memset(&_stream, 0, sizeof(bz_stream));
982
+
983
+ int st = BZ2_bzDecompressInit(&_stream, 0, 0);
984
+ if (st != BZ_OK) {
985
+ return nullptr;
986
+ }
987
+
988
+ _stream.next_in = (char*)input_data;
989
+ _stream.avail_in = static_cast<unsigned int>(input_length);
990
+
991
+ auto output = AllocateBlock(output_len, allocator);
992
+
993
+ _stream.next_out = (char*)output.get();
994
+ _stream.avail_out = static_cast<unsigned int>(output_len);
995
+
996
+ bool done = false;
997
+ while (!done) {
998
+ st = BZ2_bzDecompress(&_stream);
999
+ switch (st) {
1000
+ case BZ_STREAM_END:
1001
+ done = true;
1002
+ break;
1003
+ case BZ_OK: {
1004
+ // No output space. Increase the output space by 20%.
1005
+ // We should never run out of output space if
1006
+ // compress_format_version == 2
1007
+ assert(compress_format_version != 2);
1008
+ uint32_t old_sz = output_len;
1009
+ output_len = output_len * 1.2;
1010
+ auto tmp = AllocateBlock(output_len, allocator);
1011
+ memcpy(tmp.get(), output.get(), old_sz);
1012
+ output = std::move(tmp);
1013
+
1014
+ // Set more output.
1015
+ _stream.next_out = (char*)(output.get() + old_sz);
1016
+ _stream.avail_out = static_cast<unsigned int>(output_len - old_sz);
1017
+ break;
1018
+ }
1019
+ default:
1020
+ BZ2_bzDecompressEnd(&_stream);
1021
+ return nullptr;
1022
+ }
1023
+ }
1024
+
1025
+ // If we encoded decompressed block size, we should have no bytes left
1026
+ assert(compress_format_version != 2 || _stream.avail_out == 0);
1027
+ assert(output_len >= _stream.avail_out);
1028
+ *uncompressed_size = output_len - _stream.avail_out;
1029
+ BZ2_bzDecompressEnd(&_stream);
1030
+ return output;
1031
+ #else
1032
+ (void)input_data;
1033
+ (void)input_length;
1034
+ (void)uncompressed_size;
1035
+ (void)compress_format_version;
1036
+ (void)allocator;
1037
+ return nullptr;
1038
+ #endif
1039
+ }
1040
+
1041
+ // compress_format_version == 1 -- decompressed size is included in the
1042
+ // block header using memcpy, which makes database non-portable)
1043
+ // compress_format_version == 2 -- decompressed size is included in the block
1044
+ // header in varint32 format
1045
+ // @param compression_dict Data for presetting the compression library's
1046
+ // dictionary.
1047
+ inline bool LZ4_Compress(const CompressionInfo& info,
1048
+ uint32_t compress_format_version, const char* input,
1049
+ size_t length, ::std::string* output) {
1050
+ #ifdef LZ4
1051
+ if (length > std::numeric_limits<uint32_t>::max()) {
1052
+ // Can't compress more than 4GB
1053
+ return false;
1054
+ }
1055
+
1056
+ size_t output_header_len = 0;
1057
+ if (compress_format_version == 2) {
1058
+ // new encoding, using varint32 to store size information
1059
+ output_header_len = compression::PutDecompressedSizeInfo(
1060
+ output, static_cast<uint32_t>(length));
1061
+ } else {
1062
+ // legacy encoding, which is not really portable (depends on big/little
1063
+ // endianness)
1064
+ output_header_len = 8;
1065
+ output->resize(output_header_len);
1066
+ char* p = const_cast<char*>(output->c_str());
1067
+ memcpy(p, &length, sizeof(length));
1068
+ }
1069
+ int compress_bound = LZ4_compressBound(static_cast<int>(length));
1070
+ output->resize(static_cast<size_t>(output_header_len + compress_bound));
1071
+
1072
+ int outlen;
1073
+ #if LZ4_VERSION_NUMBER >= 10400 // r124+
1074
+ LZ4_stream_t* stream = LZ4_createStream();
1075
+ Slice compression_dict = info.dict().GetRawDict();
1076
+ if (compression_dict.size()) {
1077
+ LZ4_loadDict(stream, compression_dict.data(),
1078
+ static_cast<int>(compression_dict.size()));
1079
+ }
1080
+ #if LZ4_VERSION_NUMBER >= 10700 // r129+
1081
+ outlen =
1082
+ LZ4_compress_fast_continue(stream, input, &(*output)[output_header_len],
1083
+ static_cast<int>(length), compress_bound, 1);
1084
+ #else // up to r128
1085
+ outlen = LZ4_compress_limitedOutput_continue(
1086
+ stream, input, &(*output)[output_header_len], static_cast<int>(length),
1087
+ compress_bound);
1088
+ #endif
1089
+ LZ4_freeStream(stream);
1090
+ #else // up to r123
1091
+ outlen = LZ4_compress_limitedOutput(input, &(*output)[output_header_len],
1092
+ static_cast<int>(length), compress_bound);
1093
+ #endif // LZ4_VERSION_NUMBER >= 10400
1094
+
1095
+ if (outlen == 0) {
1096
+ return false;
1097
+ }
1098
+ output->resize(static_cast<size_t>(output_header_len + outlen));
1099
+ return true;
1100
+ #else // LZ4
1101
+ (void)info;
1102
+ (void)compress_format_version;
1103
+ (void)input;
1104
+ (void)length;
1105
+ (void)output;
1106
+ return false;
1107
+ #endif
1108
+ }
1109
+
1110
+ // compress_format_version == 1 -- decompressed size is included in the
1111
+ // block header using memcpy, which makes database non-portable)
1112
+ // compress_format_version == 2 -- decompressed size is included in the block
1113
+ // header in varint32 format
1114
+ // @param compression_dict Data for presetting the compression library's
1115
+ // dictionary.
1116
+ inline CacheAllocationPtr LZ4_Uncompress(const UncompressionInfo& info,
1117
+ const char* input_data,
1118
+ size_t input_length,
1119
+ size_t* uncompressed_size,
1120
+ uint32_t compress_format_version,
1121
+ MemoryAllocator* allocator = nullptr) {
1122
+ #ifdef LZ4
1123
+ uint32_t output_len = 0;
1124
+ if (compress_format_version == 2) {
1125
+ // new encoding, using varint32 to store size information
1126
+ if (!compression::GetDecompressedSizeInfo(&input_data, &input_length,
1127
+ &output_len)) {
1128
+ return nullptr;
1129
+ }
1130
+ } else {
1131
+ // legacy encoding, which is not really portable (depends on big/little
1132
+ // endianness)
1133
+ if (input_length < 8) {
1134
+ return nullptr;
1135
+ }
1136
+ memcpy(&output_len, input_data, sizeof(output_len));
1137
+ input_length -= 8;
1138
+ input_data += 8;
1139
+ }
1140
+
1141
+ auto output = AllocateBlock(output_len, allocator);
1142
+
1143
+ int decompress_bytes = 0;
1144
+
1145
+ #if LZ4_VERSION_NUMBER >= 10400 // r124+
1146
+ LZ4_streamDecode_t* stream = LZ4_createStreamDecode();
1147
+ const Slice& compression_dict = info.dict().GetRawDict();
1148
+ if (compression_dict.size()) {
1149
+ LZ4_setStreamDecode(stream, compression_dict.data(),
1150
+ static_cast<int>(compression_dict.size()));
1151
+ }
1152
+ decompress_bytes = LZ4_decompress_safe_continue(
1153
+ stream, input_data, output.get(), static_cast<int>(input_length),
1154
+ static_cast<int>(output_len));
1155
+ LZ4_freeStreamDecode(stream);
1156
+ #else // up to r123
1157
+ decompress_bytes = LZ4_decompress_safe(input_data, output.get(),
1158
+ static_cast<int>(input_length),
1159
+ static_cast<int>(output_len));
1160
+ #endif // LZ4_VERSION_NUMBER >= 10400
1161
+
1162
+ if (decompress_bytes < 0) {
1163
+ return nullptr;
1164
+ }
1165
+ assert(decompress_bytes == static_cast<int>(output_len));
1166
+ *uncompressed_size = decompress_bytes;
1167
+ return output;
1168
+ #else // LZ4
1169
+ (void)info;
1170
+ (void)input_data;
1171
+ (void)input_length;
1172
+ (void)uncompressed_size;
1173
+ (void)compress_format_version;
1174
+ (void)allocator;
1175
+ return nullptr;
1176
+ #endif
1177
+ }
1178
+
1179
+ // compress_format_version == 1 -- decompressed size is included in the
1180
+ // block header using memcpy, which makes database non-portable)
1181
+ // compress_format_version == 2 -- decompressed size is included in the block
1182
+ // header in varint32 format
1183
+ // @param compression_dict Data for presetting the compression library's
1184
+ // dictionary.
1185
+ inline bool LZ4HC_Compress(const CompressionInfo& info,
1186
+ uint32_t compress_format_version, const char* input,
1187
+ size_t length, ::std::string* output) {
1188
+ #ifdef LZ4
1189
+ if (length > std::numeric_limits<uint32_t>::max()) {
1190
+ // Can't compress more than 4GB
1191
+ return false;
1192
+ }
1193
+
1194
+ size_t output_header_len = 0;
1195
+ if (compress_format_version == 2) {
1196
+ // new encoding, using varint32 to store size information
1197
+ output_header_len = compression::PutDecompressedSizeInfo(
1198
+ output, static_cast<uint32_t>(length));
1199
+ } else {
1200
+ // legacy encoding, which is not really portable (depends on big/little
1201
+ // endianness)
1202
+ output_header_len = 8;
1203
+ output->resize(output_header_len);
1204
+ char* p = const_cast<char*>(output->c_str());
1205
+ memcpy(p, &length, sizeof(length));
1206
+ }
1207
+ int compress_bound = LZ4_compressBound(static_cast<int>(length));
1208
+ output->resize(static_cast<size_t>(output_header_len + compress_bound));
1209
+
1210
+ int outlen;
1211
+ int level;
1212
+ if (info.options().level == CompressionOptions::kDefaultCompressionLevel) {
1213
+ level = 0; // lz4hc.h says any value < 1 will be sanitized to default
1214
+ } else {
1215
+ level = info.options().level;
1216
+ }
1217
+ #if LZ4_VERSION_NUMBER >= 10400 // r124+
1218
+ LZ4_streamHC_t* stream = LZ4_createStreamHC();
1219
+ LZ4_resetStreamHC(stream, level);
1220
+ Slice compression_dict = info.dict().GetRawDict();
1221
+ const char* compression_dict_data =
1222
+ compression_dict.size() > 0 ? compression_dict.data() : nullptr;
1223
+ size_t compression_dict_size = compression_dict.size();
1224
+ LZ4_loadDictHC(stream, compression_dict_data,
1225
+ static_cast<int>(compression_dict_size));
1226
+
1227
+ #if LZ4_VERSION_NUMBER >= 10700 // r129+
1228
+ outlen =
1229
+ LZ4_compress_HC_continue(stream, input, &(*output)[output_header_len],
1230
+ static_cast<int>(length), compress_bound);
1231
+ #else // r124-r128
1232
+ outlen = LZ4_compressHC_limitedOutput_continue(
1233
+ stream, input, &(*output)[output_header_len], static_cast<int>(length),
1234
+ compress_bound);
1235
+ #endif // LZ4_VERSION_NUMBER >= 10700
1236
+ LZ4_freeStreamHC(stream);
1237
+
1238
+ #elif LZ4_VERSION_MAJOR // r113-r123
1239
+ outlen = LZ4_compressHC2_limitedOutput(input, &(*output)[output_header_len],
1240
+ static_cast<int>(length),
1241
+ compress_bound, level);
1242
+ #else // up to r112
1243
+ outlen =
1244
+ LZ4_compressHC_limitedOutput(input, &(*output)[output_header_len],
1245
+ static_cast<int>(length), compress_bound);
1246
+ #endif // LZ4_VERSION_NUMBER >= 10400
1247
+
1248
+ if (outlen == 0) {
1249
+ return false;
1250
+ }
1251
+ output->resize(static_cast<size_t>(output_header_len + outlen));
1252
+ return true;
1253
+ #else // LZ4
1254
+ (void)info;
1255
+ (void)compress_format_version;
1256
+ (void)input;
1257
+ (void)length;
1258
+ (void)output;
1259
+ return false;
1260
+ #endif
1261
+ }
1262
+
1263
+ #ifdef XPRESS
1264
+ inline bool XPRESS_Compress(const char* input, size_t length,
1265
+ std::string* output) {
1266
+ return port::xpress::Compress(input, length, output);
1267
+ }
1268
+ #else
1269
+ inline bool XPRESS_Compress(const char* /*input*/, size_t /*length*/,
1270
+ std::string* /*output*/) {
1271
+ return false;
1272
+ }
1273
+ #endif
1274
+
1275
+ #ifdef XPRESS
1276
+ inline char* XPRESS_Uncompress(const char* input_data, size_t input_length,
1277
+ size_t* uncompressed_size) {
1278
+ return port::xpress::Decompress(input_data, input_length, uncompressed_size);
1279
+ }
1280
+ #else
1281
+ inline char* XPRESS_Uncompress(const char* /*input_data*/,
1282
+ size_t /*input_length*/,
1283
+ size_t* /*uncompressed_size*/) {
1284
+ return nullptr;
1285
+ }
1286
+ #endif
1287
+
1288
+ inline bool ZSTD_Compress(const CompressionInfo& info, const char* input,
1289
+ size_t length, ::std::string* output) {
1290
+ #ifdef ZSTD
1291
+ if (length > std::numeric_limits<uint32_t>::max()) {
1292
+ // Can't compress more than 4GB
1293
+ return false;
1294
+ }
1295
+
1296
+ size_t output_header_len = compression::PutDecompressedSizeInfo(
1297
+ output, static_cast<uint32_t>(length));
1298
+
1299
+ size_t compressBound = ZSTD_compressBound(length);
1300
+ output->resize(static_cast<size_t>(output_header_len + compressBound));
1301
+ size_t outlen = 0;
1302
+ int level;
1303
+ if (info.options().level == CompressionOptions::kDefaultCompressionLevel) {
1304
+ // 3 is the value of ZSTD_CLEVEL_DEFAULT (not exposed publicly), see
1305
+ // https://github.com/facebook/zstd/issues/1148
1306
+ level = 3;
1307
+ } else {
1308
+ level = info.options().level;
1309
+ }
1310
+ #if ZSTD_VERSION_NUMBER >= 500 // v0.5.0+
1311
+ ZSTD_CCtx* context = info.context().ZSTDPreallocCtx();
1312
+ assert(context != nullptr);
1313
+ #if ZSTD_VERSION_NUMBER >= 700 // v0.7.0+
1314
+ if (info.dict().GetDigestedZstdCDict() != nullptr) {
1315
+ outlen = ZSTD_compress_usingCDict(context, &(*output)[output_header_len],
1316
+ compressBound, input, length,
1317
+ info.dict().GetDigestedZstdCDict());
1318
+ }
1319
+ #endif // ZSTD_VERSION_NUMBER >= 700
1320
+ if (outlen == 0) {
1321
+ outlen = ZSTD_compress_usingDict(context, &(*output)[output_header_len],
1322
+ compressBound, input, length,
1323
+ info.dict().GetRawDict().data(),
1324
+ info.dict().GetRawDict().size(), level);
1325
+ }
1326
+ #else // up to v0.4.x
1327
+ outlen = ZSTD_compress(&(*output)[output_header_len], compressBound, input,
1328
+ length, level);
1329
+ #endif // ZSTD_VERSION_NUMBER >= 500
1330
+ if (outlen == 0) {
1331
+ return false;
1332
+ }
1333
+ output->resize(output_header_len + outlen);
1334
+ return true;
1335
+ #else // ZSTD
1336
+ (void)info;
1337
+ (void)input;
1338
+ (void)length;
1339
+ (void)output;
1340
+ return false;
1341
+ #endif
1342
+ }
1343
+
1344
+ // @param compression_dict Data for presetting the compression library's
1345
+ // dictionary.
1346
+ inline CacheAllocationPtr ZSTD_Uncompress(
1347
+ const UncompressionInfo& info, const char* input_data, size_t input_length,
1348
+ size_t* uncompressed_size, MemoryAllocator* allocator = nullptr) {
1349
+ #ifdef ZSTD
1350
+ uint32_t output_len = 0;
1351
+ if (!compression::GetDecompressedSizeInfo(&input_data, &input_length,
1352
+ &output_len)) {
1353
+ return nullptr;
1354
+ }
1355
+
1356
+ auto output = AllocateBlock(output_len, allocator);
1357
+ size_t actual_output_length = 0;
1358
+ #if ZSTD_VERSION_NUMBER >= 500 // v0.5.0+
1359
+ ZSTD_DCtx* context = info.context().GetZSTDContext();
1360
+ assert(context != nullptr);
1361
+ #ifdef ROCKSDB_ZSTD_DDICT
1362
+ if (info.dict().GetDigestedZstdDDict() != nullptr) {
1363
+ actual_output_length = ZSTD_decompress_usingDDict(
1364
+ context, output.get(), output_len, input_data, input_length,
1365
+ info.dict().GetDigestedZstdDDict());
1366
+ }
1367
+ #endif // ROCKSDB_ZSTD_DDICT
1368
+ if (actual_output_length == 0) {
1369
+ actual_output_length = ZSTD_decompress_usingDict(
1370
+ context, output.get(), output_len, input_data, input_length,
1371
+ info.dict().GetRawDict().data(), info.dict().GetRawDict().size());
1372
+ }
1373
+ #else // up to v0.4.x
1374
+ (void)info;
1375
+ actual_output_length =
1376
+ ZSTD_decompress(output.get(), output_len, input_data, input_length);
1377
+ #endif // ZSTD_VERSION_NUMBER >= 500
1378
+ assert(actual_output_length == output_len);
1379
+ *uncompressed_size = actual_output_length;
1380
+ return output;
1381
+ #else // ZSTD
1382
+ (void)info;
1383
+ (void)input_data;
1384
+ (void)input_length;
1385
+ (void)uncompressed_size;
1386
+ (void)allocator;
1387
+ return nullptr;
1388
+ #endif
1389
+ }
1390
+
1391
+ inline bool ZSTD_TrainDictionarySupported() {
1392
+ #ifdef ZSTD
1393
+ // Dictionary trainer is available since v0.6.1 for static linking, but not
1394
+ // available for dynamic linking until v1.1.3. For now we enable the feature
1395
+ // in v1.1.3+ only.
1396
+ return (ZSTD_versionNumber() >= 10103);
1397
+ #else
1398
+ return false;
1399
+ #endif
1400
+ }
1401
+
1402
+ inline std::string ZSTD_TrainDictionary(const std::string& samples,
1403
+ const std::vector<size_t>& sample_lens,
1404
+ size_t max_dict_bytes) {
1405
+ // Dictionary trainer is available since v0.6.1 for static linking, but not
1406
+ // available for dynamic linking until v1.1.3. For now we enable the feature
1407
+ // in v1.1.3+ only.
1408
+ #if ZSTD_VERSION_NUMBER >= 10103 // v1.1.3+
1409
+ assert(samples.empty() == sample_lens.empty());
1410
+ if (samples.empty()) {
1411
+ return "";
1412
+ }
1413
+ std::string dict_data(max_dict_bytes, '\0');
1414
+ size_t dict_len = ZDICT_trainFromBuffer(
1415
+ &dict_data[0], max_dict_bytes, &samples[0], &sample_lens[0],
1416
+ static_cast<unsigned>(sample_lens.size()));
1417
+ if (ZDICT_isError(dict_len)) {
1418
+ return "";
1419
+ }
1420
+ assert(dict_len <= max_dict_bytes);
1421
+ dict_data.resize(dict_len);
1422
+ return dict_data;
1423
+ #else // up to v1.1.2
1424
+ assert(false);
1425
+ (void)samples;
1426
+ (void)sample_lens;
1427
+ (void)max_dict_bytes;
1428
+ return "";
1429
+ #endif // ZSTD_VERSION_NUMBER >= 10103
1430
+ }
1431
+
1432
+ inline std::string ZSTD_TrainDictionary(const std::string& samples,
1433
+ size_t sample_len_shift,
1434
+ size_t max_dict_bytes) {
1435
+ // Dictionary trainer is available since v0.6.1, but ZSTD was marked stable
1436
+ // only since v0.8.0. For now we enable the feature in stable versions only.
1437
+ #if ZSTD_VERSION_NUMBER >= 10103 // v1.1.3+
1438
+ // skips potential partial sample at the end of "samples"
1439
+ size_t num_samples = samples.size() >> sample_len_shift;
1440
+ std::vector<size_t> sample_lens(num_samples, size_t(1) << sample_len_shift);
1441
+ return ZSTD_TrainDictionary(samples, sample_lens, max_dict_bytes);
1442
+ #else // up to v1.1.2
1443
+ assert(false);
1444
+ (void)samples;
1445
+ (void)sample_len_shift;
1446
+ (void)max_dict_bytes;
1447
+ return "";
1448
+ #endif // ZSTD_VERSION_NUMBER >= 10103
1449
+ }
1450
+
1451
+ inline bool CompressData(const Slice& raw,
1452
+ const CompressionInfo& compression_info,
1453
+ uint32_t compress_format_version,
1454
+ std::string* compressed_output) {
1455
+ bool ret = false;
1456
+
1457
+ // Will return compressed block contents if (1) the compression method is
1458
+ // supported in this platform and (2) the compression rate is "good enough".
1459
+ switch (compression_info.type()) {
1460
+ case kSnappyCompression:
1461
+ ret = Snappy_Compress(compression_info, raw.data(), raw.size(),
1462
+ compressed_output);
1463
+ break;
1464
+ case kZlibCompression:
1465
+ ret = Zlib_Compress(compression_info, compress_format_version, raw.data(),
1466
+ raw.size(), compressed_output);
1467
+ break;
1468
+ case kBZip2Compression:
1469
+ ret = BZip2_Compress(compression_info, compress_format_version,
1470
+ raw.data(), raw.size(), compressed_output);
1471
+ break;
1472
+ case kLZ4Compression:
1473
+ ret = LZ4_Compress(compression_info, compress_format_version, raw.data(),
1474
+ raw.size(), compressed_output);
1475
+ break;
1476
+ case kLZ4HCCompression:
1477
+ ret = LZ4HC_Compress(compression_info, compress_format_version,
1478
+ raw.data(), raw.size(), compressed_output);
1479
+ break;
1480
+ case kXpressCompression:
1481
+ ret = XPRESS_Compress(raw.data(), raw.size(), compressed_output);
1482
+ break;
1483
+ case kZSTD:
1484
+ case kZSTDNotFinalCompression:
1485
+ ret = ZSTD_Compress(compression_info, raw.data(), raw.size(),
1486
+ compressed_output);
1487
+ break;
1488
+ default:
1489
+ // Do not recognize this compression type
1490
+ break;
1491
+ }
1492
+
1493
+ TEST_SYNC_POINT_CALLBACK("CompressData:TamperWithReturnValue",
1494
+ static_cast<void*>(&ret));
1495
+
1496
+ return ret;
1497
+ }
1498
+
1499
+ inline CacheAllocationPtr UncompressData(
1500
+ const UncompressionInfo& uncompression_info, const char* data, size_t n,
1501
+ size_t* uncompressed_size, uint32_t compress_format_version,
1502
+ MemoryAllocator* allocator = nullptr) {
1503
+ switch (uncompression_info.type()) {
1504
+ case kSnappyCompression:
1505
+ return Snappy_Uncompress(data, n, uncompressed_size, allocator);
1506
+ case kZlibCompression:
1507
+ return Zlib_Uncompress(uncompression_info, data, n, uncompressed_size,
1508
+ compress_format_version, allocator);
1509
+ case kBZip2Compression:
1510
+ return BZip2_Uncompress(data, n, uncompressed_size,
1511
+ compress_format_version, allocator);
1512
+ case kLZ4Compression:
1513
+ case kLZ4HCCompression:
1514
+ return LZ4_Uncompress(uncompression_info, data, n, uncompressed_size,
1515
+ compress_format_version, allocator);
1516
+ case kXpressCompression:
1517
+ // XPRESS allocates memory internally, thus no support for custom
1518
+ // allocator.
1519
+ return CacheAllocationPtr(XPRESS_Uncompress(data, n, uncompressed_size));
1520
+ case kZSTD:
1521
+ case kZSTDNotFinalCompression:
1522
+ return ZSTD_Uncompress(uncompression_info, data, n, uncompressed_size,
1523
+ allocator);
1524
+ default:
1525
+ return CacheAllocationPtr();
1526
+ }
1527
+ }
1528
+
1529
+ } // namespace ROCKSDB_NAMESPACE