@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,2883 @@
1
+ /* Copyright (c) 2011 The LevelDB Authors. All rights reserved.
2
+ Use of this source code is governed by a BSD-style license that can be
3
+ found in the LICENSE file. See the AUTHORS file for names of contributors. */
4
+ // Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
5
+
6
+ #include <stdio.h>
7
+
8
+ #ifndef ROCKSDB_LITE // Lite does not support C API
9
+
10
+ #include "rocksdb/c.h"
11
+
12
+ #include <stddef.h>
13
+ #include <stdlib.h>
14
+ #include <string.h>
15
+ #include <sys/types.h>
16
+ #ifndef OS_WIN
17
+ #include <unistd.h>
18
+ #endif
19
+ #include <inttypes.h>
20
+
21
+ // Can not use port/port.h macros as this is a c file
22
+ #ifdef OS_WIN
23
+ #include <windows.h>
24
+
25
+ // Ok for uniqueness
26
+ int geteuid() {
27
+ int result = 0;
28
+
29
+ result = ((int)GetCurrentProcessId() << 16);
30
+ result |= (int)GetCurrentThreadId();
31
+
32
+ return result;
33
+ }
34
+
35
+ // VS < 2015
36
+ #if defined(_MSC_VER) && (_MSC_VER < 1900)
37
+ #define snprintf _snprintf
38
+ #endif
39
+
40
+ #endif
41
+
42
+ const char* phase = "";
43
+ static char dbname[200];
44
+ static char sstfilename[200];
45
+ static char dbbackupname[200];
46
+ static char dbcheckpointname[200];
47
+ static char dbpathname[200];
48
+ static char secondary_path[200];
49
+
50
+ static void StartPhase(const char* name) {
51
+ fprintf(stderr, "=== Test %s\n", name);
52
+ phase = name;
53
+ }
54
+ #ifdef _MSC_VER
55
+ #pragma warning(push)
56
+ #pragma warning (disable: 4996) // getenv security warning
57
+ #endif
58
+ static const char* GetTempDir(void) {
59
+ const char* ret = getenv("TEST_TMPDIR");
60
+ if (ret == NULL || ret[0] == '\0')
61
+ #ifdef OS_WIN
62
+ ret = getenv("TEMP");
63
+ #else
64
+ ret = "/tmp";
65
+ #endif
66
+ return ret;
67
+ }
68
+ #ifdef _MSC_VER
69
+ #pragma warning(pop)
70
+ #endif
71
+
72
+ #define CheckNoError(err) \
73
+ if ((err) != NULL) { \
74
+ fprintf(stderr, "%s:%d: %s: %s\n", __FILE__, __LINE__, phase, (err)); \
75
+ abort(); \
76
+ }
77
+
78
+ #define CheckCondition(cond) \
79
+ if (!(cond)) { \
80
+ fprintf(stderr, "%s:%d: %s: %s\n", __FILE__, __LINE__, phase, #cond); \
81
+ abort(); \
82
+ }
83
+
84
+ static void CheckEqual(const char* expected, const char* v, size_t n) {
85
+ if (expected == NULL && v == NULL) {
86
+ // ok
87
+ } else if (expected != NULL && v != NULL && n == strlen(expected) &&
88
+ memcmp(expected, v, n) == 0) {
89
+ // ok
90
+ return;
91
+ } else {
92
+ fprintf(stderr, "%s: expected '%s', got '%s'\n",
93
+ phase,
94
+ (expected ? expected : "(null)"),
95
+ (v ? v : "(null"));
96
+ abort();
97
+ }
98
+ }
99
+
100
+ static void Free(char** ptr) {
101
+ if (*ptr) {
102
+ free(*ptr);
103
+ *ptr = NULL;
104
+ }
105
+ }
106
+
107
+ static void CheckValue(
108
+ char* err,
109
+ const char* expected,
110
+ char** actual,
111
+ size_t actual_length) {
112
+ CheckNoError(err);
113
+ CheckEqual(expected, *actual, actual_length);
114
+ Free(actual);
115
+ }
116
+
117
+ static void CheckGet(
118
+ rocksdb_t* db,
119
+ const rocksdb_readoptions_t* options,
120
+ const char* key,
121
+ const char* expected) {
122
+ char* err = NULL;
123
+ size_t val_len;
124
+ char* val;
125
+ val = rocksdb_get(db, options, key, strlen(key), &val_len, &err);
126
+ CheckNoError(err);
127
+ CheckEqual(expected, val, val_len);
128
+ Free(&val);
129
+ }
130
+
131
+ static void CheckGetCF(
132
+ rocksdb_t* db,
133
+ const rocksdb_readoptions_t* options,
134
+ rocksdb_column_family_handle_t* handle,
135
+ const char* key,
136
+ const char* expected) {
137
+ char* err = NULL;
138
+ size_t val_len;
139
+ char* val;
140
+ val = rocksdb_get_cf(db, options, handle, key, strlen(key), &val_len, &err);
141
+ CheckNoError(err);
142
+ CheckEqual(expected, val, val_len);
143
+ Free(&val);
144
+ }
145
+
146
+ static void CheckPinGet(rocksdb_t* db, const rocksdb_readoptions_t* options,
147
+ const char* key, const char* expected) {
148
+ char* err = NULL;
149
+ size_t val_len;
150
+ const char* val;
151
+ rocksdb_pinnableslice_t* p;
152
+ p = rocksdb_get_pinned(db, options, key, strlen(key), &err);
153
+ CheckNoError(err);
154
+ val = rocksdb_pinnableslice_value(p, &val_len);
155
+ CheckEqual(expected, val, val_len);
156
+ rocksdb_pinnableslice_destroy(p);
157
+ }
158
+
159
+ static void CheckPinGetCF(rocksdb_t* db, const rocksdb_readoptions_t* options,
160
+ rocksdb_column_family_handle_t* handle,
161
+ const char* key, const char* expected) {
162
+ char* err = NULL;
163
+ size_t val_len;
164
+ const char* val;
165
+ rocksdb_pinnableslice_t* p;
166
+ p = rocksdb_get_pinned_cf(db, options, handle, key, strlen(key), &err);
167
+ CheckNoError(err);
168
+ val = rocksdb_pinnableslice_value(p, &val_len);
169
+ CheckEqual(expected, val, val_len);
170
+ rocksdb_pinnableslice_destroy(p);
171
+ }
172
+
173
+ static void CheckIter(rocksdb_iterator_t* iter,
174
+ const char* key, const char* val) {
175
+ size_t len;
176
+ const char* str;
177
+ str = rocksdb_iter_key(iter, &len);
178
+ CheckEqual(key, str, len);
179
+ str = rocksdb_iter_value(iter, &len);
180
+ CheckEqual(val, str, len);
181
+ }
182
+
183
+ // Callback from rocksdb_writebatch_iterate()
184
+ static void CheckPut(void* ptr,
185
+ const char* k, size_t klen,
186
+ const char* v, size_t vlen) {
187
+ int* state = (int*) ptr;
188
+ CheckCondition(*state < 2);
189
+ switch (*state) {
190
+ case 0:
191
+ CheckEqual("bar", k, klen);
192
+ CheckEqual("b", v, vlen);
193
+ break;
194
+ case 1:
195
+ CheckEqual("box", k, klen);
196
+ CheckEqual("c", v, vlen);
197
+ break;
198
+ }
199
+ (*state)++;
200
+ }
201
+
202
+ // Callback from rocksdb_writebatch_iterate()
203
+ static void CheckDel(void* ptr, const char* k, size_t klen) {
204
+ int* state = (int*) ptr;
205
+ CheckCondition(*state == 2);
206
+ CheckEqual("bar", k, klen);
207
+ (*state)++;
208
+ }
209
+
210
+ static void CmpDestroy(void* arg) { (void)arg; }
211
+
212
+ static int CmpCompare(void* arg, const char* a, size_t alen,
213
+ const char* b, size_t blen) {
214
+ (void)arg;
215
+ size_t n = (alen < blen) ? alen : blen;
216
+ int r = memcmp(a, b, n);
217
+ if (r == 0) {
218
+ if (alen < blen) r = -1;
219
+ else if (alen > blen) r = +1;
220
+ }
221
+ return r;
222
+ }
223
+
224
+ static const char* CmpName(void* arg) {
225
+ (void)arg;
226
+ return "foo";
227
+ }
228
+
229
+ // Custom filter policy
230
+ static unsigned char fake_filter_result = 1;
231
+ static void FilterDestroy(void* arg) { (void)arg; }
232
+ static const char* FilterName(void* arg) {
233
+ (void)arg;
234
+ return "TestFilter";
235
+ }
236
+ static char* FilterCreate(
237
+ void* arg,
238
+ const char* const* key_array, const size_t* key_length_array,
239
+ int num_keys,
240
+ size_t* filter_length) {
241
+ (void)arg;
242
+ (void)key_array;
243
+ (void)key_length_array;
244
+ (void)num_keys;
245
+ *filter_length = 4;
246
+ char* result = malloc(4);
247
+ memcpy(result, "fake", 4);
248
+ return result;
249
+ }
250
+ static unsigned char FilterKeyMatch(
251
+ void* arg,
252
+ const char* key, size_t length,
253
+ const char* filter, size_t filter_length) {
254
+ (void)arg;
255
+ (void)key;
256
+ (void)length;
257
+ CheckCondition(filter_length == 4);
258
+ CheckCondition(memcmp(filter, "fake", 4) == 0);
259
+ return fake_filter_result;
260
+ }
261
+
262
+ // Custom compaction filter
263
+ static void CFilterDestroy(void* arg) { (void)arg; }
264
+ static const char* CFilterName(void* arg) {
265
+ (void)arg;
266
+ return "foo";
267
+ }
268
+ static unsigned char CFilterFilter(void* arg, int level, const char* key,
269
+ size_t key_length,
270
+ const char* existing_value,
271
+ size_t value_length, char** new_value,
272
+ size_t* new_value_length,
273
+ unsigned char* value_changed) {
274
+ (void)arg;
275
+ (void)level;
276
+ (void)existing_value;
277
+ (void)value_length;
278
+ if (key_length == 3) {
279
+ if (memcmp(key, "bar", key_length) == 0) {
280
+ return 1;
281
+ } else if (memcmp(key, "baz", key_length) == 0) {
282
+ *value_changed = 1;
283
+ *new_value = "newbazvalue";
284
+ *new_value_length = 11;
285
+ return 0;
286
+ }
287
+ }
288
+ return 0;
289
+ }
290
+
291
+ static void CFilterFactoryDestroy(void* arg) { (void)arg; }
292
+ static const char* CFilterFactoryName(void* arg) {
293
+ (void)arg;
294
+ return "foo";
295
+ }
296
+ static rocksdb_compactionfilter_t* CFilterCreate(
297
+ void* arg, rocksdb_compactionfiltercontext_t* context) {
298
+ (void)arg;
299
+ (void)context;
300
+ return rocksdb_compactionfilter_create(NULL, CFilterDestroy, CFilterFilter,
301
+ CFilterName);
302
+ }
303
+
304
+ static rocksdb_t* CheckCompaction(rocksdb_t* db, rocksdb_options_t* options,
305
+ rocksdb_readoptions_t* roptions,
306
+ rocksdb_writeoptions_t* woptions) {
307
+ char* err = NULL;
308
+ db = rocksdb_open(options, dbname, &err);
309
+ CheckNoError(err);
310
+ rocksdb_put(db, woptions, "foo", 3, "foovalue", 8, &err);
311
+ CheckNoError(err);
312
+ CheckGet(db, roptions, "foo", "foovalue");
313
+ rocksdb_put(db, woptions, "bar", 3, "barvalue", 8, &err);
314
+ CheckNoError(err);
315
+ CheckGet(db, roptions, "bar", "barvalue");
316
+ rocksdb_put(db, woptions, "baz", 3, "bazvalue", 8, &err);
317
+ CheckNoError(err);
318
+ CheckGet(db, roptions, "baz", "bazvalue");
319
+
320
+ // Force compaction
321
+ rocksdb_compact_range(db, NULL, 0, NULL, 0);
322
+ // should have filtered bar, but not foo
323
+ CheckGet(db, roptions, "foo", "foovalue");
324
+ CheckGet(db, roptions, "bar", NULL);
325
+ CheckGet(db, roptions, "baz", "newbazvalue");
326
+ return db;
327
+ }
328
+
329
+ // Custom merge operator
330
+ static void MergeOperatorDestroy(void* arg) { (void)arg; }
331
+ static const char* MergeOperatorName(void* arg) {
332
+ (void)arg;
333
+ return "TestMergeOperator";
334
+ }
335
+ static char* MergeOperatorFullMerge(
336
+ void* arg,
337
+ const char* key, size_t key_length,
338
+ const char* existing_value, size_t existing_value_length,
339
+ const char* const* operands_list, const size_t* operands_list_length,
340
+ int num_operands,
341
+ unsigned char* success, size_t* new_value_length) {
342
+ (void)arg;
343
+ (void)key;
344
+ (void)key_length;
345
+ (void)existing_value;
346
+ (void)existing_value_length;
347
+ (void)operands_list;
348
+ (void)operands_list_length;
349
+ (void)num_operands;
350
+ *new_value_length = 4;
351
+ *success = 1;
352
+ char* result = malloc(4);
353
+ memcpy(result, "fake", 4);
354
+ return result;
355
+ }
356
+ static char* MergeOperatorPartialMerge(
357
+ void* arg,
358
+ const char* key, size_t key_length,
359
+ const char* const* operands_list, const size_t* operands_list_length,
360
+ int num_operands,
361
+ unsigned char* success, size_t* new_value_length) {
362
+ (void)arg;
363
+ (void)key;
364
+ (void)key_length;
365
+ (void)operands_list;
366
+ (void)operands_list_length;
367
+ (void)num_operands;
368
+ *new_value_length = 4;
369
+ *success = 1;
370
+ char* result = malloc(4);
371
+ memcpy(result, "fake", 4);
372
+ return result;
373
+ }
374
+
375
+ static void CheckTxnGet(
376
+ rocksdb_transaction_t* txn,
377
+ const rocksdb_readoptions_t* options,
378
+ const char* key,
379
+ const char* expected) {
380
+ char* err = NULL;
381
+ size_t val_len;
382
+ char* val;
383
+ val = rocksdb_transaction_get(txn, options, key, strlen(key), &val_len, &err);
384
+ CheckNoError(err);
385
+ CheckEqual(expected, val, val_len);
386
+ Free(&val);
387
+ }
388
+
389
+ static void CheckTxnGetCF(rocksdb_transaction_t* txn,
390
+ const rocksdb_readoptions_t* options,
391
+ rocksdb_column_family_handle_t* column_family,
392
+ const char* key, const char* expected) {
393
+ char* err = NULL;
394
+ size_t val_len;
395
+ char* val;
396
+ val = rocksdb_transaction_get_cf(txn, options, column_family, key,
397
+ strlen(key), &val_len, &err);
398
+ CheckNoError(err);
399
+ CheckEqual(expected, val, val_len);
400
+ Free(&val);
401
+ }
402
+
403
+ static void CheckTxnDBGet(
404
+ rocksdb_transactiondb_t* txn_db,
405
+ const rocksdb_readoptions_t* options,
406
+ const char* key,
407
+ const char* expected) {
408
+ char* err = NULL;
409
+ size_t val_len;
410
+ char* val;
411
+ val = rocksdb_transactiondb_get(txn_db, options, key, strlen(key), &val_len, &err);
412
+ CheckNoError(err);
413
+ CheckEqual(expected, val, val_len);
414
+ Free(&val);
415
+ }
416
+
417
+ static void CheckTxnDBGetCF(rocksdb_transactiondb_t* txn_db,
418
+ const rocksdb_readoptions_t* options,
419
+ rocksdb_column_family_handle_t* column_family,
420
+ const char* key, const char* expected) {
421
+ char* err = NULL;
422
+ size_t val_len;
423
+ char* val;
424
+ val = rocksdb_transactiondb_get_cf(txn_db, options, column_family, key,
425
+ strlen(key), &val_len, &err);
426
+ CheckNoError(err);
427
+ CheckEqual(expected, val, val_len);
428
+ Free(&val);
429
+ }
430
+
431
+ int main(int argc, char** argv) {
432
+ (void)argc;
433
+ (void)argv;
434
+ rocksdb_t* db;
435
+ rocksdb_comparator_t* cmp;
436
+ rocksdb_cache_t* cache;
437
+ rocksdb_dbpath_t *dbpath;
438
+ rocksdb_env_t* env;
439
+ rocksdb_options_t* options;
440
+ rocksdb_compactoptions_t* coptions;
441
+ rocksdb_block_based_table_options_t* table_options;
442
+ rocksdb_readoptions_t* roptions;
443
+ rocksdb_writeoptions_t* woptions;
444
+ rocksdb_ratelimiter_t* rate_limiter;
445
+ rocksdb_transactiondb_t* txn_db;
446
+ rocksdb_transactiondb_options_t* txn_db_options;
447
+ rocksdb_transaction_t* txn;
448
+ rocksdb_transaction_options_t* txn_options;
449
+ rocksdb_optimistictransactiondb_t* otxn_db;
450
+ rocksdb_optimistictransaction_options_t* otxn_options;
451
+ char* err = NULL;
452
+ int run = -1;
453
+
454
+ snprintf(dbname, sizeof(dbname),
455
+ "%s/rocksdb_c_test-%d",
456
+ GetTempDir(),
457
+ ((int) geteuid()));
458
+
459
+ snprintf(dbbackupname, sizeof(dbbackupname),
460
+ "%s/rocksdb_c_test-%d-backup",
461
+ GetTempDir(),
462
+ ((int) geteuid()));
463
+
464
+ snprintf(dbcheckpointname, sizeof(dbcheckpointname),
465
+ "%s/rocksdb_c_test-%d-checkpoint",
466
+ GetTempDir(),
467
+ ((int) geteuid()));
468
+
469
+ snprintf(sstfilename, sizeof(sstfilename),
470
+ "%s/rocksdb_c_test-%d-sst",
471
+ GetTempDir(),
472
+ ((int)geteuid()));
473
+
474
+ snprintf(dbpathname, sizeof(dbpathname),
475
+ "%s/rocksdb_c_test-%d-dbpath",
476
+ GetTempDir(),
477
+ ((int) geteuid()));
478
+
479
+ StartPhase("create_objects");
480
+ cmp = rocksdb_comparator_create(NULL, CmpDestroy, CmpCompare, CmpName);
481
+ dbpath = rocksdb_dbpath_create(dbpathname, 1024 * 1024);
482
+ env = rocksdb_create_default_env();
483
+ cache = rocksdb_cache_create_lru(100000);
484
+
485
+ options = rocksdb_options_create();
486
+ rocksdb_options_set_comparator(options, cmp);
487
+ rocksdb_options_set_error_if_exists(options, 1);
488
+ rocksdb_options_set_env(options, env);
489
+ rocksdb_options_set_info_log(options, NULL);
490
+ rocksdb_options_set_write_buffer_size(options, 100000);
491
+ rocksdb_options_set_paranoid_checks(options, 1);
492
+ rocksdb_options_set_max_open_files(options, 10);
493
+ rocksdb_options_set_base_background_compactions(options, 1);
494
+
495
+ table_options = rocksdb_block_based_options_create();
496
+ rocksdb_block_based_options_set_block_cache(table_options, cache);
497
+ rocksdb_block_based_options_set_data_block_index_type(table_options, 1);
498
+ rocksdb_block_based_options_set_data_block_hash_ratio(table_options, 0.75);
499
+ rocksdb_options_set_block_based_table_factory(options, table_options);
500
+
501
+ rocksdb_options_set_compression(options, rocksdb_no_compression);
502
+ rocksdb_options_set_compression_options(options, -14, -1, 0, 0);
503
+ int compression_levels[] = {rocksdb_no_compression, rocksdb_no_compression,
504
+ rocksdb_no_compression, rocksdb_no_compression};
505
+ rocksdb_options_set_compression_per_level(options, compression_levels, 4);
506
+ rate_limiter = rocksdb_ratelimiter_create(1000 * 1024 * 1024, 100 * 1000, 10);
507
+ rocksdb_options_set_ratelimiter(options, rate_limiter);
508
+ rocksdb_ratelimiter_destroy(rate_limiter);
509
+
510
+ roptions = rocksdb_readoptions_create();
511
+ rocksdb_readoptions_set_verify_checksums(roptions, 1);
512
+ rocksdb_readoptions_set_fill_cache(roptions, 1);
513
+
514
+ woptions = rocksdb_writeoptions_create();
515
+ rocksdb_writeoptions_set_sync(woptions, 1);
516
+
517
+ coptions = rocksdb_compactoptions_create();
518
+ rocksdb_compactoptions_set_exclusive_manual_compaction(coptions, 1);
519
+
520
+ StartPhase("destroy");
521
+ rocksdb_destroy_db(options, dbname, &err);
522
+ Free(&err);
523
+
524
+ StartPhase("open_error");
525
+ rocksdb_open(options, dbname, &err);
526
+ CheckCondition(err != NULL);
527
+ Free(&err);
528
+
529
+ StartPhase("open");
530
+ rocksdb_options_set_create_if_missing(options, 1);
531
+ db = rocksdb_open(options, dbname, &err);
532
+ CheckNoError(err);
533
+ CheckGet(db, roptions, "foo", NULL);
534
+
535
+ StartPhase("put");
536
+ rocksdb_put(db, woptions, "foo", 3, "hello", 5, &err);
537
+ CheckNoError(err);
538
+ CheckGet(db, roptions, "foo", "hello");
539
+
540
+ StartPhase("backup_and_restore");
541
+ {
542
+ rocksdb_destroy_db(options, dbbackupname, &err);
543
+ CheckNoError(err);
544
+
545
+ rocksdb_backup_engine_t *be = rocksdb_backup_engine_open(options, dbbackupname, &err);
546
+ CheckNoError(err);
547
+
548
+ rocksdb_backup_engine_create_new_backup(be, db, &err);
549
+ CheckNoError(err);
550
+
551
+ // need a change to trigger a new backup
552
+ rocksdb_delete(db, woptions, "does-not-exist", 14, &err);
553
+ CheckNoError(err);
554
+
555
+ rocksdb_backup_engine_create_new_backup(be, db, &err);
556
+ CheckNoError(err);
557
+
558
+ const rocksdb_backup_engine_info_t* bei = rocksdb_backup_engine_get_backup_info(be);
559
+ CheckCondition(rocksdb_backup_engine_info_count(bei) > 1);
560
+ rocksdb_backup_engine_info_destroy(bei);
561
+
562
+ rocksdb_backup_engine_purge_old_backups(be, 1, &err);
563
+ CheckNoError(err);
564
+
565
+ bei = rocksdb_backup_engine_get_backup_info(be);
566
+ CheckCondition(rocksdb_backup_engine_info_count(bei) == 1);
567
+ rocksdb_backup_engine_info_destroy(bei);
568
+
569
+ rocksdb_delete(db, woptions, "foo", 3, &err);
570
+ CheckNoError(err);
571
+
572
+ rocksdb_close(db);
573
+
574
+ rocksdb_destroy_db(options, dbname, &err);
575
+ CheckNoError(err);
576
+
577
+ rocksdb_restore_options_t *restore_options = rocksdb_restore_options_create();
578
+ rocksdb_restore_options_set_keep_log_files(restore_options, 0);
579
+ rocksdb_backup_engine_restore_db_from_latest_backup(be, dbname, dbname, restore_options, &err);
580
+ CheckNoError(err);
581
+ rocksdb_restore_options_destroy(restore_options);
582
+
583
+ rocksdb_options_set_error_if_exists(options, 0);
584
+ db = rocksdb_open(options, dbname, &err);
585
+ CheckNoError(err);
586
+ rocksdb_options_set_error_if_exists(options, 1);
587
+
588
+ CheckGet(db, roptions, "foo", "hello");
589
+
590
+ rocksdb_backup_engine_close(be);
591
+ }
592
+
593
+ StartPhase("checkpoint");
594
+ {
595
+ rocksdb_destroy_db(options, dbcheckpointname, &err);
596
+ CheckNoError(err);
597
+
598
+ rocksdb_checkpoint_t* checkpoint = rocksdb_checkpoint_object_create(db, &err);
599
+ CheckNoError(err);
600
+
601
+ rocksdb_checkpoint_create(checkpoint, dbcheckpointname, 0, &err);
602
+ CheckNoError(err);
603
+
604
+ // start a new database from the checkpoint
605
+ rocksdb_close(db);
606
+ rocksdb_options_set_error_if_exists(options, 0);
607
+ db = rocksdb_open(options, dbcheckpointname, &err);
608
+ CheckNoError(err);
609
+
610
+ CheckGet(db, roptions, "foo", "hello");
611
+
612
+ rocksdb_checkpoint_object_destroy(checkpoint);
613
+
614
+ rocksdb_close(db);
615
+ rocksdb_destroy_db(options, dbcheckpointname, &err);
616
+ CheckNoError(err);
617
+
618
+ db = rocksdb_open(options, dbname, &err);
619
+ CheckNoError(err);
620
+ rocksdb_options_set_error_if_exists(options, 1);
621
+ }
622
+
623
+ StartPhase("compactall");
624
+ rocksdb_compact_range(db, NULL, 0, NULL, 0);
625
+ CheckGet(db, roptions, "foo", "hello");
626
+
627
+ StartPhase("compactrange");
628
+ rocksdb_compact_range(db, "a", 1, "z", 1);
629
+ CheckGet(db, roptions, "foo", "hello");
630
+
631
+ StartPhase("compactallopt");
632
+ rocksdb_compact_range_opt(db, coptions, NULL, 0, NULL, 0);
633
+ CheckGet(db, roptions, "foo", "hello");
634
+
635
+ StartPhase("compactrangeopt");
636
+ rocksdb_compact_range_opt(db, coptions, "a", 1, "z", 1);
637
+ CheckGet(db, roptions, "foo", "hello");
638
+
639
+ // Simple check cache usage
640
+ StartPhase("cache_usage");
641
+ {
642
+ rocksdb_readoptions_set_pin_data(roptions, 1);
643
+ rocksdb_iterator_t* iter = rocksdb_create_iterator(db, roptions);
644
+ rocksdb_iter_seek(iter, "foo", 3);
645
+
646
+ size_t usage = rocksdb_cache_get_usage(cache);
647
+ CheckCondition(usage > 0);
648
+
649
+ size_t pin_usage = rocksdb_cache_get_pinned_usage(cache);
650
+ CheckCondition(pin_usage > 0);
651
+
652
+ rocksdb_iter_next(iter);
653
+ rocksdb_iter_destroy(iter);
654
+ rocksdb_readoptions_set_pin_data(roptions, 0);
655
+ }
656
+
657
+ StartPhase("addfile");
658
+ {
659
+ rocksdb_envoptions_t* env_opt = rocksdb_envoptions_create();
660
+ rocksdb_options_t* io_options = rocksdb_options_create();
661
+ rocksdb_sstfilewriter_t* writer =
662
+ rocksdb_sstfilewriter_create(env_opt, io_options);
663
+
664
+ remove(sstfilename);
665
+ rocksdb_sstfilewriter_open(writer, sstfilename, &err);
666
+ CheckNoError(err);
667
+ rocksdb_sstfilewriter_put(writer, "sstk1", 5, "v1", 2, &err);
668
+ CheckNoError(err);
669
+ rocksdb_sstfilewriter_put(writer, "sstk2", 5, "v2", 2, &err);
670
+ CheckNoError(err);
671
+ rocksdb_sstfilewriter_put(writer, "sstk3", 5, "v3", 2, &err);
672
+ CheckNoError(err);
673
+ rocksdb_sstfilewriter_finish(writer, &err);
674
+ CheckNoError(err);
675
+
676
+ rocksdb_ingestexternalfileoptions_t* ing_opt =
677
+ rocksdb_ingestexternalfileoptions_create();
678
+ const char* file_list[1] = {sstfilename};
679
+ rocksdb_ingest_external_file(db, file_list, 1, ing_opt, &err);
680
+ CheckNoError(err);
681
+ CheckGet(db, roptions, "sstk1", "v1");
682
+ CheckGet(db, roptions, "sstk2", "v2");
683
+ CheckGet(db, roptions, "sstk3", "v3");
684
+
685
+ remove(sstfilename);
686
+ rocksdb_sstfilewriter_open(writer, sstfilename, &err);
687
+ CheckNoError(err);
688
+ rocksdb_sstfilewriter_put(writer, "sstk2", 5, "v4", 2, &err);
689
+ CheckNoError(err);
690
+ rocksdb_sstfilewriter_put(writer, "sstk22", 6, "v5", 2, &err);
691
+ CheckNoError(err);
692
+ rocksdb_sstfilewriter_put(writer, "sstk3", 5, "v6", 2, &err);
693
+ CheckNoError(err);
694
+ rocksdb_sstfilewriter_finish(writer, &err);
695
+ CheckNoError(err);
696
+
697
+ rocksdb_ingest_external_file(db, file_list, 1, ing_opt, &err);
698
+ CheckNoError(err);
699
+ CheckGet(db, roptions, "sstk1", "v1");
700
+ CheckGet(db, roptions, "sstk2", "v4");
701
+ CheckGet(db, roptions, "sstk22", "v5");
702
+ CheckGet(db, roptions, "sstk3", "v6");
703
+
704
+ rocksdb_ingestexternalfileoptions_destroy(ing_opt);
705
+ rocksdb_sstfilewriter_destroy(writer);
706
+ rocksdb_options_destroy(io_options);
707
+ rocksdb_envoptions_destroy(env_opt);
708
+
709
+ // Delete all keys we just ingested
710
+ rocksdb_delete(db, woptions, "sstk1", 5, &err);
711
+ CheckNoError(err);
712
+ rocksdb_delete(db, woptions, "sstk2", 5, &err);
713
+ CheckNoError(err);
714
+ rocksdb_delete(db, woptions, "sstk22", 6, &err);
715
+ CheckNoError(err);
716
+ rocksdb_delete(db, woptions, "sstk3", 5, &err);
717
+ CheckNoError(err);
718
+ }
719
+
720
+ StartPhase("writebatch");
721
+ {
722
+ rocksdb_writebatch_t* wb = rocksdb_writebatch_create();
723
+ rocksdb_writebatch_put(wb, "foo", 3, "a", 1);
724
+ rocksdb_writebatch_clear(wb);
725
+ rocksdb_writebatch_put(wb, "bar", 3, "b", 1);
726
+ rocksdb_writebatch_put(wb, "box", 3, "c", 1);
727
+ rocksdb_writebatch_delete(wb, "bar", 3);
728
+ rocksdb_write(db, woptions, wb, &err);
729
+ CheckNoError(err);
730
+ CheckGet(db, roptions, "foo", "hello");
731
+ CheckGet(db, roptions, "bar", NULL);
732
+ CheckGet(db, roptions, "box", "c");
733
+ int pos = 0;
734
+ rocksdb_writebatch_iterate(wb, &pos, CheckPut, CheckDel);
735
+ CheckCondition(pos == 3);
736
+ rocksdb_writebatch_clear(wb);
737
+ rocksdb_writebatch_put(wb, "bar", 3, "b", 1);
738
+ rocksdb_writebatch_put(wb, "bay", 3, "d", 1);
739
+ rocksdb_writebatch_delete_range(wb, "bar", 3, "bay", 3);
740
+ rocksdb_write(db, woptions, wb, &err);
741
+ CheckNoError(err);
742
+ CheckGet(db, roptions, "bar", NULL);
743
+ CheckGet(db, roptions, "bay", "d");
744
+ rocksdb_writebatch_clear(wb);
745
+ const char* start_list[1] = {"bay"};
746
+ const size_t start_sizes[1] = {3};
747
+ const char* end_list[1] = {"baz"};
748
+ const size_t end_sizes[1] = {3};
749
+ rocksdb_writebatch_delete_rangev(wb, 1, start_list, start_sizes, end_list,
750
+ end_sizes);
751
+ rocksdb_write(db, woptions, wb, &err);
752
+ CheckNoError(err);
753
+ CheckGet(db, roptions, "bay", NULL);
754
+ rocksdb_writebatch_destroy(wb);
755
+ }
756
+
757
+ StartPhase("writebatch_vectors");
758
+ {
759
+ rocksdb_writebatch_t* wb = rocksdb_writebatch_create();
760
+ const char* k_list[2] = { "z", "ap" };
761
+ const size_t k_sizes[2] = { 1, 2 };
762
+ const char* v_list[3] = { "x", "y", "z" };
763
+ const size_t v_sizes[3] = { 1, 1, 1 };
764
+ rocksdb_writebatch_putv(wb, 2, k_list, k_sizes, 3, v_list, v_sizes);
765
+ rocksdb_write(db, woptions, wb, &err);
766
+ CheckNoError(err);
767
+ CheckGet(db, roptions, "zap", "xyz");
768
+ rocksdb_writebatch_delete(wb, "zap", 3);
769
+ rocksdb_write(db, woptions, wb, &err);
770
+ CheckNoError(err);
771
+ CheckGet(db, roptions, "zap", NULL);
772
+ rocksdb_writebatch_destroy(wb);
773
+ }
774
+
775
+ StartPhase("writebatch_savepoint");
776
+ {
777
+ rocksdb_writebatch_t* wb = rocksdb_writebatch_create();
778
+ rocksdb_writebatch_set_save_point(wb);
779
+ rocksdb_writebatch_set_save_point(wb);
780
+ const char* k_list[2] = {"z", "ap"};
781
+ const size_t k_sizes[2] = {1, 2};
782
+ const char* v_list[3] = {"x", "y", "z"};
783
+ const size_t v_sizes[3] = {1, 1, 1};
784
+ rocksdb_writebatch_pop_save_point(wb, &err);
785
+ CheckNoError(err);
786
+ rocksdb_writebatch_putv(wb, 2, k_list, k_sizes, 3, v_list, v_sizes);
787
+ rocksdb_writebatch_rollback_to_save_point(wb, &err);
788
+ CheckNoError(err);
789
+ rocksdb_write(db, woptions, wb, &err);
790
+ CheckNoError(err);
791
+ CheckGet(db, roptions, "zap", NULL);
792
+ rocksdb_writebatch_destroy(wb);
793
+ }
794
+
795
+ StartPhase("writebatch_rep");
796
+ {
797
+ rocksdb_writebatch_t* wb1 = rocksdb_writebatch_create();
798
+ rocksdb_writebatch_put(wb1, "baz", 3, "d", 1);
799
+ rocksdb_writebatch_put(wb1, "quux", 4, "e", 1);
800
+ rocksdb_writebatch_delete(wb1, "quux", 4);
801
+ size_t repsize1 = 0;
802
+ const char* rep = rocksdb_writebatch_data(wb1, &repsize1);
803
+ rocksdb_writebatch_t* wb2 = rocksdb_writebatch_create_from(rep, repsize1);
804
+ CheckCondition(rocksdb_writebatch_count(wb1) ==
805
+ rocksdb_writebatch_count(wb2));
806
+ size_t repsize2 = 0;
807
+ CheckCondition(
808
+ memcmp(rep, rocksdb_writebatch_data(wb2, &repsize2), repsize1) == 0);
809
+ rocksdb_writebatch_destroy(wb1);
810
+ rocksdb_writebatch_destroy(wb2);
811
+ }
812
+
813
+ StartPhase("writebatch_wi");
814
+ {
815
+ rocksdb_writebatch_wi_t* wbi = rocksdb_writebatch_wi_create(0, 1);
816
+ rocksdb_writebatch_wi_put(wbi, "foo", 3, "a", 1);
817
+ rocksdb_writebatch_wi_clear(wbi);
818
+ rocksdb_writebatch_wi_put(wbi, "bar", 3, "b", 1);
819
+ rocksdb_writebatch_wi_put(wbi, "box", 3, "c", 1);
820
+ rocksdb_writebatch_wi_delete(wbi, "bar", 3);
821
+ int count = rocksdb_writebatch_wi_count(wbi);
822
+ CheckCondition(count == 3);
823
+ size_t size;
824
+ char* value;
825
+ value = rocksdb_writebatch_wi_get_from_batch(wbi, options, "box", 3, &size, &err);
826
+ CheckValue(err, "c", &value, size);
827
+ value = rocksdb_writebatch_wi_get_from_batch(wbi, options, "bar", 3, &size, &err);
828
+ CheckValue(err, NULL, &value, size);
829
+ value = rocksdb_writebatch_wi_get_from_batch_and_db(wbi, db, roptions, "foo", 3, &size, &err);
830
+ CheckValue(err, "hello", &value, size);
831
+ value = rocksdb_writebatch_wi_get_from_batch_and_db(wbi, db, roptions, "box", 3, &size, &err);
832
+ CheckValue(err, "c", &value, size);
833
+ rocksdb_write_writebatch_wi(db, woptions, wbi, &err);
834
+ CheckNoError(err);
835
+ CheckGet(db, roptions, "foo", "hello");
836
+ CheckGet(db, roptions, "bar", NULL);
837
+ CheckGet(db, roptions, "box", "c");
838
+ int pos = 0;
839
+ rocksdb_writebatch_wi_iterate(wbi, &pos, CheckPut, CheckDel);
840
+ CheckCondition(pos == 3);
841
+ rocksdb_writebatch_wi_clear(wbi);
842
+ rocksdb_writebatch_wi_destroy(wbi);
843
+ }
844
+
845
+ StartPhase("writebatch_wi_vectors");
846
+ {
847
+ rocksdb_writebatch_wi_t* wb = rocksdb_writebatch_wi_create(0, 1);
848
+ const char* k_list[2] = { "z", "ap" };
849
+ const size_t k_sizes[2] = { 1, 2 };
850
+ const char* v_list[3] = { "x", "y", "z" };
851
+ const size_t v_sizes[3] = { 1, 1, 1 };
852
+ rocksdb_writebatch_wi_putv(wb, 2, k_list, k_sizes, 3, v_list, v_sizes);
853
+ rocksdb_write_writebatch_wi(db, woptions, wb, &err);
854
+ CheckNoError(err);
855
+ CheckGet(db, roptions, "zap", "xyz");
856
+ rocksdb_writebatch_wi_delete(wb, "zap", 3);
857
+ rocksdb_write_writebatch_wi(db, woptions, wb, &err);
858
+ CheckNoError(err);
859
+ CheckGet(db, roptions, "zap", NULL);
860
+ rocksdb_writebatch_wi_destroy(wb);
861
+ }
862
+
863
+ StartPhase("writebatch_wi_savepoint");
864
+ {
865
+ rocksdb_writebatch_wi_t* wb = rocksdb_writebatch_wi_create(0, 1);
866
+ rocksdb_writebatch_wi_set_save_point(wb);
867
+ const char* k_list[2] = {"z", "ap"};
868
+ const size_t k_sizes[2] = {1, 2};
869
+ const char* v_list[3] = {"x", "y", "z"};
870
+ const size_t v_sizes[3] = {1, 1, 1};
871
+ rocksdb_writebatch_wi_putv(wb, 2, k_list, k_sizes, 3, v_list, v_sizes);
872
+ rocksdb_writebatch_wi_rollback_to_save_point(wb, &err);
873
+ CheckNoError(err);
874
+ rocksdb_write_writebatch_wi(db, woptions, wb, &err);
875
+ CheckNoError(err);
876
+ CheckGet(db, roptions, "zap", NULL);
877
+ rocksdb_writebatch_wi_destroy(wb);
878
+ }
879
+
880
+ StartPhase("iter");
881
+ {
882
+ rocksdb_iterator_t* iter = rocksdb_create_iterator(db, roptions);
883
+ CheckCondition(!rocksdb_iter_valid(iter));
884
+ rocksdb_iter_seek_to_first(iter);
885
+ CheckCondition(rocksdb_iter_valid(iter));
886
+ CheckIter(iter, "box", "c");
887
+ rocksdb_iter_next(iter);
888
+ CheckIter(iter, "foo", "hello");
889
+ rocksdb_iter_prev(iter);
890
+ CheckIter(iter, "box", "c");
891
+ rocksdb_iter_prev(iter);
892
+ CheckCondition(!rocksdb_iter_valid(iter));
893
+ rocksdb_iter_seek_to_last(iter);
894
+ CheckIter(iter, "foo", "hello");
895
+ rocksdb_iter_seek(iter, "b", 1);
896
+ CheckIter(iter, "box", "c");
897
+ rocksdb_iter_seek_for_prev(iter, "g", 1);
898
+ CheckIter(iter, "foo", "hello");
899
+ rocksdb_iter_seek_for_prev(iter, "box", 3);
900
+ CheckIter(iter, "box", "c");
901
+ rocksdb_iter_get_error(iter, &err);
902
+ CheckNoError(err);
903
+ rocksdb_iter_destroy(iter);
904
+ }
905
+
906
+ StartPhase("wbwi_iter");
907
+ {
908
+ rocksdb_iterator_t* base_iter = rocksdb_create_iterator(db, roptions);
909
+ rocksdb_writebatch_wi_t* wbi = rocksdb_writebatch_wi_create(0, 1);
910
+ rocksdb_writebatch_wi_put(wbi, "bar", 3, "b", 1);
911
+ rocksdb_writebatch_wi_delete(wbi, "foo", 3);
912
+ rocksdb_iterator_t* iter =
913
+ rocksdb_writebatch_wi_create_iterator_with_base(wbi, base_iter);
914
+ CheckCondition(!rocksdb_iter_valid(iter));
915
+ rocksdb_iter_seek_to_first(iter);
916
+ CheckCondition(rocksdb_iter_valid(iter));
917
+ CheckIter(iter, "bar", "b");
918
+ rocksdb_iter_next(iter);
919
+ CheckIter(iter, "box", "c");
920
+ rocksdb_iter_prev(iter);
921
+ CheckIter(iter, "bar", "b");
922
+ rocksdb_iter_prev(iter);
923
+ CheckCondition(!rocksdb_iter_valid(iter));
924
+ rocksdb_iter_seek_to_last(iter);
925
+ CheckIter(iter, "box", "c");
926
+ rocksdb_iter_seek(iter, "b", 1);
927
+ CheckIter(iter, "bar", "b");
928
+ rocksdb_iter_seek_for_prev(iter, "c", 1);
929
+ CheckIter(iter, "box", "c");
930
+ rocksdb_iter_seek_for_prev(iter, "box", 3);
931
+ CheckIter(iter, "box", "c");
932
+ rocksdb_iter_get_error(iter, &err);
933
+ CheckNoError(err);
934
+ rocksdb_iter_destroy(iter);
935
+ rocksdb_writebatch_wi_destroy(wbi);
936
+ }
937
+
938
+ StartPhase("multiget");
939
+ {
940
+ const char* keys[3] = { "box", "foo", "notfound" };
941
+ const size_t keys_sizes[3] = { 3, 3, 8 };
942
+ char* vals[3];
943
+ size_t vals_sizes[3];
944
+ char* errs[3];
945
+ rocksdb_multi_get(db, roptions, 3, keys, keys_sizes, vals, vals_sizes, errs);
946
+
947
+ int i;
948
+ for (i = 0; i < 3; i++) {
949
+ CheckEqual(NULL, errs[i], 0);
950
+ switch (i) {
951
+ case 0:
952
+ CheckEqual("c", vals[i], vals_sizes[i]);
953
+ break;
954
+ case 1:
955
+ CheckEqual("hello", vals[i], vals_sizes[i]);
956
+ break;
957
+ case 2:
958
+ CheckEqual(NULL, vals[i], vals_sizes[i]);
959
+ break;
960
+ }
961
+ Free(&vals[i]);
962
+ }
963
+ }
964
+
965
+ StartPhase("pin_get");
966
+ {
967
+ CheckPinGet(db, roptions, "box", "c");
968
+ CheckPinGet(db, roptions, "foo", "hello");
969
+ CheckPinGet(db, roptions, "notfound", NULL);
970
+ }
971
+
972
+ StartPhase("approximate_sizes");
973
+ {
974
+ int i;
975
+ int n = 20000;
976
+ char keybuf[100];
977
+ char valbuf[100];
978
+ uint64_t sizes[2];
979
+ const char* start[2] = { "a", "k00000000000000010000" };
980
+ size_t start_len[2] = { 1, 21 };
981
+ const char* limit[2] = { "k00000000000000010000", "z" };
982
+ size_t limit_len[2] = { 21, 1 };
983
+ rocksdb_writeoptions_set_sync(woptions, 0);
984
+ for (i = 0; i < n; i++) {
985
+ snprintf(keybuf, sizeof(keybuf), "k%020d", i);
986
+ snprintf(valbuf, sizeof(valbuf), "v%020d", i);
987
+ rocksdb_put(db, woptions, keybuf, strlen(keybuf), valbuf, strlen(valbuf),
988
+ &err);
989
+ CheckNoError(err);
990
+ }
991
+ rocksdb_approximate_sizes(db, 2, start, start_len, limit, limit_len, sizes,
992
+ &err);
993
+ CheckNoError(err);
994
+ CheckCondition(sizes[0] > 0);
995
+ CheckCondition(sizes[1] > 0);
996
+ }
997
+
998
+ StartPhase("property");
999
+ {
1000
+ char* prop = rocksdb_property_value(db, "nosuchprop");
1001
+ CheckCondition(prop == NULL);
1002
+ prop = rocksdb_property_value(db, "rocksdb.stats");
1003
+ CheckCondition(prop != NULL);
1004
+ Free(&prop);
1005
+ }
1006
+
1007
+ StartPhase("snapshot");
1008
+ {
1009
+ const rocksdb_snapshot_t* snap;
1010
+ snap = rocksdb_create_snapshot(db);
1011
+ rocksdb_delete(db, woptions, "foo", 3, &err);
1012
+ CheckNoError(err);
1013
+ rocksdb_readoptions_set_snapshot(roptions, snap);
1014
+ CheckGet(db, roptions, "foo", "hello");
1015
+ rocksdb_readoptions_set_snapshot(roptions, NULL);
1016
+ CheckGet(db, roptions, "foo", NULL);
1017
+ rocksdb_release_snapshot(db, snap);
1018
+ }
1019
+
1020
+ StartPhase("repair");
1021
+ {
1022
+ // If we do not compact here, then the lazy deletion of
1023
+ // files (https://reviews.facebook.net/D6123) would leave
1024
+ // around deleted files and the repair process will find
1025
+ // those files and put them back into the database.
1026
+ rocksdb_compact_range(db, NULL, 0, NULL, 0);
1027
+ rocksdb_close(db);
1028
+ rocksdb_options_set_create_if_missing(options, 0);
1029
+ rocksdb_options_set_error_if_exists(options, 0);
1030
+ rocksdb_options_set_wal_recovery_mode(options, 2);
1031
+ rocksdb_repair_db(options, dbname, &err);
1032
+ CheckNoError(err);
1033
+ db = rocksdb_open(options, dbname, &err);
1034
+ CheckNoError(err);
1035
+ CheckGet(db, roptions, "foo", NULL);
1036
+ CheckGet(db, roptions, "bar", NULL);
1037
+ CheckGet(db, roptions, "box", "c");
1038
+ rocksdb_options_set_create_if_missing(options, 1);
1039
+ rocksdb_options_set_error_if_exists(options, 1);
1040
+ }
1041
+
1042
+ StartPhase("filter");
1043
+ for (run = 0; run <= 2; run++) {
1044
+ // First run uses custom filter
1045
+ // Second run uses old block-based bloom filter
1046
+ // Third run uses full bloom filter
1047
+ CheckNoError(err);
1048
+ rocksdb_filterpolicy_t* policy;
1049
+ if (run == 0) {
1050
+ policy = rocksdb_filterpolicy_create(NULL, FilterDestroy, FilterCreate,
1051
+ FilterKeyMatch, NULL, FilterName);
1052
+ } else if (run == 1) {
1053
+ policy = rocksdb_filterpolicy_create_bloom(8);
1054
+ } else {
1055
+ policy = rocksdb_filterpolicy_create_bloom_full(8);
1056
+ }
1057
+ rocksdb_block_based_options_set_filter_policy(table_options, policy);
1058
+
1059
+ // Create new database
1060
+ rocksdb_close(db);
1061
+ rocksdb_destroy_db(options, dbname, &err);
1062
+ rocksdb_options_set_block_based_table_factory(options, table_options);
1063
+ db = rocksdb_open(options, dbname, &err);
1064
+ CheckNoError(err);
1065
+ rocksdb_put(db, woptions, "foo", 3, "foovalue", 8, &err);
1066
+ CheckNoError(err);
1067
+ rocksdb_put(db, woptions, "bar", 3, "barvalue", 8, &err);
1068
+ CheckNoError(err);
1069
+
1070
+ {
1071
+ // Add enough keys to get just one reasonably populated Bloom filter
1072
+ const int keys_to_add = 1500;
1073
+ int i;
1074
+ char keybuf[100];
1075
+ for (i = 0; i < keys_to_add; i++) {
1076
+ snprintf(keybuf, sizeof(keybuf), "yes%020d", i);
1077
+ rocksdb_put(db, woptions, keybuf, strlen(keybuf), "val", 3, &err);
1078
+ CheckNoError(err);
1079
+ }
1080
+ }
1081
+ rocksdb_compact_range(db, NULL, 0, NULL, 0);
1082
+
1083
+ fake_filter_result = 1;
1084
+ CheckGet(db, roptions, "foo", "foovalue");
1085
+ CheckGet(db, roptions, "bar", "barvalue");
1086
+ if (run == 0) {
1087
+ // Must not find value when custom filter returns false
1088
+ fake_filter_result = 0;
1089
+ CheckGet(db, roptions, "foo", NULL);
1090
+ CheckGet(db, roptions, "bar", NULL);
1091
+ fake_filter_result = 1;
1092
+
1093
+ CheckGet(db, roptions, "foo", "foovalue");
1094
+ CheckGet(db, roptions, "bar", "barvalue");
1095
+ }
1096
+
1097
+ {
1098
+ // Query some keys not added to identify Bloom filter implementation
1099
+ // from false positive queries, using perfcontext to detect Bloom
1100
+ // filter behavior
1101
+ rocksdb_perfcontext_t* perf = rocksdb_perfcontext_create();
1102
+ rocksdb_perfcontext_reset(perf);
1103
+
1104
+ const int keys_to_query = 10000;
1105
+ int i;
1106
+ char keybuf[100];
1107
+ for (i = 0; i < keys_to_query; i++) {
1108
+ fake_filter_result = i % 2;
1109
+ snprintf(keybuf, sizeof(keybuf), "no%020d", i);
1110
+ CheckGet(db, roptions, keybuf, NULL);
1111
+ }
1112
+
1113
+ const int hits =
1114
+ (int)rocksdb_perfcontext_metric(perf, rocksdb_bloom_sst_hit_count);
1115
+ if (run == 0) {
1116
+ // Due to half true, half false with fake filter result
1117
+ CheckCondition(hits == keys_to_query / 2);
1118
+ } else if (run == 1) {
1119
+ // Essentially a fingerprint of the block-based Bloom schema
1120
+ CheckCondition(hits == 241);
1121
+ } else {
1122
+ // Essentially a fingerprint of the full Bloom schema(s),
1123
+ // format_version < 5, which vary for three different CACHE_LINE_SIZEs
1124
+ CheckCondition(hits == 224 || hits == 180 || hits == 125);
1125
+ }
1126
+ CheckCondition(
1127
+ (keys_to_query - hits) ==
1128
+ (int)rocksdb_perfcontext_metric(perf, rocksdb_bloom_sst_miss_count));
1129
+
1130
+ rocksdb_perfcontext_destroy(perf);
1131
+ }
1132
+
1133
+ // Reset the policy
1134
+ rocksdb_block_based_options_set_filter_policy(table_options, NULL);
1135
+ rocksdb_options_set_block_based_table_factory(options, table_options);
1136
+ }
1137
+
1138
+ StartPhase("compaction_filter");
1139
+ {
1140
+ rocksdb_options_t* options_with_filter = rocksdb_options_create();
1141
+ rocksdb_options_set_create_if_missing(options_with_filter, 1);
1142
+ rocksdb_compactionfilter_t* cfilter;
1143
+ cfilter = rocksdb_compactionfilter_create(NULL, CFilterDestroy,
1144
+ CFilterFilter, CFilterName);
1145
+ // Create new database
1146
+ rocksdb_close(db);
1147
+ rocksdb_destroy_db(options_with_filter, dbname, &err);
1148
+ rocksdb_options_set_compaction_filter(options_with_filter, cfilter);
1149
+ db = CheckCompaction(db, options_with_filter, roptions, woptions);
1150
+
1151
+ rocksdb_options_set_compaction_filter(options_with_filter, NULL);
1152
+ rocksdb_compactionfilter_destroy(cfilter);
1153
+ rocksdb_options_destroy(options_with_filter);
1154
+ }
1155
+
1156
+ StartPhase("compaction_filter_factory");
1157
+ {
1158
+ rocksdb_options_t* options_with_filter_factory = rocksdb_options_create();
1159
+ rocksdb_options_set_create_if_missing(options_with_filter_factory, 1);
1160
+ rocksdb_compactionfilterfactory_t* factory;
1161
+ factory = rocksdb_compactionfilterfactory_create(
1162
+ NULL, CFilterFactoryDestroy, CFilterCreate, CFilterFactoryName);
1163
+ // Create new database
1164
+ rocksdb_close(db);
1165
+ rocksdb_destroy_db(options_with_filter_factory, dbname, &err);
1166
+ rocksdb_options_set_compaction_filter_factory(options_with_filter_factory,
1167
+ factory);
1168
+ db = CheckCompaction(db, options_with_filter_factory, roptions, woptions);
1169
+
1170
+ rocksdb_options_set_compaction_filter_factory(
1171
+ options_with_filter_factory, NULL);
1172
+ rocksdb_options_destroy(options_with_filter_factory);
1173
+ }
1174
+
1175
+ StartPhase("merge_operator");
1176
+ {
1177
+ rocksdb_mergeoperator_t* merge_operator;
1178
+ merge_operator = rocksdb_mergeoperator_create(
1179
+ NULL, MergeOperatorDestroy, MergeOperatorFullMerge,
1180
+ MergeOperatorPartialMerge, NULL, MergeOperatorName);
1181
+ // Create new database
1182
+ rocksdb_close(db);
1183
+ rocksdb_destroy_db(options, dbname, &err);
1184
+ rocksdb_options_set_merge_operator(options, merge_operator);
1185
+ db = rocksdb_open(options, dbname, &err);
1186
+ CheckNoError(err);
1187
+ rocksdb_put(db, woptions, "foo", 3, "foovalue", 8, &err);
1188
+ CheckNoError(err);
1189
+ CheckGet(db, roptions, "foo", "foovalue");
1190
+ rocksdb_merge(db, woptions, "foo", 3, "barvalue", 8, &err);
1191
+ CheckNoError(err);
1192
+ CheckGet(db, roptions, "foo", "fake");
1193
+
1194
+ // Merge of a non-existing value
1195
+ rocksdb_merge(db, woptions, "bar", 3, "barvalue", 8, &err);
1196
+ CheckNoError(err);
1197
+ CheckGet(db, roptions, "bar", "fake");
1198
+
1199
+ }
1200
+
1201
+ StartPhase("columnfamilies");
1202
+ {
1203
+ rocksdb_close(db);
1204
+ rocksdb_destroy_db(options, dbname, &err);
1205
+ CheckNoError(err);
1206
+
1207
+ rocksdb_options_t* db_options = rocksdb_options_create();
1208
+ rocksdb_options_set_create_if_missing(db_options, 1);
1209
+ db = rocksdb_open(db_options, dbname, &err);
1210
+ CheckNoError(err)
1211
+ rocksdb_column_family_handle_t* cfh;
1212
+ cfh = rocksdb_create_column_family(db, db_options, "cf1", &err);
1213
+ rocksdb_column_family_handle_destroy(cfh);
1214
+ CheckNoError(err);
1215
+ rocksdb_close(db);
1216
+
1217
+ size_t cflen;
1218
+ char** column_fams = rocksdb_list_column_families(db_options, dbname, &cflen, &err);
1219
+ CheckNoError(err);
1220
+ CheckEqual("default", column_fams[0], 7);
1221
+ CheckEqual("cf1", column_fams[1], 3);
1222
+ CheckCondition(cflen == 2);
1223
+ rocksdb_list_column_families_destroy(column_fams, cflen);
1224
+
1225
+ rocksdb_options_t* cf_options = rocksdb_options_create();
1226
+
1227
+ const char* cf_names[2] = {"default", "cf1"};
1228
+ const rocksdb_options_t* cf_opts[2] = {cf_options, cf_options};
1229
+ rocksdb_column_family_handle_t* handles[2];
1230
+ db = rocksdb_open_column_families(db_options, dbname, 2, cf_names, cf_opts, handles, &err);
1231
+ CheckNoError(err);
1232
+
1233
+ rocksdb_put_cf(db, woptions, handles[1], "foo", 3, "hello", 5, &err);
1234
+ CheckNoError(err);
1235
+
1236
+ rocksdb_put_cf(db, woptions, handles[1], "foobar1", 7, "hello1", 6, &err);
1237
+ CheckNoError(err);
1238
+ rocksdb_put_cf(db, woptions, handles[1], "foobar2", 7, "hello2", 6, &err);
1239
+ CheckNoError(err);
1240
+ rocksdb_put_cf(db, woptions, handles[1], "foobar3", 7, "hello3", 6, &err);
1241
+ CheckNoError(err);
1242
+ rocksdb_put_cf(db, woptions, handles[1], "foobar4", 7, "hello4", 6, &err);
1243
+ CheckNoError(err);
1244
+
1245
+ rocksdb_flushoptions_t *flush_options = rocksdb_flushoptions_create();
1246
+ rocksdb_flushoptions_set_wait(flush_options, 1);
1247
+ rocksdb_flush_cf(db, flush_options, handles[1], &err);
1248
+ CheckNoError(err)
1249
+ rocksdb_flushoptions_destroy(flush_options);
1250
+
1251
+ CheckGetCF(db, roptions, handles[1], "foo", "hello");
1252
+ CheckPinGetCF(db, roptions, handles[1], "foo", "hello");
1253
+
1254
+ rocksdb_delete_cf(db, woptions, handles[1], "foo", 3, &err);
1255
+ CheckNoError(err);
1256
+
1257
+ rocksdb_delete_range_cf(db, woptions, handles[1], "foobar2", 7, "foobar4",
1258
+ 7, &err);
1259
+ CheckNoError(err);
1260
+
1261
+ CheckGetCF(db, roptions, handles[1], "foo", NULL);
1262
+ CheckPinGetCF(db, roptions, handles[1], "foo", NULL);
1263
+
1264
+ rocksdb_writebatch_t* wb = rocksdb_writebatch_create();
1265
+ rocksdb_writebatch_put_cf(wb, handles[1], "baz", 3, "a", 1);
1266
+ rocksdb_writebatch_clear(wb);
1267
+ rocksdb_writebatch_put_cf(wb, handles[1], "bar", 3, "b", 1);
1268
+ rocksdb_writebatch_put_cf(wb, handles[1], "box", 3, "c", 1);
1269
+ rocksdb_writebatch_delete_cf(wb, handles[1], "bar", 3);
1270
+ rocksdb_write(db, woptions, wb, &err);
1271
+ CheckNoError(err);
1272
+ CheckGetCF(db, roptions, handles[1], "baz", NULL);
1273
+ CheckGetCF(db, roptions, handles[1], "bar", NULL);
1274
+ CheckGetCF(db, roptions, handles[1], "box", "c");
1275
+ CheckPinGetCF(db, roptions, handles[1], "baz", NULL);
1276
+ CheckPinGetCF(db, roptions, handles[1], "bar", NULL);
1277
+ CheckPinGetCF(db, roptions, handles[1], "box", "c");
1278
+ rocksdb_writebatch_destroy(wb);
1279
+
1280
+ const char* keys[3] = { "box", "box", "barfooxx" };
1281
+ const rocksdb_column_family_handle_t* get_handles[3] = { handles[0], handles[1], handles[1] };
1282
+ const size_t keys_sizes[3] = { 3, 3, 8 };
1283
+ char* vals[3];
1284
+ size_t vals_sizes[3];
1285
+ char* errs[3];
1286
+ rocksdb_multi_get_cf(db, roptions, get_handles, 3, keys, keys_sizes, vals, vals_sizes, errs);
1287
+
1288
+ int i;
1289
+ for (i = 0; i < 3; i++) {
1290
+ CheckEqual(NULL, errs[i], 0);
1291
+ switch (i) {
1292
+ case 0:
1293
+ CheckEqual(NULL, vals[i], vals_sizes[i]); // wrong cf
1294
+ break;
1295
+ case 1:
1296
+ CheckEqual("c", vals[i], vals_sizes[i]); // bingo
1297
+ break;
1298
+ case 2:
1299
+ CheckEqual(NULL, vals[i], vals_sizes[i]); // normal not found
1300
+ break;
1301
+ }
1302
+ Free(&vals[i]);
1303
+ }
1304
+
1305
+ {
1306
+ unsigned char value_found = 0;
1307
+
1308
+ CheckCondition(!rocksdb_key_may_exist(db, roptions, "invalid_key", 11,
1309
+ NULL, NULL, NULL, 0, NULL));
1310
+ CheckCondition(!rocksdb_key_may_exist(db, roptions, "invalid_key", 11,
1311
+ &vals[0], &vals_sizes[0], NULL, 0,
1312
+ &value_found));
1313
+ if (value_found) {
1314
+ Free(&vals[0]);
1315
+ }
1316
+
1317
+ CheckCondition(!rocksdb_key_may_exist_cf(db, roptions, handles[1],
1318
+ "invalid_key", 11, NULL, NULL,
1319
+ NULL, 0, NULL));
1320
+ CheckCondition(!rocksdb_key_may_exist_cf(db, roptions, handles[1],
1321
+ "invalid_key", 11, &vals[0],
1322
+ &vals_sizes[0], NULL, 0, NULL));
1323
+ if (value_found) {
1324
+ Free(&vals[0]);
1325
+ }
1326
+ }
1327
+
1328
+ rocksdb_iterator_t* iter = rocksdb_create_iterator_cf(db, roptions, handles[1]);
1329
+ CheckCondition(!rocksdb_iter_valid(iter));
1330
+ rocksdb_iter_seek_to_first(iter);
1331
+ CheckCondition(rocksdb_iter_valid(iter));
1332
+
1333
+ for (i = 0; rocksdb_iter_valid(iter) != 0; rocksdb_iter_next(iter)) {
1334
+ i++;
1335
+ }
1336
+ CheckCondition(i == 3);
1337
+ rocksdb_iter_get_error(iter, &err);
1338
+ CheckNoError(err);
1339
+ rocksdb_iter_destroy(iter);
1340
+
1341
+ rocksdb_column_family_handle_t* iters_cf_handles[2] = { handles[0], handles[1] };
1342
+ rocksdb_iterator_t* iters_handles[2];
1343
+ rocksdb_create_iterators(db, roptions, iters_cf_handles, iters_handles, 2, &err);
1344
+ CheckNoError(err);
1345
+
1346
+ iter = iters_handles[0];
1347
+ CheckCondition(!rocksdb_iter_valid(iter));
1348
+ rocksdb_iter_seek_to_first(iter);
1349
+ CheckCondition(!rocksdb_iter_valid(iter));
1350
+ rocksdb_iter_destroy(iter);
1351
+
1352
+ iter = iters_handles[1];
1353
+ CheckCondition(!rocksdb_iter_valid(iter));
1354
+ rocksdb_iter_seek_to_first(iter);
1355
+ CheckCondition(rocksdb_iter_valid(iter));
1356
+
1357
+ for (i = 0; rocksdb_iter_valid(iter) != 0; rocksdb_iter_next(iter)) {
1358
+ i++;
1359
+ }
1360
+ CheckCondition(i == 3);
1361
+ rocksdb_iter_get_error(iter, &err);
1362
+ CheckNoError(err);
1363
+ rocksdb_iter_destroy(iter);
1364
+
1365
+ rocksdb_drop_column_family(db, handles[1], &err);
1366
+ CheckNoError(err);
1367
+ for (i = 0; i < 2; i++) {
1368
+ rocksdb_column_family_handle_destroy(handles[i]);
1369
+ }
1370
+ rocksdb_close(db);
1371
+ rocksdb_destroy_db(options, dbname, &err);
1372
+ rocksdb_options_destroy(db_options);
1373
+ rocksdb_options_destroy(cf_options);
1374
+ }
1375
+
1376
+ StartPhase("prefix");
1377
+ {
1378
+ // Create new database
1379
+ rocksdb_options_set_allow_mmap_reads(options, 1);
1380
+ rocksdb_options_set_prefix_extractor(options, rocksdb_slicetransform_create_fixed_prefix(3));
1381
+ rocksdb_options_set_hash_skip_list_rep(options, 5000, 4, 4);
1382
+ rocksdb_options_set_plain_table_factory(options, 4, 10, 0.75, 16);
1383
+ rocksdb_options_set_allow_concurrent_memtable_write(options, 0);
1384
+
1385
+ db = rocksdb_open(options, dbname, &err);
1386
+ CheckNoError(err);
1387
+
1388
+ rocksdb_put(db, woptions, "foo1", 4, "foo", 3, &err);
1389
+ CheckNoError(err);
1390
+ rocksdb_put(db, woptions, "foo2", 4, "foo", 3, &err);
1391
+ CheckNoError(err);
1392
+ rocksdb_put(db, woptions, "foo3", 4, "foo", 3, &err);
1393
+ CheckNoError(err);
1394
+ rocksdb_put(db, woptions, "bar1", 4, "bar", 3, &err);
1395
+ CheckNoError(err);
1396
+ rocksdb_put(db, woptions, "bar2", 4, "bar", 3, &err);
1397
+ CheckNoError(err);
1398
+ rocksdb_put(db, woptions, "bar3", 4, "bar", 3, &err);
1399
+ CheckNoError(err);
1400
+
1401
+ rocksdb_iterator_t* iter = rocksdb_create_iterator(db, roptions);
1402
+ CheckCondition(!rocksdb_iter_valid(iter));
1403
+
1404
+ rocksdb_iter_seek(iter, "bar", 3);
1405
+ rocksdb_iter_get_error(iter, &err);
1406
+ CheckNoError(err);
1407
+ CheckCondition(rocksdb_iter_valid(iter));
1408
+
1409
+ CheckIter(iter, "bar1", "bar");
1410
+ rocksdb_iter_next(iter);
1411
+ CheckIter(iter, "bar2", "bar");
1412
+ rocksdb_iter_next(iter);
1413
+ CheckIter(iter, "bar3", "bar");
1414
+ rocksdb_iter_get_error(iter, &err);
1415
+ CheckNoError(err);
1416
+ rocksdb_iter_destroy(iter);
1417
+
1418
+ rocksdb_readoptions_set_total_order_seek(roptions, 1);
1419
+ iter = rocksdb_create_iterator(db, roptions);
1420
+ CheckCondition(!rocksdb_iter_valid(iter));
1421
+
1422
+ rocksdb_iter_seek(iter, "ba", 2);
1423
+ rocksdb_iter_get_error(iter, &err);
1424
+ CheckNoError(err);
1425
+ CheckCondition(rocksdb_iter_valid(iter));
1426
+ CheckIter(iter, "bar1", "bar");
1427
+
1428
+ rocksdb_iter_destroy(iter);
1429
+ rocksdb_readoptions_set_total_order_seek(roptions, 0);
1430
+
1431
+ rocksdb_close(db);
1432
+ rocksdb_destroy_db(options, dbname, &err);
1433
+ }
1434
+
1435
+ // Check memory usage stats
1436
+ StartPhase("approximate_memory_usage");
1437
+ {
1438
+ // Create database
1439
+ db = rocksdb_open(options, dbname, &err);
1440
+ CheckNoError(err);
1441
+
1442
+ rocksdb_memory_consumers_t* consumers;
1443
+ consumers = rocksdb_memory_consumers_create();
1444
+ rocksdb_memory_consumers_add_db(consumers, db);
1445
+ rocksdb_memory_consumers_add_cache(consumers, cache);
1446
+
1447
+ // take memory usage report before write-read operation
1448
+ rocksdb_memory_usage_t* mu1;
1449
+ mu1 = rocksdb_approximate_memory_usage_create(consumers, &err);
1450
+ CheckNoError(err);
1451
+
1452
+ // Put data (this should affect memtables)
1453
+ rocksdb_put(db, woptions, "memory", 6, "test", 4, &err);
1454
+ CheckNoError(err);
1455
+ CheckGet(db, roptions, "memory", "test");
1456
+
1457
+ // take memory usage report after write-read operation
1458
+ rocksdb_memory_usage_t* mu2;
1459
+ mu2 = rocksdb_approximate_memory_usage_create(consumers, &err);
1460
+ CheckNoError(err);
1461
+
1462
+ // amount of memory used within memtables should grow
1463
+ CheckCondition(rocksdb_approximate_memory_usage_get_mem_table_total(mu2) >=
1464
+ rocksdb_approximate_memory_usage_get_mem_table_total(mu1));
1465
+ CheckCondition(rocksdb_approximate_memory_usage_get_mem_table_unflushed(mu2) >=
1466
+ rocksdb_approximate_memory_usage_get_mem_table_unflushed(mu1));
1467
+
1468
+ rocksdb_memory_consumers_destroy(consumers);
1469
+ rocksdb_approximate_memory_usage_destroy(mu1);
1470
+ rocksdb_approximate_memory_usage_destroy(mu2);
1471
+ rocksdb_close(db);
1472
+ rocksdb_destroy_db(options, dbname, &err);
1473
+ CheckNoError(err);
1474
+ }
1475
+
1476
+ StartPhase("cuckoo_options");
1477
+ {
1478
+ rocksdb_cuckoo_table_options_t* cuckoo_options;
1479
+ cuckoo_options = rocksdb_cuckoo_options_create();
1480
+ rocksdb_cuckoo_options_set_hash_ratio(cuckoo_options, 0.5);
1481
+ rocksdb_cuckoo_options_set_max_search_depth(cuckoo_options, 200);
1482
+ rocksdb_cuckoo_options_set_cuckoo_block_size(cuckoo_options, 10);
1483
+ rocksdb_cuckoo_options_set_identity_as_first_hash(cuckoo_options, 1);
1484
+ rocksdb_cuckoo_options_set_use_module_hash(cuckoo_options, 0);
1485
+ rocksdb_options_set_cuckoo_table_factory(options, cuckoo_options);
1486
+
1487
+ db = rocksdb_open(options, dbname, &err);
1488
+ CheckNoError(err);
1489
+
1490
+ rocksdb_cuckoo_options_destroy(cuckoo_options);
1491
+ }
1492
+
1493
+ StartPhase("options");
1494
+ {
1495
+ rocksdb_options_t* o;
1496
+ o = rocksdb_options_create();
1497
+
1498
+ // Set and check options.
1499
+ rocksdb_options_set_allow_ingest_behind(o, 1);
1500
+ CheckCondition(1 == rocksdb_options_get_allow_ingest_behind(o));
1501
+
1502
+ rocksdb_options_compaction_readahead_size(o, 10);
1503
+ CheckCondition(10 == rocksdb_options_get_compaction_readahead_size(o));
1504
+
1505
+ rocksdb_options_set_create_if_missing(o, 1);
1506
+ CheckCondition(1 == rocksdb_options_get_create_if_missing(o));
1507
+
1508
+ rocksdb_options_set_create_missing_column_families(o, 1);
1509
+ CheckCondition(1 == rocksdb_options_get_create_missing_column_families(o));
1510
+
1511
+ rocksdb_options_set_error_if_exists(o, 1);
1512
+ CheckCondition(1 == rocksdb_options_get_error_if_exists(o));
1513
+
1514
+ rocksdb_options_set_paranoid_checks(o, 1);
1515
+ CheckCondition(1 == rocksdb_options_get_paranoid_checks(o));
1516
+
1517
+ rocksdb_options_set_info_log_level(o, 3);
1518
+ CheckCondition(3 == rocksdb_options_get_info_log_level(o));
1519
+
1520
+ rocksdb_options_set_write_buffer_size(o, 100);
1521
+ CheckCondition(100 == rocksdb_options_get_write_buffer_size(o));
1522
+
1523
+ rocksdb_options_set_db_write_buffer_size(o, 1000);
1524
+ CheckCondition(1000 == rocksdb_options_get_db_write_buffer_size(o));
1525
+
1526
+ rocksdb_options_set_max_open_files(o, 21);
1527
+ CheckCondition(21 == rocksdb_options_get_max_open_files(o));
1528
+
1529
+ rocksdb_options_set_max_file_opening_threads(o, 5);
1530
+ CheckCondition(5 == rocksdb_options_get_max_file_opening_threads(o));
1531
+
1532
+ rocksdb_options_set_max_total_wal_size(o, 400);
1533
+ CheckCondition(400 == rocksdb_options_get_max_total_wal_size(o));
1534
+
1535
+ rocksdb_options_set_num_levels(o, 7);
1536
+ CheckCondition(7 == rocksdb_options_get_num_levels(o));
1537
+
1538
+ rocksdb_options_set_level0_file_num_compaction_trigger(o, 4);
1539
+ CheckCondition(4 ==
1540
+ rocksdb_options_get_level0_file_num_compaction_trigger(o));
1541
+
1542
+ rocksdb_options_set_level0_slowdown_writes_trigger(o, 6);
1543
+ CheckCondition(6 == rocksdb_options_get_level0_slowdown_writes_trigger(o));
1544
+
1545
+ rocksdb_options_set_level0_stop_writes_trigger(o, 8);
1546
+ CheckCondition(8 == rocksdb_options_get_level0_stop_writes_trigger(o));
1547
+
1548
+ rocksdb_options_set_target_file_size_base(o, 256);
1549
+ CheckCondition(256 == rocksdb_options_get_target_file_size_base(o));
1550
+
1551
+ rocksdb_options_set_target_file_size_multiplier(o, 3);
1552
+ CheckCondition(3 == rocksdb_options_get_target_file_size_multiplier(o));
1553
+
1554
+ rocksdb_options_set_max_bytes_for_level_base(o, 1024);
1555
+ CheckCondition(1024 == rocksdb_options_get_max_bytes_for_level_base(o));
1556
+
1557
+ rocksdb_options_set_level_compaction_dynamic_level_bytes(o, 1);
1558
+ CheckCondition(1 ==
1559
+ rocksdb_options_get_level_compaction_dynamic_level_bytes(o));
1560
+
1561
+ rocksdb_options_set_max_bytes_for_level_multiplier(o, 2.0);
1562
+ CheckCondition(2.0 ==
1563
+ rocksdb_options_get_max_bytes_for_level_multiplier(o));
1564
+
1565
+ rocksdb_options_set_skip_stats_update_on_db_open(o, 1);
1566
+ CheckCondition(1 == rocksdb_options_get_skip_stats_update_on_db_open(o));
1567
+
1568
+ rocksdb_options_set_skip_checking_sst_file_sizes_on_db_open(o, 1);
1569
+ CheckCondition(
1570
+ 1 == rocksdb_options_get_skip_checking_sst_file_sizes_on_db_open(o));
1571
+
1572
+ rocksdb_options_set_max_write_buffer_number(o, 97);
1573
+ CheckCondition(97 == rocksdb_options_get_max_write_buffer_number(o));
1574
+
1575
+ rocksdb_options_set_min_write_buffer_number_to_merge(o, 23);
1576
+ CheckCondition(23 ==
1577
+ rocksdb_options_get_min_write_buffer_number_to_merge(o));
1578
+
1579
+ rocksdb_options_set_max_write_buffer_number_to_maintain(o, 64);
1580
+ CheckCondition(64 ==
1581
+ rocksdb_options_get_max_write_buffer_number_to_maintain(o));
1582
+
1583
+ rocksdb_options_set_max_write_buffer_size_to_maintain(o, 50000);
1584
+ CheckCondition(50000 ==
1585
+ rocksdb_options_get_max_write_buffer_size_to_maintain(o));
1586
+
1587
+ rocksdb_options_set_enable_pipelined_write(o, 1);
1588
+ CheckCondition(1 == rocksdb_options_get_enable_pipelined_write(o));
1589
+
1590
+ rocksdb_options_set_unordered_write(o, 1);
1591
+ CheckCondition(1 == rocksdb_options_get_unordered_write(o));
1592
+
1593
+ rocksdb_options_set_max_subcompactions(o, 123456);
1594
+ CheckCondition(123456 == rocksdb_options_get_max_subcompactions(o));
1595
+
1596
+ rocksdb_options_set_max_background_jobs(o, 2);
1597
+ CheckCondition(2 == rocksdb_options_get_max_background_jobs(o));
1598
+
1599
+ rocksdb_options_set_max_background_compactions(o, 3);
1600
+ CheckCondition(3 == rocksdb_options_get_max_background_compactions(o));
1601
+
1602
+ rocksdb_options_set_base_background_compactions(o, 4);
1603
+ CheckCondition(4 == rocksdb_options_get_base_background_compactions(o));
1604
+
1605
+ rocksdb_options_set_max_background_flushes(o, 5);
1606
+ CheckCondition(5 == rocksdb_options_get_max_background_flushes(o));
1607
+
1608
+ rocksdb_options_set_max_log_file_size(o, 6);
1609
+ CheckCondition(6 == rocksdb_options_get_max_log_file_size(o));
1610
+
1611
+ rocksdb_options_set_log_file_time_to_roll(o, 7);
1612
+ CheckCondition(7 == rocksdb_options_get_log_file_time_to_roll(o));
1613
+
1614
+ rocksdb_options_set_keep_log_file_num(o, 8);
1615
+ CheckCondition(8 == rocksdb_options_get_keep_log_file_num(o));
1616
+
1617
+ rocksdb_options_set_recycle_log_file_num(o, 9);
1618
+ CheckCondition(9 == rocksdb_options_get_recycle_log_file_num(o));
1619
+
1620
+ rocksdb_options_set_soft_rate_limit(o, 2.0);
1621
+ CheckCondition(2.0 == rocksdb_options_get_soft_rate_limit(o));
1622
+
1623
+ rocksdb_options_set_hard_rate_limit(o, 4.0);
1624
+ CheckCondition(4.0 == rocksdb_options_get_hard_rate_limit(o));
1625
+
1626
+ rocksdb_options_set_soft_pending_compaction_bytes_limit(o, 10);
1627
+ CheckCondition(10 ==
1628
+ rocksdb_options_get_soft_pending_compaction_bytes_limit(o));
1629
+
1630
+ rocksdb_options_set_hard_pending_compaction_bytes_limit(o, 11);
1631
+ CheckCondition(11 ==
1632
+ rocksdb_options_get_hard_pending_compaction_bytes_limit(o));
1633
+
1634
+ rocksdb_options_set_rate_limit_delay_max_milliseconds(o, 1);
1635
+ CheckCondition(1 ==
1636
+ rocksdb_options_get_rate_limit_delay_max_milliseconds(o));
1637
+
1638
+ rocksdb_options_set_max_manifest_file_size(o, 12);
1639
+ CheckCondition(12 == rocksdb_options_get_max_manifest_file_size(o));
1640
+
1641
+ rocksdb_options_set_table_cache_numshardbits(o, 13);
1642
+ CheckCondition(13 == rocksdb_options_get_table_cache_numshardbits(o));
1643
+
1644
+ rocksdb_options_set_arena_block_size(o, 14);
1645
+ CheckCondition(14 == rocksdb_options_get_arena_block_size(o));
1646
+
1647
+ rocksdb_options_set_use_fsync(o, 1);
1648
+ CheckCondition(1 == rocksdb_options_get_use_fsync(o));
1649
+
1650
+ rocksdb_options_set_WAL_ttl_seconds(o, 15);
1651
+ CheckCondition(15 == rocksdb_options_get_WAL_ttl_seconds(o));
1652
+
1653
+ rocksdb_options_set_WAL_size_limit_MB(o, 16);
1654
+ CheckCondition(16 == rocksdb_options_get_WAL_size_limit_MB(o));
1655
+
1656
+ rocksdb_options_set_manifest_preallocation_size(o, 17);
1657
+ CheckCondition(17 == rocksdb_options_get_manifest_preallocation_size(o));
1658
+
1659
+ rocksdb_options_set_allow_mmap_reads(o, 1);
1660
+ CheckCondition(1 == rocksdb_options_get_allow_mmap_reads(o));
1661
+
1662
+ rocksdb_options_set_allow_mmap_writes(o, 1);
1663
+ CheckCondition(1 == rocksdb_options_get_allow_mmap_writes(o));
1664
+
1665
+ rocksdb_options_set_use_direct_reads(o, 1);
1666
+ CheckCondition(1 == rocksdb_options_get_use_direct_reads(o));
1667
+
1668
+ rocksdb_options_set_use_direct_io_for_flush_and_compaction(o, 1);
1669
+ CheckCondition(
1670
+ 1 == rocksdb_options_get_use_direct_io_for_flush_and_compaction(o));
1671
+
1672
+ rocksdb_options_set_is_fd_close_on_exec(o, 1);
1673
+ CheckCondition(1 == rocksdb_options_get_is_fd_close_on_exec(o));
1674
+
1675
+ rocksdb_options_set_skip_log_error_on_recovery(o, 1);
1676
+ CheckCondition(1 == rocksdb_options_get_skip_log_error_on_recovery(o));
1677
+
1678
+ rocksdb_options_set_stats_dump_period_sec(o, 18);
1679
+ CheckCondition(18 == rocksdb_options_get_stats_dump_period_sec(o));
1680
+
1681
+ rocksdb_options_set_stats_persist_period_sec(o, 5);
1682
+ CheckCondition(5 == rocksdb_options_get_stats_persist_period_sec(o));
1683
+
1684
+ rocksdb_options_set_advise_random_on_open(o, 1);
1685
+ CheckCondition(1 == rocksdb_options_get_advise_random_on_open(o));
1686
+
1687
+ rocksdb_options_set_access_hint_on_compaction_start(o, 3);
1688
+ CheckCondition(3 == rocksdb_options_get_access_hint_on_compaction_start(o));
1689
+
1690
+ rocksdb_options_set_use_adaptive_mutex(o, 1);
1691
+ CheckCondition(1 == rocksdb_options_get_use_adaptive_mutex(o));
1692
+
1693
+ rocksdb_options_set_bytes_per_sync(o, 19);
1694
+ CheckCondition(19 == rocksdb_options_get_bytes_per_sync(o));
1695
+
1696
+ rocksdb_options_set_wal_bytes_per_sync(o, 20);
1697
+ CheckCondition(20 == rocksdb_options_get_wal_bytes_per_sync(o));
1698
+
1699
+ rocksdb_options_set_writable_file_max_buffer_size(o, 21);
1700
+ CheckCondition(21 == rocksdb_options_get_writable_file_max_buffer_size(o));
1701
+
1702
+ rocksdb_options_set_allow_concurrent_memtable_write(o, 1);
1703
+ CheckCondition(1 == rocksdb_options_get_allow_concurrent_memtable_write(o));
1704
+
1705
+ rocksdb_options_set_enable_write_thread_adaptive_yield(o, 1);
1706
+ CheckCondition(1 ==
1707
+ rocksdb_options_get_enable_write_thread_adaptive_yield(o));
1708
+
1709
+ rocksdb_options_set_max_sequential_skip_in_iterations(o, 22);
1710
+ CheckCondition(22 ==
1711
+ rocksdb_options_get_max_sequential_skip_in_iterations(o));
1712
+
1713
+ rocksdb_options_set_disable_auto_compactions(o, 1);
1714
+ CheckCondition(1 == rocksdb_options_get_disable_auto_compactions(o));
1715
+
1716
+ rocksdb_options_set_optimize_filters_for_hits(o, 1);
1717
+ CheckCondition(1 == rocksdb_options_get_optimize_filters_for_hits(o));
1718
+
1719
+ rocksdb_options_set_delete_obsolete_files_period_micros(o, 23);
1720
+ CheckCondition(23 ==
1721
+ rocksdb_options_get_delete_obsolete_files_period_micros(o));
1722
+
1723
+ rocksdb_options_set_memtable_prefix_bloom_size_ratio(o, 2.0);
1724
+ CheckCondition(2.0 ==
1725
+ rocksdb_options_get_memtable_prefix_bloom_size_ratio(o));
1726
+
1727
+ rocksdb_options_set_max_compaction_bytes(o, 24);
1728
+ CheckCondition(24 == rocksdb_options_get_max_compaction_bytes(o));
1729
+
1730
+ rocksdb_options_set_memtable_huge_page_size(o, 25);
1731
+ CheckCondition(25 == rocksdb_options_get_memtable_huge_page_size(o));
1732
+
1733
+ rocksdb_options_set_max_successive_merges(o, 26);
1734
+ CheckCondition(26 == rocksdb_options_get_max_successive_merges(o));
1735
+
1736
+ rocksdb_options_set_bloom_locality(o, 27);
1737
+ CheckCondition(27 == rocksdb_options_get_bloom_locality(o));
1738
+
1739
+ rocksdb_options_set_inplace_update_support(o, 1);
1740
+ CheckCondition(1 == rocksdb_options_get_inplace_update_support(o));
1741
+
1742
+ rocksdb_options_set_inplace_update_num_locks(o, 28);
1743
+ CheckCondition(28 == rocksdb_options_get_inplace_update_num_locks(o));
1744
+
1745
+ rocksdb_options_set_report_bg_io_stats(o, 1);
1746
+ CheckCondition(1 == rocksdb_options_get_report_bg_io_stats(o));
1747
+
1748
+ rocksdb_options_set_wal_recovery_mode(o, 2);
1749
+ CheckCondition(2 == rocksdb_options_get_wal_recovery_mode(o));
1750
+
1751
+ rocksdb_options_set_compression(o, 5);
1752
+ CheckCondition(5 == rocksdb_options_get_compression(o));
1753
+
1754
+ rocksdb_options_set_bottommost_compression(o, 4);
1755
+ CheckCondition(4 == rocksdb_options_get_bottommost_compression(o));
1756
+
1757
+ rocksdb_options_set_compaction_style(o, 2);
1758
+ CheckCondition(2 == rocksdb_options_get_compaction_style(o));
1759
+
1760
+ rocksdb_options_set_atomic_flush(o, 1);
1761
+ CheckCondition(1 == rocksdb_options_get_atomic_flush(o));
1762
+
1763
+ // Create a copy that should be equal to the original.
1764
+ rocksdb_options_t* copy;
1765
+ copy = rocksdb_options_create_copy(o);
1766
+
1767
+ CheckCondition(1 == rocksdb_options_get_allow_ingest_behind(copy));
1768
+ CheckCondition(10 == rocksdb_options_get_compaction_readahead_size(copy));
1769
+ CheckCondition(1 == rocksdb_options_get_create_if_missing(copy));
1770
+ CheckCondition(1 ==
1771
+ rocksdb_options_get_create_missing_column_families(copy));
1772
+ CheckCondition(1 == rocksdb_options_get_error_if_exists(copy));
1773
+ CheckCondition(1 == rocksdb_options_get_paranoid_checks(copy));
1774
+ CheckCondition(3 == rocksdb_options_get_info_log_level(copy));
1775
+ CheckCondition(100 == rocksdb_options_get_write_buffer_size(copy));
1776
+ CheckCondition(1000 == rocksdb_options_get_db_write_buffer_size(copy));
1777
+ CheckCondition(21 == rocksdb_options_get_max_open_files(copy));
1778
+ CheckCondition(5 == rocksdb_options_get_max_file_opening_threads(copy));
1779
+ CheckCondition(400 == rocksdb_options_get_max_total_wal_size(copy));
1780
+ CheckCondition(7 == rocksdb_options_get_num_levels(copy));
1781
+ CheckCondition(
1782
+ 4 == rocksdb_options_get_level0_file_num_compaction_trigger(copy));
1783
+ CheckCondition(6 ==
1784
+ rocksdb_options_get_level0_slowdown_writes_trigger(copy));
1785
+ CheckCondition(8 == rocksdb_options_get_level0_stop_writes_trigger(copy));
1786
+ CheckCondition(256 == rocksdb_options_get_target_file_size_base(copy));
1787
+ CheckCondition(3 == rocksdb_options_get_target_file_size_multiplier(copy));
1788
+ CheckCondition(1024 == rocksdb_options_get_max_bytes_for_level_base(copy));
1789
+ CheckCondition(
1790
+ 1 == rocksdb_options_get_level_compaction_dynamic_level_bytes(copy));
1791
+ CheckCondition(2.0 ==
1792
+ rocksdb_options_get_max_bytes_for_level_multiplier(copy));
1793
+ CheckCondition(1 == rocksdb_options_get_skip_stats_update_on_db_open(copy));
1794
+ CheckCondition(
1795
+ 1 == rocksdb_options_get_skip_checking_sst_file_sizes_on_db_open(copy));
1796
+ CheckCondition(97 == rocksdb_options_get_max_write_buffer_number(copy));
1797
+ CheckCondition(23 ==
1798
+ rocksdb_options_get_min_write_buffer_number_to_merge(copy));
1799
+ CheckCondition(
1800
+ 64 == rocksdb_options_get_max_write_buffer_number_to_maintain(copy));
1801
+ CheckCondition(50000 ==
1802
+ rocksdb_options_get_max_write_buffer_size_to_maintain(copy));
1803
+ CheckCondition(1 == rocksdb_options_get_enable_pipelined_write(copy));
1804
+ CheckCondition(1 == rocksdb_options_get_unordered_write(copy));
1805
+ CheckCondition(123456 == rocksdb_options_get_max_subcompactions(copy));
1806
+ CheckCondition(2 == rocksdb_options_get_max_background_jobs(copy));
1807
+ CheckCondition(3 == rocksdb_options_get_max_background_compactions(copy));
1808
+ CheckCondition(4 == rocksdb_options_get_base_background_compactions(copy));
1809
+ CheckCondition(5 == rocksdb_options_get_max_background_flushes(copy));
1810
+ CheckCondition(6 == rocksdb_options_get_max_log_file_size(copy));
1811
+ CheckCondition(7 == rocksdb_options_get_log_file_time_to_roll(copy));
1812
+ CheckCondition(8 == rocksdb_options_get_keep_log_file_num(copy));
1813
+ CheckCondition(9 == rocksdb_options_get_recycle_log_file_num(copy));
1814
+ CheckCondition(2.0 == rocksdb_options_get_soft_rate_limit(copy));
1815
+ CheckCondition(4.0 == rocksdb_options_get_hard_rate_limit(copy));
1816
+ CheckCondition(
1817
+ 10 == rocksdb_options_get_soft_pending_compaction_bytes_limit(copy));
1818
+ CheckCondition(
1819
+ 11 == rocksdb_options_get_hard_pending_compaction_bytes_limit(copy));
1820
+ CheckCondition(1 ==
1821
+ rocksdb_options_get_rate_limit_delay_max_milliseconds(copy));
1822
+ CheckCondition(12 == rocksdb_options_get_max_manifest_file_size(copy));
1823
+ CheckCondition(13 == rocksdb_options_get_table_cache_numshardbits(copy));
1824
+ CheckCondition(14 == rocksdb_options_get_arena_block_size(copy));
1825
+ CheckCondition(1 == rocksdb_options_get_use_fsync(copy));
1826
+ CheckCondition(15 == rocksdb_options_get_WAL_ttl_seconds(copy));
1827
+ CheckCondition(16 == rocksdb_options_get_WAL_size_limit_MB(copy));
1828
+ CheckCondition(17 == rocksdb_options_get_manifest_preallocation_size(copy));
1829
+ CheckCondition(1 == rocksdb_options_get_allow_mmap_reads(copy));
1830
+ CheckCondition(1 == rocksdb_options_get_allow_mmap_writes(copy));
1831
+ CheckCondition(1 == rocksdb_options_get_use_direct_reads(copy));
1832
+ CheckCondition(
1833
+ 1 == rocksdb_options_get_use_direct_io_for_flush_and_compaction(copy));
1834
+ CheckCondition(1 == rocksdb_options_get_is_fd_close_on_exec(copy));
1835
+ CheckCondition(1 == rocksdb_options_get_skip_log_error_on_recovery(copy));
1836
+ CheckCondition(18 == rocksdb_options_get_stats_dump_period_sec(copy));
1837
+ CheckCondition(5 == rocksdb_options_get_stats_persist_period_sec(copy));
1838
+ CheckCondition(1 == rocksdb_options_get_advise_random_on_open(copy));
1839
+ CheckCondition(3 ==
1840
+ rocksdb_options_get_access_hint_on_compaction_start(copy));
1841
+ CheckCondition(1 == rocksdb_options_get_use_adaptive_mutex(copy));
1842
+ CheckCondition(19 == rocksdb_options_get_bytes_per_sync(copy));
1843
+ CheckCondition(20 == rocksdb_options_get_wal_bytes_per_sync(copy));
1844
+ CheckCondition(21 ==
1845
+ rocksdb_options_get_writable_file_max_buffer_size(copy));
1846
+ CheckCondition(1 ==
1847
+ rocksdb_options_get_allow_concurrent_memtable_write(copy));
1848
+ CheckCondition(
1849
+ 1 == rocksdb_options_get_enable_write_thread_adaptive_yield(copy));
1850
+ CheckCondition(22 ==
1851
+ rocksdb_options_get_max_sequential_skip_in_iterations(copy));
1852
+ CheckCondition(1 == rocksdb_options_get_disable_auto_compactions(copy));
1853
+ CheckCondition(1 == rocksdb_options_get_optimize_filters_for_hits(copy));
1854
+ CheckCondition(
1855
+ 23 == rocksdb_options_get_delete_obsolete_files_period_micros(copy));
1856
+ CheckCondition(2.0 ==
1857
+ rocksdb_options_get_memtable_prefix_bloom_size_ratio(copy));
1858
+ CheckCondition(24 == rocksdb_options_get_max_compaction_bytes(copy));
1859
+ CheckCondition(25 == rocksdb_options_get_memtable_huge_page_size(copy));
1860
+ CheckCondition(26 == rocksdb_options_get_max_successive_merges(copy));
1861
+ CheckCondition(27 == rocksdb_options_get_bloom_locality(copy));
1862
+ CheckCondition(1 == rocksdb_options_get_inplace_update_support(copy));
1863
+ CheckCondition(28 == rocksdb_options_get_inplace_update_num_locks(copy));
1864
+ CheckCondition(1 == rocksdb_options_get_report_bg_io_stats(copy));
1865
+ CheckCondition(2 == rocksdb_options_get_wal_recovery_mode(copy));
1866
+ CheckCondition(5 == rocksdb_options_get_compression(copy));
1867
+ CheckCondition(4 == rocksdb_options_get_bottommost_compression(copy));
1868
+ CheckCondition(2 == rocksdb_options_get_compaction_style(copy));
1869
+ CheckCondition(1 == rocksdb_options_get_atomic_flush(copy));
1870
+
1871
+ // Copies should be independent.
1872
+ rocksdb_options_set_allow_ingest_behind(copy, 0);
1873
+ CheckCondition(0 == rocksdb_options_get_allow_ingest_behind(copy));
1874
+ CheckCondition(1 == rocksdb_options_get_allow_ingest_behind(o));
1875
+
1876
+ rocksdb_options_compaction_readahead_size(copy, 20);
1877
+ CheckCondition(20 == rocksdb_options_get_compaction_readahead_size(copy));
1878
+ CheckCondition(10 == rocksdb_options_get_compaction_readahead_size(o));
1879
+
1880
+ rocksdb_options_set_create_if_missing(copy, 0);
1881
+ CheckCondition(0 == rocksdb_options_get_create_if_missing(copy));
1882
+ CheckCondition(1 == rocksdb_options_get_create_if_missing(o));
1883
+
1884
+ rocksdb_options_set_create_missing_column_families(copy, 0);
1885
+ CheckCondition(0 ==
1886
+ rocksdb_options_get_create_missing_column_families(copy));
1887
+ CheckCondition(1 == rocksdb_options_get_create_missing_column_families(o));
1888
+
1889
+ rocksdb_options_set_error_if_exists(copy, 0);
1890
+ CheckCondition(0 == rocksdb_options_get_error_if_exists(copy));
1891
+ CheckCondition(1 == rocksdb_options_get_error_if_exists(o));
1892
+
1893
+ rocksdb_options_set_paranoid_checks(copy, 0);
1894
+ CheckCondition(0 == rocksdb_options_get_paranoid_checks(copy));
1895
+ CheckCondition(1 == rocksdb_options_get_paranoid_checks(o));
1896
+
1897
+ rocksdb_options_set_info_log_level(copy, 2);
1898
+ CheckCondition(2 == rocksdb_options_get_info_log_level(copy));
1899
+ CheckCondition(3 == rocksdb_options_get_info_log_level(o));
1900
+
1901
+ rocksdb_options_set_write_buffer_size(copy, 200);
1902
+ CheckCondition(200 == rocksdb_options_get_write_buffer_size(copy));
1903
+ CheckCondition(100 == rocksdb_options_get_write_buffer_size(o));
1904
+
1905
+ rocksdb_options_set_db_write_buffer_size(copy, 2000);
1906
+ CheckCondition(2000 == rocksdb_options_get_db_write_buffer_size(copy));
1907
+ CheckCondition(1000 == rocksdb_options_get_db_write_buffer_size(o));
1908
+
1909
+ rocksdb_options_set_max_open_files(copy, 42);
1910
+ CheckCondition(42 == rocksdb_options_get_max_open_files(copy));
1911
+ CheckCondition(21 == rocksdb_options_get_max_open_files(o));
1912
+
1913
+ rocksdb_options_set_max_file_opening_threads(copy, 3);
1914
+ CheckCondition(3 == rocksdb_options_get_max_file_opening_threads(copy));
1915
+ CheckCondition(5 == rocksdb_options_get_max_file_opening_threads(o));
1916
+
1917
+ rocksdb_options_set_max_total_wal_size(copy, 4000);
1918
+ CheckCondition(4000 == rocksdb_options_get_max_total_wal_size(copy));
1919
+ CheckCondition(400 == rocksdb_options_get_max_total_wal_size(o));
1920
+
1921
+ rocksdb_options_set_num_levels(copy, 6);
1922
+ CheckCondition(6 == rocksdb_options_get_num_levels(copy));
1923
+ CheckCondition(7 == rocksdb_options_get_num_levels(o));
1924
+
1925
+ rocksdb_options_set_level0_file_num_compaction_trigger(copy, 14);
1926
+ CheckCondition(
1927
+ 14 == rocksdb_options_get_level0_file_num_compaction_trigger(copy));
1928
+ CheckCondition(4 ==
1929
+ rocksdb_options_get_level0_file_num_compaction_trigger(o));
1930
+
1931
+ rocksdb_options_set_level0_slowdown_writes_trigger(copy, 61);
1932
+ CheckCondition(61 ==
1933
+ rocksdb_options_get_level0_slowdown_writes_trigger(copy));
1934
+ CheckCondition(6 == rocksdb_options_get_level0_slowdown_writes_trigger(o));
1935
+
1936
+ rocksdb_options_set_level0_stop_writes_trigger(copy, 17);
1937
+ CheckCondition(17 == rocksdb_options_get_level0_stop_writes_trigger(copy));
1938
+ CheckCondition(8 == rocksdb_options_get_level0_stop_writes_trigger(o));
1939
+
1940
+ rocksdb_options_set_target_file_size_base(copy, 128);
1941
+ CheckCondition(128 == rocksdb_options_get_target_file_size_base(copy));
1942
+ CheckCondition(256 == rocksdb_options_get_target_file_size_base(o));
1943
+
1944
+ rocksdb_options_set_target_file_size_multiplier(copy, 13);
1945
+ CheckCondition(13 == rocksdb_options_get_target_file_size_multiplier(copy));
1946
+ CheckCondition(3 == rocksdb_options_get_target_file_size_multiplier(o));
1947
+
1948
+ rocksdb_options_set_max_bytes_for_level_base(copy, 900);
1949
+ CheckCondition(900 == rocksdb_options_get_max_bytes_for_level_base(copy));
1950
+ CheckCondition(1024 == rocksdb_options_get_max_bytes_for_level_base(o));
1951
+
1952
+ rocksdb_options_set_level_compaction_dynamic_level_bytes(copy, 0);
1953
+ CheckCondition(
1954
+ 0 == rocksdb_options_get_level_compaction_dynamic_level_bytes(copy));
1955
+ CheckCondition(1 ==
1956
+ rocksdb_options_get_level_compaction_dynamic_level_bytes(o));
1957
+
1958
+ rocksdb_options_set_max_bytes_for_level_multiplier(copy, 8.0);
1959
+ CheckCondition(8.0 ==
1960
+ rocksdb_options_get_max_bytes_for_level_multiplier(copy));
1961
+ CheckCondition(2.0 ==
1962
+ rocksdb_options_get_max_bytes_for_level_multiplier(o));
1963
+
1964
+ rocksdb_options_set_skip_stats_update_on_db_open(copy, 0);
1965
+ CheckCondition(0 == rocksdb_options_get_skip_stats_update_on_db_open(copy));
1966
+ CheckCondition(1 == rocksdb_options_get_skip_stats_update_on_db_open(o));
1967
+
1968
+ rocksdb_options_set_skip_checking_sst_file_sizes_on_db_open(copy, 0);
1969
+ CheckCondition(
1970
+ 0 == rocksdb_options_get_skip_checking_sst_file_sizes_on_db_open(copy));
1971
+ CheckCondition(
1972
+ 1 == rocksdb_options_get_skip_checking_sst_file_sizes_on_db_open(o));
1973
+
1974
+ rocksdb_options_set_max_write_buffer_number(copy, 2000);
1975
+ CheckCondition(2000 == rocksdb_options_get_max_write_buffer_number(copy));
1976
+ CheckCondition(97 == rocksdb_options_get_max_write_buffer_number(o));
1977
+
1978
+ rocksdb_options_set_min_write_buffer_number_to_merge(copy, 146);
1979
+ CheckCondition(146 ==
1980
+ rocksdb_options_get_min_write_buffer_number_to_merge(copy));
1981
+ CheckCondition(23 ==
1982
+ rocksdb_options_get_min_write_buffer_number_to_merge(o));
1983
+
1984
+ rocksdb_options_set_max_write_buffer_number_to_maintain(copy, 128);
1985
+ CheckCondition(
1986
+ 128 == rocksdb_options_get_max_write_buffer_number_to_maintain(copy));
1987
+ CheckCondition(64 ==
1988
+ rocksdb_options_get_max_write_buffer_number_to_maintain(o));
1989
+
1990
+ rocksdb_options_set_max_write_buffer_size_to_maintain(copy, 9000);
1991
+ CheckCondition(9000 ==
1992
+ rocksdb_options_get_max_write_buffer_size_to_maintain(copy));
1993
+ CheckCondition(50000 ==
1994
+ rocksdb_options_get_max_write_buffer_size_to_maintain(o));
1995
+
1996
+ rocksdb_options_set_enable_pipelined_write(copy, 0);
1997
+ CheckCondition(0 == rocksdb_options_get_enable_pipelined_write(copy));
1998
+ CheckCondition(1 == rocksdb_options_get_enable_pipelined_write(o));
1999
+
2000
+ rocksdb_options_set_unordered_write(copy, 0);
2001
+ CheckCondition(0 == rocksdb_options_get_unordered_write(copy));
2002
+ CheckCondition(1 == rocksdb_options_get_unordered_write(o));
2003
+
2004
+ rocksdb_options_set_max_subcompactions(copy, 90001);
2005
+ CheckCondition(90001 == rocksdb_options_get_max_subcompactions(copy));
2006
+ CheckCondition(123456 == rocksdb_options_get_max_subcompactions(o));
2007
+
2008
+ rocksdb_options_set_max_background_jobs(copy, 12);
2009
+ CheckCondition(12 == rocksdb_options_get_max_background_jobs(copy));
2010
+ CheckCondition(2 == rocksdb_options_get_max_background_jobs(o));
2011
+
2012
+ rocksdb_options_set_max_background_compactions(copy, 13);
2013
+ CheckCondition(13 == rocksdb_options_get_max_background_compactions(copy));
2014
+ CheckCondition(3 == rocksdb_options_get_max_background_compactions(o));
2015
+
2016
+ rocksdb_options_set_base_background_compactions(copy, 14);
2017
+ CheckCondition(14 == rocksdb_options_get_base_background_compactions(copy));
2018
+ CheckCondition(4 == rocksdb_options_get_base_background_compactions(o));
2019
+
2020
+ rocksdb_options_set_max_background_flushes(copy, 15);
2021
+ CheckCondition(15 == rocksdb_options_get_max_background_flushes(copy));
2022
+ CheckCondition(5 == rocksdb_options_get_max_background_flushes(o));
2023
+
2024
+ rocksdb_options_set_max_log_file_size(copy, 16);
2025
+ CheckCondition(16 == rocksdb_options_get_max_log_file_size(copy));
2026
+ CheckCondition(6 == rocksdb_options_get_max_log_file_size(o));
2027
+
2028
+ rocksdb_options_set_log_file_time_to_roll(copy, 17);
2029
+ CheckCondition(17 == rocksdb_options_get_log_file_time_to_roll(copy));
2030
+ CheckCondition(7 == rocksdb_options_get_log_file_time_to_roll(o));
2031
+
2032
+ rocksdb_options_set_keep_log_file_num(copy, 18);
2033
+ CheckCondition(18 == rocksdb_options_get_keep_log_file_num(copy));
2034
+ CheckCondition(8 == rocksdb_options_get_keep_log_file_num(o));
2035
+
2036
+ rocksdb_options_set_recycle_log_file_num(copy, 19);
2037
+ CheckCondition(19 == rocksdb_options_get_recycle_log_file_num(copy));
2038
+ CheckCondition(9 == rocksdb_options_get_recycle_log_file_num(o));
2039
+
2040
+ rocksdb_options_set_soft_rate_limit(copy, 4.0);
2041
+ CheckCondition(4.0 == rocksdb_options_get_soft_rate_limit(copy));
2042
+ CheckCondition(2.0 == rocksdb_options_get_soft_rate_limit(o));
2043
+
2044
+ rocksdb_options_set_hard_rate_limit(copy, 2.0);
2045
+ CheckCondition(2.0 == rocksdb_options_get_hard_rate_limit(copy));
2046
+ CheckCondition(4.0 == rocksdb_options_get_hard_rate_limit(o));
2047
+
2048
+ rocksdb_options_set_soft_pending_compaction_bytes_limit(copy, 110);
2049
+ CheckCondition(
2050
+ 110 == rocksdb_options_get_soft_pending_compaction_bytes_limit(copy));
2051
+ CheckCondition(10 ==
2052
+ rocksdb_options_get_soft_pending_compaction_bytes_limit(o));
2053
+
2054
+ rocksdb_options_set_hard_pending_compaction_bytes_limit(copy, 111);
2055
+ CheckCondition(
2056
+ 111 == rocksdb_options_get_hard_pending_compaction_bytes_limit(copy));
2057
+ CheckCondition(11 ==
2058
+ rocksdb_options_get_hard_pending_compaction_bytes_limit(o));
2059
+
2060
+ rocksdb_options_set_rate_limit_delay_max_milliseconds(copy, 0);
2061
+ CheckCondition(0 ==
2062
+ rocksdb_options_get_rate_limit_delay_max_milliseconds(copy));
2063
+ CheckCondition(1 ==
2064
+ rocksdb_options_get_rate_limit_delay_max_milliseconds(o));
2065
+
2066
+ rocksdb_options_set_max_manifest_file_size(copy, 112);
2067
+ CheckCondition(112 == rocksdb_options_get_max_manifest_file_size(copy));
2068
+ CheckCondition(12 == rocksdb_options_get_max_manifest_file_size(o));
2069
+
2070
+ rocksdb_options_set_table_cache_numshardbits(copy, 113);
2071
+ CheckCondition(113 == rocksdb_options_get_table_cache_numshardbits(copy));
2072
+ CheckCondition(13 == rocksdb_options_get_table_cache_numshardbits(o));
2073
+
2074
+ rocksdb_options_set_arena_block_size(copy, 114);
2075
+ CheckCondition(114 == rocksdb_options_get_arena_block_size(copy));
2076
+ CheckCondition(14 == rocksdb_options_get_arena_block_size(o));
2077
+
2078
+ rocksdb_options_set_use_fsync(copy, 0);
2079
+ CheckCondition(0 == rocksdb_options_get_use_fsync(copy));
2080
+ CheckCondition(1 == rocksdb_options_get_use_fsync(o));
2081
+
2082
+ rocksdb_options_set_WAL_ttl_seconds(copy, 115);
2083
+ CheckCondition(115 == rocksdb_options_get_WAL_ttl_seconds(copy));
2084
+ CheckCondition(15 == rocksdb_options_get_WAL_ttl_seconds(o));
2085
+
2086
+ rocksdb_options_set_WAL_size_limit_MB(copy, 116);
2087
+ CheckCondition(116 == rocksdb_options_get_WAL_size_limit_MB(copy));
2088
+ CheckCondition(16 == rocksdb_options_get_WAL_size_limit_MB(o));
2089
+
2090
+ rocksdb_options_set_manifest_preallocation_size(copy, 117);
2091
+ CheckCondition(117 ==
2092
+ rocksdb_options_get_manifest_preallocation_size(copy));
2093
+ CheckCondition(17 == rocksdb_options_get_manifest_preallocation_size(o));
2094
+
2095
+ rocksdb_options_set_allow_mmap_reads(copy, 0);
2096
+ CheckCondition(0 == rocksdb_options_get_allow_mmap_reads(copy));
2097
+ CheckCondition(1 == rocksdb_options_get_allow_mmap_reads(o));
2098
+
2099
+ rocksdb_options_set_allow_mmap_writes(copy, 0);
2100
+ CheckCondition(0 == rocksdb_options_get_allow_mmap_writes(copy));
2101
+ CheckCondition(1 == rocksdb_options_get_allow_mmap_writes(o));
2102
+
2103
+ rocksdb_options_set_use_direct_reads(copy, 0);
2104
+ CheckCondition(0 == rocksdb_options_get_use_direct_reads(copy));
2105
+ CheckCondition(1 == rocksdb_options_get_use_direct_reads(o));
2106
+
2107
+ rocksdb_options_set_use_direct_io_for_flush_and_compaction(copy, 0);
2108
+ CheckCondition(
2109
+ 0 == rocksdb_options_get_use_direct_io_for_flush_and_compaction(copy));
2110
+ CheckCondition(
2111
+ 1 == rocksdb_options_get_use_direct_io_for_flush_and_compaction(o));
2112
+
2113
+ rocksdb_options_set_is_fd_close_on_exec(copy, 0);
2114
+ CheckCondition(0 == rocksdb_options_get_is_fd_close_on_exec(copy));
2115
+ CheckCondition(1 == rocksdb_options_get_is_fd_close_on_exec(o));
2116
+
2117
+ rocksdb_options_set_skip_log_error_on_recovery(copy, 0);
2118
+ CheckCondition(0 == rocksdb_options_get_skip_log_error_on_recovery(copy));
2119
+ CheckCondition(1 == rocksdb_options_get_skip_log_error_on_recovery(o));
2120
+
2121
+ rocksdb_options_set_stats_dump_period_sec(copy, 218);
2122
+ CheckCondition(218 == rocksdb_options_get_stats_dump_period_sec(copy));
2123
+ CheckCondition(18 == rocksdb_options_get_stats_dump_period_sec(o));
2124
+
2125
+ rocksdb_options_set_stats_persist_period_sec(copy, 600);
2126
+ CheckCondition(600 == rocksdb_options_get_stats_persist_period_sec(copy));
2127
+ CheckCondition(5 == rocksdb_options_get_stats_persist_period_sec(o));
2128
+
2129
+ rocksdb_options_set_advise_random_on_open(copy, 0);
2130
+ CheckCondition(0 == rocksdb_options_get_advise_random_on_open(copy));
2131
+ CheckCondition(1 == rocksdb_options_get_advise_random_on_open(o));
2132
+
2133
+ rocksdb_options_set_access_hint_on_compaction_start(copy, 2);
2134
+ CheckCondition(2 ==
2135
+ rocksdb_options_get_access_hint_on_compaction_start(copy));
2136
+ CheckCondition(3 == rocksdb_options_get_access_hint_on_compaction_start(o));
2137
+
2138
+ rocksdb_options_set_use_adaptive_mutex(copy, 0);
2139
+ CheckCondition(0 == rocksdb_options_get_use_adaptive_mutex(copy));
2140
+ CheckCondition(1 == rocksdb_options_get_use_adaptive_mutex(o));
2141
+
2142
+ rocksdb_options_set_bytes_per_sync(copy, 219);
2143
+ CheckCondition(219 == rocksdb_options_get_bytes_per_sync(copy));
2144
+ CheckCondition(19 == rocksdb_options_get_bytes_per_sync(o));
2145
+
2146
+ rocksdb_options_set_wal_bytes_per_sync(copy, 120);
2147
+ CheckCondition(120 == rocksdb_options_get_wal_bytes_per_sync(copy));
2148
+ CheckCondition(20 == rocksdb_options_get_wal_bytes_per_sync(o));
2149
+
2150
+ rocksdb_options_set_writable_file_max_buffer_size(copy, 121);
2151
+ CheckCondition(121 ==
2152
+ rocksdb_options_get_writable_file_max_buffer_size(copy));
2153
+ CheckCondition(21 == rocksdb_options_get_writable_file_max_buffer_size(o));
2154
+
2155
+ rocksdb_options_set_allow_concurrent_memtable_write(copy, 0);
2156
+ CheckCondition(0 ==
2157
+ rocksdb_options_get_allow_concurrent_memtable_write(copy));
2158
+ CheckCondition(1 == rocksdb_options_get_allow_concurrent_memtable_write(o));
2159
+
2160
+ rocksdb_options_set_enable_write_thread_adaptive_yield(copy, 0);
2161
+ CheckCondition(
2162
+ 0 == rocksdb_options_get_enable_write_thread_adaptive_yield(copy));
2163
+ CheckCondition(1 ==
2164
+ rocksdb_options_get_enable_write_thread_adaptive_yield(o));
2165
+
2166
+ rocksdb_options_set_max_sequential_skip_in_iterations(copy, 122);
2167
+ CheckCondition(122 ==
2168
+ rocksdb_options_get_max_sequential_skip_in_iterations(copy));
2169
+ CheckCondition(22 ==
2170
+ rocksdb_options_get_max_sequential_skip_in_iterations(o));
2171
+
2172
+ rocksdb_options_set_disable_auto_compactions(copy, 0);
2173
+ CheckCondition(0 == rocksdb_options_get_disable_auto_compactions(copy));
2174
+ CheckCondition(1 == rocksdb_options_get_disable_auto_compactions(o));
2175
+
2176
+ rocksdb_options_set_optimize_filters_for_hits(copy, 0);
2177
+ CheckCondition(0 == rocksdb_options_get_optimize_filters_for_hits(copy));
2178
+ CheckCondition(1 == rocksdb_options_get_optimize_filters_for_hits(o));
2179
+
2180
+ rocksdb_options_set_delete_obsolete_files_period_micros(copy, 123);
2181
+ CheckCondition(
2182
+ 123 == rocksdb_options_get_delete_obsolete_files_period_micros(copy));
2183
+ CheckCondition(23 ==
2184
+ rocksdb_options_get_delete_obsolete_files_period_micros(o));
2185
+
2186
+ rocksdb_options_set_memtable_prefix_bloom_size_ratio(copy, 4.0);
2187
+ CheckCondition(4.0 ==
2188
+ rocksdb_options_get_memtable_prefix_bloom_size_ratio(copy));
2189
+ CheckCondition(2.0 ==
2190
+ rocksdb_options_get_memtable_prefix_bloom_size_ratio(o));
2191
+
2192
+ rocksdb_options_set_max_compaction_bytes(copy, 124);
2193
+ CheckCondition(124 == rocksdb_options_get_max_compaction_bytes(copy));
2194
+ CheckCondition(24 == rocksdb_options_get_max_compaction_bytes(o));
2195
+
2196
+ rocksdb_options_set_memtable_huge_page_size(copy, 125);
2197
+ CheckCondition(125 == rocksdb_options_get_memtable_huge_page_size(copy));
2198
+ CheckCondition(25 == rocksdb_options_get_memtable_huge_page_size(o));
2199
+
2200
+ rocksdb_options_set_max_successive_merges(copy, 126);
2201
+ CheckCondition(126 == rocksdb_options_get_max_successive_merges(copy));
2202
+ CheckCondition(26 == rocksdb_options_get_max_successive_merges(o));
2203
+
2204
+ rocksdb_options_set_bloom_locality(copy, 127);
2205
+ CheckCondition(127 == rocksdb_options_get_bloom_locality(copy));
2206
+ CheckCondition(27 == rocksdb_options_get_bloom_locality(o));
2207
+
2208
+ rocksdb_options_set_inplace_update_support(copy, 0);
2209
+ CheckCondition(0 == rocksdb_options_get_inplace_update_support(copy));
2210
+ CheckCondition(1 == rocksdb_options_get_inplace_update_support(o));
2211
+
2212
+ rocksdb_options_set_inplace_update_num_locks(copy, 128);
2213
+ CheckCondition(128 == rocksdb_options_get_inplace_update_num_locks(copy));
2214
+ CheckCondition(28 == rocksdb_options_get_inplace_update_num_locks(o));
2215
+
2216
+ rocksdb_options_set_report_bg_io_stats(copy, 0);
2217
+ CheckCondition(0 == rocksdb_options_get_report_bg_io_stats(copy));
2218
+ CheckCondition(1 == rocksdb_options_get_report_bg_io_stats(o));
2219
+
2220
+ rocksdb_options_set_wal_recovery_mode(copy, 1);
2221
+ CheckCondition(1 == rocksdb_options_get_wal_recovery_mode(copy));
2222
+ CheckCondition(2 == rocksdb_options_get_wal_recovery_mode(o));
2223
+
2224
+ rocksdb_options_set_compression(copy, 4);
2225
+ CheckCondition(4 == rocksdb_options_get_compression(copy));
2226
+ CheckCondition(5 == rocksdb_options_get_compression(o));
2227
+
2228
+ rocksdb_options_set_bottommost_compression(copy, 3);
2229
+ CheckCondition(3 == rocksdb_options_get_bottommost_compression(copy));
2230
+ CheckCondition(4 == rocksdb_options_get_bottommost_compression(o));
2231
+
2232
+ rocksdb_options_set_compaction_style(copy, 1);
2233
+ CheckCondition(1 == rocksdb_options_get_compaction_style(copy));
2234
+ CheckCondition(2 == rocksdb_options_get_compaction_style(o));
2235
+
2236
+ rocksdb_options_set_atomic_flush(copy, 0);
2237
+ CheckCondition(0 == rocksdb_options_get_atomic_flush(copy));
2238
+ CheckCondition(1 == rocksdb_options_get_atomic_flush(o));
2239
+
2240
+ rocksdb_options_destroy(copy);
2241
+ rocksdb_options_destroy(o);
2242
+ }
2243
+
2244
+ StartPhase("read_options");
2245
+ {
2246
+ rocksdb_readoptions_t* ro;
2247
+ ro = rocksdb_readoptions_create();
2248
+
2249
+ rocksdb_readoptions_set_verify_checksums(ro, 1);
2250
+ CheckCondition(1 == rocksdb_readoptions_get_verify_checksums(ro));
2251
+
2252
+ rocksdb_readoptions_set_fill_cache(ro, 1);
2253
+ CheckCondition(1 == rocksdb_readoptions_get_fill_cache(ro));
2254
+
2255
+ rocksdb_readoptions_set_read_tier(ro, 2);
2256
+ CheckCondition(2 == rocksdb_readoptions_get_read_tier(ro));
2257
+
2258
+ rocksdb_readoptions_set_tailing(ro, 1);
2259
+ CheckCondition(1 == rocksdb_readoptions_get_tailing(ro));
2260
+
2261
+ rocksdb_readoptions_set_readahead_size(ro, 100);
2262
+ CheckCondition(100 == rocksdb_readoptions_get_readahead_size(ro));
2263
+
2264
+ rocksdb_readoptions_set_prefix_same_as_start(ro, 1);
2265
+ CheckCondition(1 == rocksdb_readoptions_get_prefix_same_as_start(ro));
2266
+
2267
+ rocksdb_readoptions_set_pin_data(ro, 1);
2268
+ CheckCondition(1 == rocksdb_readoptions_get_pin_data(ro));
2269
+
2270
+ rocksdb_readoptions_set_total_order_seek(ro, 1);
2271
+ CheckCondition(1 == rocksdb_readoptions_get_total_order_seek(ro));
2272
+
2273
+ rocksdb_readoptions_set_max_skippable_internal_keys(ro, 200);
2274
+ CheckCondition(200 ==
2275
+ rocksdb_readoptions_get_max_skippable_internal_keys(ro));
2276
+
2277
+ rocksdb_readoptions_set_background_purge_on_iterator_cleanup(ro, 1);
2278
+ CheckCondition(
2279
+ 1 == rocksdb_readoptions_get_background_purge_on_iterator_cleanup(ro));
2280
+
2281
+ rocksdb_readoptions_set_ignore_range_deletions(ro, 1);
2282
+ CheckCondition(1 == rocksdb_readoptions_get_ignore_range_deletions(ro));
2283
+
2284
+ rocksdb_readoptions_destroy(ro);
2285
+ }
2286
+
2287
+ StartPhase("write_options");
2288
+ {
2289
+ rocksdb_writeoptions_t* wo;
2290
+ wo = rocksdb_writeoptions_create();
2291
+
2292
+ rocksdb_writeoptions_set_sync(wo, 1);
2293
+ CheckCondition(1 == rocksdb_writeoptions_get_sync(wo));
2294
+
2295
+ rocksdb_writeoptions_disable_WAL(wo, 1);
2296
+ CheckCondition(1 == rocksdb_writeoptions_get_disable_WAL(wo));
2297
+
2298
+ rocksdb_writeoptions_set_ignore_missing_column_families(wo, 1);
2299
+ CheckCondition(1 ==
2300
+ rocksdb_writeoptions_get_ignore_missing_column_families(wo));
2301
+
2302
+ rocksdb_writeoptions_set_no_slowdown(wo, 1);
2303
+ CheckCondition(1 == rocksdb_writeoptions_get_no_slowdown(wo));
2304
+
2305
+ rocksdb_writeoptions_set_low_pri(wo, 1);
2306
+ CheckCondition(1 == rocksdb_writeoptions_get_low_pri(wo));
2307
+
2308
+ rocksdb_writeoptions_set_memtable_insert_hint_per_batch(wo, 1);
2309
+ CheckCondition(1 ==
2310
+ rocksdb_writeoptions_get_memtable_insert_hint_per_batch(wo));
2311
+
2312
+ rocksdb_writeoptions_destroy(wo);
2313
+ }
2314
+
2315
+ StartPhase("compact_options");
2316
+ {
2317
+ rocksdb_compactoptions_t* co;
2318
+ co = rocksdb_compactoptions_create();
2319
+
2320
+ rocksdb_compactoptions_set_exclusive_manual_compaction(co, 1);
2321
+ CheckCondition(1 ==
2322
+ rocksdb_compactoptions_get_exclusive_manual_compaction(co));
2323
+
2324
+ rocksdb_compactoptions_set_bottommost_level_compaction(co, 1);
2325
+ CheckCondition(1 ==
2326
+ rocksdb_compactoptions_get_bottommost_level_compaction(co));
2327
+
2328
+ rocksdb_compactoptions_set_change_level(co, 1);
2329
+ CheckCondition(1 == rocksdb_compactoptions_get_change_level(co));
2330
+
2331
+ rocksdb_compactoptions_set_target_level(co, 1);
2332
+ CheckCondition(1 == rocksdb_compactoptions_get_target_level(co));
2333
+
2334
+ rocksdb_compactoptions_destroy(co);
2335
+ }
2336
+
2337
+ StartPhase("flush_options");
2338
+ {
2339
+ rocksdb_flushoptions_t* fo;
2340
+ fo = rocksdb_flushoptions_create();
2341
+
2342
+ rocksdb_flushoptions_set_wait(fo, 1);
2343
+ CheckCondition(1 == rocksdb_flushoptions_get_wait(fo));
2344
+
2345
+ rocksdb_flushoptions_destroy(fo);
2346
+ }
2347
+
2348
+ StartPhase("cache_options");
2349
+ {
2350
+ rocksdb_cache_t* co;
2351
+ co = rocksdb_cache_create_lru(100);
2352
+ CheckCondition(100 == rocksdb_cache_get_capacity(co));
2353
+
2354
+ rocksdb_cache_set_capacity(co, 200);
2355
+ CheckCondition(200 == rocksdb_cache_get_capacity(co));
2356
+
2357
+ rocksdb_cache_destroy(co);
2358
+ }
2359
+
2360
+ StartPhase("env");
2361
+ {
2362
+ rocksdb_env_t* e;
2363
+ e = rocksdb_create_default_env();
2364
+
2365
+ rocksdb_env_set_background_threads(e, 10);
2366
+ CheckCondition(10 == rocksdb_env_get_background_threads(e));
2367
+
2368
+ rocksdb_env_set_high_priority_background_threads(e, 20);
2369
+ CheckCondition(20 == rocksdb_env_get_high_priority_background_threads(e));
2370
+
2371
+ rocksdb_env_set_low_priority_background_threads(e, 30);
2372
+ CheckCondition(30 == rocksdb_env_get_low_priority_background_threads(e));
2373
+
2374
+ rocksdb_env_set_bottom_priority_background_threads(e, 40);
2375
+ CheckCondition(40 == rocksdb_env_get_bottom_priority_background_threads(e));
2376
+
2377
+ rocksdb_env_destroy(e);
2378
+ }
2379
+
2380
+ StartPhase("universal_compaction_options");
2381
+ {
2382
+ rocksdb_universal_compaction_options_t* uco;
2383
+ uco = rocksdb_universal_compaction_options_create();
2384
+
2385
+ rocksdb_universal_compaction_options_set_size_ratio(uco, 5);
2386
+ CheckCondition(5 ==
2387
+ rocksdb_universal_compaction_options_get_size_ratio(uco));
2388
+
2389
+ rocksdb_universal_compaction_options_set_min_merge_width(uco, 15);
2390
+ CheckCondition(
2391
+ 15 == rocksdb_universal_compaction_options_get_min_merge_width(uco));
2392
+
2393
+ rocksdb_universal_compaction_options_set_max_merge_width(uco, 25);
2394
+ CheckCondition(
2395
+ 25 == rocksdb_universal_compaction_options_get_max_merge_width(uco));
2396
+
2397
+ rocksdb_universal_compaction_options_set_max_size_amplification_percent(uco,
2398
+ 35);
2399
+ CheckCondition(
2400
+ 35 ==
2401
+ rocksdb_universal_compaction_options_get_max_size_amplification_percent(
2402
+ uco));
2403
+
2404
+ rocksdb_universal_compaction_options_set_compression_size_percent(uco, 45);
2405
+ CheckCondition(
2406
+ 45 ==
2407
+ rocksdb_universal_compaction_options_get_compression_size_percent(uco));
2408
+
2409
+ rocksdb_universal_compaction_options_set_stop_style(uco, 1);
2410
+ CheckCondition(1 ==
2411
+ rocksdb_universal_compaction_options_get_stop_style(uco));
2412
+
2413
+ rocksdb_universal_compaction_options_destroy(uco);
2414
+ }
2415
+
2416
+ StartPhase("fifo_compaction_options");
2417
+ {
2418
+ rocksdb_fifo_compaction_options_t* fco;
2419
+ fco = rocksdb_fifo_compaction_options_create();
2420
+
2421
+ rocksdb_fifo_compaction_options_set_max_table_files_size(fco, 100000);
2422
+ CheckCondition(
2423
+ 100000 ==
2424
+ rocksdb_fifo_compaction_options_get_max_table_files_size(fco));
2425
+
2426
+ rocksdb_fifo_compaction_options_destroy(fco);
2427
+ }
2428
+
2429
+ StartPhase("backupable_db_option");
2430
+ {
2431
+ rocksdb_backupable_db_options_t* bdo;
2432
+ bdo = rocksdb_backupable_db_options_create("path");
2433
+
2434
+ rocksdb_backupable_db_options_set_share_table_files(bdo, 1);
2435
+ CheckCondition(1 ==
2436
+ rocksdb_backupable_db_options_get_share_table_files(bdo));
2437
+
2438
+ rocksdb_backupable_db_options_set_sync(bdo, 1);
2439
+ CheckCondition(1 == rocksdb_backupable_db_options_get_sync(bdo));
2440
+
2441
+ rocksdb_backupable_db_options_set_destroy_old_data(bdo, 1);
2442
+ CheckCondition(1 ==
2443
+ rocksdb_backupable_db_options_get_destroy_old_data(bdo));
2444
+
2445
+ rocksdb_backupable_db_options_set_backup_log_files(bdo, 1);
2446
+ CheckCondition(1 ==
2447
+ rocksdb_backupable_db_options_get_backup_log_files(bdo));
2448
+
2449
+ rocksdb_backupable_db_options_set_backup_rate_limit(bdo, 123);
2450
+ CheckCondition(123 ==
2451
+ rocksdb_backupable_db_options_get_backup_rate_limit(bdo));
2452
+
2453
+ rocksdb_backupable_db_options_set_restore_rate_limit(bdo, 37);
2454
+ CheckCondition(37 ==
2455
+ rocksdb_backupable_db_options_get_restore_rate_limit(bdo));
2456
+
2457
+ rocksdb_backupable_db_options_set_max_background_operations(bdo, 20);
2458
+ CheckCondition(
2459
+ 20 == rocksdb_backupable_db_options_get_max_background_operations(bdo));
2460
+
2461
+ rocksdb_backupable_db_options_set_callback_trigger_interval_size(bdo, 9000);
2462
+ CheckCondition(
2463
+ 9000 ==
2464
+ rocksdb_backupable_db_options_get_callback_trigger_interval_size(bdo));
2465
+
2466
+ rocksdb_backupable_db_options_set_max_valid_backups_to_open(bdo, 40);
2467
+ CheckCondition(
2468
+ 40 == rocksdb_backupable_db_options_get_max_valid_backups_to_open(bdo));
2469
+
2470
+ rocksdb_backupable_db_options_set_share_files_with_checksum_naming(bdo, 2);
2471
+ CheckCondition(
2472
+ 2 == rocksdb_backupable_db_options_get_share_files_with_checksum_naming(
2473
+ bdo));
2474
+
2475
+ rocksdb_backupable_db_options_destroy(bdo);
2476
+ }
2477
+
2478
+ StartPhase("iterate_upper_bound");
2479
+ {
2480
+ // Create new empty database
2481
+ rocksdb_close(db);
2482
+ rocksdb_destroy_db(options, dbname, &err);
2483
+ CheckNoError(err);
2484
+
2485
+ rocksdb_options_set_prefix_extractor(options, NULL);
2486
+ db = rocksdb_open(options, dbname, &err);
2487
+ CheckNoError(err);
2488
+
2489
+ rocksdb_put(db, woptions, "a", 1, "0", 1, &err); CheckNoError(err);
2490
+ rocksdb_put(db, woptions, "foo", 3, "bar", 3, &err); CheckNoError(err);
2491
+ rocksdb_put(db, woptions, "foo1", 4, "bar1", 4, &err); CheckNoError(err);
2492
+ rocksdb_put(db, woptions, "g1", 2, "0", 1, &err); CheckNoError(err);
2493
+
2494
+ // testing basic case with no iterate_upper_bound and no prefix_extractor
2495
+ {
2496
+ rocksdb_readoptions_set_iterate_upper_bound(roptions, NULL, 0);
2497
+ rocksdb_iterator_t* iter = rocksdb_create_iterator(db, roptions);
2498
+
2499
+ rocksdb_iter_seek(iter, "foo", 3);
2500
+ CheckCondition(rocksdb_iter_valid(iter));
2501
+ CheckIter(iter, "foo", "bar");
2502
+
2503
+ rocksdb_iter_next(iter);
2504
+ CheckCondition(rocksdb_iter_valid(iter));
2505
+ CheckIter(iter, "foo1", "bar1");
2506
+
2507
+ rocksdb_iter_next(iter);
2508
+ CheckCondition(rocksdb_iter_valid(iter));
2509
+ CheckIter(iter, "g1", "0");
2510
+
2511
+ rocksdb_iter_destroy(iter);
2512
+ }
2513
+
2514
+ // testing iterate_upper_bound and forward iterator
2515
+ // to make sure it stops at bound
2516
+ {
2517
+ // iterate_upper_bound points beyond the last expected entry
2518
+ rocksdb_readoptions_set_iterate_upper_bound(roptions, "foo2", 4);
2519
+
2520
+ rocksdb_iterator_t* iter = rocksdb_create_iterator(db, roptions);
2521
+
2522
+ rocksdb_iter_seek(iter, "foo", 3);
2523
+ CheckCondition(rocksdb_iter_valid(iter));
2524
+ CheckIter(iter, "foo", "bar");
2525
+
2526
+ rocksdb_iter_next(iter);
2527
+ CheckCondition(rocksdb_iter_valid(iter));
2528
+ CheckIter(iter, "foo1", "bar1");
2529
+
2530
+ rocksdb_iter_next(iter);
2531
+ // should stop here...
2532
+ CheckCondition(!rocksdb_iter_valid(iter));
2533
+
2534
+ rocksdb_iter_destroy(iter);
2535
+ rocksdb_readoptions_set_iterate_upper_bound(roptions, NULL, 0);
2536
+ }
2537
+ }
2538
+
2539
+ StartPhase("transactions");
2540
+ {
2541
+ rocksdb_close(db);
2542
+ rocksdb_destroy_db(options, dbname, &err);
2543
+ CheckNoError(err);
2544
+
2545
+ // open a TransactionDB
2546
+ txn_db_options = rocksdb_transactiondb_options_create();
2547
+ txn_options = rocksdb_transaction_options_create();
2548
+ rocksdb_options_set_create_if_missing(options, 1);
2549
+ txn_db = rocksdb_transactiondb_open(options, txn_db_options, dbname, &err);
2550
+ CheckNoError(err);
2551
+
2552
+ // put outside a transaction
2553
+ rocksdb_transactiondb_put(txn_db, woptions, "foo", 3, "hello", 5, &err);
2554
+ CheckNoError(err);
2555
+ CheckTxnDBGet(txn_db, roptions, "foo", "hello");
2556
+
2557
+ // delete from outside transaction
2558
+ rocksdb_transactiondb_delete(txn_db, woptions, "foo", 3, &err);
2559
+ CheckNoError(err);
2560
+ CheckTxnDBGet(txn_db, roptions, "foo", NULL);
2561
+
2562
+ // write batch into TransactionDB
2563
+ rocksdb_writebatch_t* wb = rocksdb_writebatch_create();
2564
+ rocksdb_writebatch_put(wb, "foo", 3, "a", 1);
2565
+ rocksdb_writebatch_clear(wb);
2566
+ rocksdb_writebatch_put(wb, "bar", 3, "b", 1);
2567
+ rocksdb_writebatch_put(wb, "box", 3, "c", 1);
2568
+ rocksdb_writebatch_delete(wb, "bar", 3);
2569
+ rocksdb_transactiondb_write(txn_db, woptions, wb, &err);
2570
+ rocksdb_writebatch_destroy(wb);
2571
+ CheckTxnDBGet(txn_db, roptions, "box", "c");
2572
+ CheckNoError(err);
2573
+
2574
+ // begin a transaction
2575
+ txn = rocksdb_transaction_begin(txn_db, woptions, txn_options, NULL);
2576
+ // put
2577
+ rocksdb_transaction_put(txn, "foo", 3, "hello", 5, &err);
2578
+ CheckNoError(err);
2579
+ CheckTxnGet(txn, roptions, "foo", "hello");
2580
+ // delete
2581
+ rocksdb_transaction_delete(txn, "foo", 3, &err);
2582
+ CheckNoError(err);
2583
+ CheckTxnGet(txn, roptions, "foo", NULL);
2584
+
2585
+ rocksdb_transaction_put(txn, "foo", 3, "hello", 5, &err);
2586
+ CheckNoError(err);
2587
+
2588
+ // read from outside transaction, before commit
2589
+ CheckTxnDBGet(txn_db, roptions, "foo", NULL);
2590
+
2591
+ // commit
2592
+ rocksdb_transaction_commit(txn, &err);
2593
+ CheckNoError(err);
2594
+
2595
+ // read from outside transaction, after commit
2596
+ CheckTxnDBGet(txn_db, roptions, "foo", "hello");
2597
+
2598
+ // reuse old transaction
2599
+ txn = rocksdb_transaction_begin(txn_db, woptions, txn_options, txn);
2600
+
2601
+ // snapshot
2602
+ const rocksdb_snapshot_t* snapshot;
2603
+ snapshot = rocksdb_transactiondb_create_snapshot(txn_db);
2604
+ rocksdb_readoptions_set_snapshot(roptions, snapshot);
2605
+
2606
+ rocksdb_transactiondb_put(txn_db, woptions, "foo", 3, "hey", 3, &err);
2607
+ CheckNoError(err);
2608
+
2609
+ CheckTxnDBGet(txn_db, roptions, "foo", "hello");
2610
+ rocksdb_readoptions_set_snapshot(roptions, NULL);
2611
+ rocksdb_transactiondb_release_snapshot(txn_db, snapshot);
2612
+ CheckTxnDBGet(txn_db, roptions, "foo", "hey");
2613
+
2614
+ // iterate
2615
+ rocksdb_transaction_put(txn, "bar", 3, "hi", 2, &err);
2616
+ rocksdb_iterator_t* iter = rocksdb_transaction_create_iterator(txn, roptions);
2617
+ CheckCondition(!rocksdb_iter_valid(iter));
2618
+ rocksdb_iter_seek_to_first(iter);
2619
+ CheckCondition(rocksdb_iter_valid(iter));
2620
+ CheckIter(iter, "bar", "hi");
2621
+ rocksdb_iter_get_error(iter, &err);
2622
+ CheckNoError(err);
2623
+ rocksdb_iter_destroy(iter);
2624
+
2625
+ // rollback
2626
+ rocksdb_transaction_rollback(txn, &err);
2627
+ CheckNoError(err);
2628
+ CheckTxnDBGet(txn_db, roptions, "bar", NULL);
2629
+
2630
+ // save point
2631
+ rocksdb_transaction_put(txn, "foo1", 4, "hi1", 3, &err);
2632
+ rocksdb_transaction_set_savepoint(txn);
2633
+ CheckTxnGet(txn, roptions, "foo1", "hi1");
2634
+ rocksdb_transaction_put(txn, "foo2", 4, "hi2", 3, &err);
2635
+ CheckTxnGet(txn, roptions, "foo2", "hi2");
2636
+
2637
+ // rollback to savepoint
2638
+ rocksdb_transaction_rollback_to_savepoint(txn, &err);
2639
+ CheckNoError(err);
2640
+ CheckTxnGet(txn, roptions, "foo2", NULL);
2641
+ CheckTxnGet(txn, roptions, "foo1", "hi1");
2642
+ CheckTxnDBGet(txn_db, roptions, "foo1", NULL);
2643
+ CheckTxnDBGet(txn_db, roptions, "foo2", NULL);
2644
+ rocksdb_transaction_commit(txn, &err);
2645
+ CheckNoError(err);
2646
+ CheckTxnDBGet(txn_db, roptions, "foo1", "hi1");
2647
+ CheckTxnDBGet(txn_db, roptions, "foo2", NULL);
2648
+
2649
+ // Column families.
2650
+ rocksdb_column_family_handle_t* cfh;
2651
+ cfh = rocksdb_transactiondb_create_column_family(txn_db, options,
2652
+ "txn_db_cf", &err);
2653
+ CheckNoError(err);
2654
+
2655
+ rocksdb_transactiondb_put_cf(txn_db, woptions, cfh, "cf_foo", 6, "cf_hello",
2656
+ 8, &err);
2657
+ CheckNoError(err);
2658
+ CheckTxnDBGetCF(txn_db, roptions, cfh, "cf_foo", "cf_hello");
2659
+
2660
+ rocksdb_transactiondb_delete_cf(txn_db, woptions, cfh, "cf_foo", 6, &err);
2661
+ CheckNoError(err);
2662
+ CheckTxnDBGetCF(txn_db, roptions, cfh, "cf_foo", NULL);
2663
+
2664
+ rocksdb_column_family_handle_destroy(cfh);
2665
+
2666
+ // close and destroy
2667
+ rocksdb_transaction_destroy(txn);
2668
+ rocksdb_transactiondb_close(txn_db);
2669
+ rocksdb_destroy_db(options, dbname, &err);
2670
+ CheckNoError(err);
2671
+ rocksdb_transaction_options_destroy(txn_options);
2672
+ rocksdb_transactiondb_options_destroy(txn_db_options);
2673
+ }
2674
+
2675
+ StartPhase("optimistic_transactions");
2676
+ {
2677
+ rocksdb_options_t* db_options = rocksdb_options_create();
2678
+ rocksdb_options_set_create_if_missing(db_options, 1);
2679
+ rocksdb_options_set_allow_concurrent_memtable_write(db_options, 1);
2680
+ otxn_db = rocksdb_optimistictransactiondb_open(db_options, dbname, &err);
2681
+ otxn_options = rocksdb_optimistictransaction_options_create();
2682
+ rocksdb_transaction_t* txn1 = rocksdb_optimistictransaction_begin(
2683
+ otxn_db, woptions, otxn_options, NULL);
2684
+ rocksdb_transaction_t* txn2 = rocksdb_optimistictransaction_begin(
2685
+ otxn_db, woptions, otxn_options, NULL);
2686
+ rocksdb_transaction_put(txn1, "key", 3, "value", 5, &err);
2687
+ CheckNoError(err);
2688
+ rocksdb_transaction_put(txn2, "key1", 4, "value1", 6, &err);
2689
+ CheckNoError(err);
2690
+ CheckTxnGet(txn1, roptions, "key", "value");
2691
+ rocksdb_transaction_commit(txn1, &err);
2692
+ CheckNoError(err);
2693
+ rocksdb_transaction_commit(txn2, &err);
2694
+ CheckNoError(err);
2695
+ rocksdb_transaction_destroy(txn1);
2696
+ rocksdb_transaction_destroy(txn2);
2697
+
2698
+ // Check column family
2699
+ db = rocksdb_optimistictransactiondb_get_base_db(otxn_db);
2700
+ rocksdb_put(db, woptions, "key", 3, "value", 5, &err);
2701
+ CheckNoError(err);
2702
+ rocksdb_column_family_handle_t *cfh1, *cfh2;
2703
+ cfh1 = rocksdb_create_column_family(db, db_options, "txn_db_cf1", &err);
2704
+ cfh2 = rocksdb_create_column_family(db, db_options, "txn_db_cf2", &err);
2705
+ txn = rocksdb_optimistictransaction_begin(otxn_db, woptions, otxn_options,
2706
+ NULL);
2707
+ rocksdb_transaction_put_cf(txn, cfh1, "key_cf1", 7, "val_cf1", 7, &err);
2708
+ CheckNoError(err);
2709
+ rocksdb_transaction_put_cf(txn, cfh2, "key_cf2", 7, "val_cf2", 7, &err);
2710
+ CheckNoError(err);
2711
+ rocksdb_transaction_commit(txn, &err);
2712
+ CheckNoError(err);
2713
+ txn = rocksdb_optimistictransaction_begin(otxn_db, woptions, otxn_options,
2714
+ txn);
2715
+ CheckGetCF(db, roptions, cfh1, "key_cf1", "val_cf1");
2716
+ CheckTxnGetCF(txn, roptions, cfh1, "key_cf1", "val_cf1");
2717
+
2718
+ // Check iterator with column family
2719
+ rocksdb_transaction_put_cf(txn, cfh1, "key1_cf", 7, "val1_cf", 7, &err);
2720
+ CheckNoError(err);
2721
+ rocksdb_iterator_t* iter =
2722
+ rocksdb_transaction_create_iterator_cf(txn, roptions, cfh1);
2723
+ CheckCondition(!rocksdb_iter_valid(iter));
2724
+ rocksdb_iter_seek_to_first(iter);
2725
+ CheckCondition(rocksdb_iter_valid(iter));
2726
+ CheckIter(iter, "key1_cf", "val1_cf");
2727
+ rocksdb_iter_get_error(iter, &err);
2728
+ CheckNoError(err);
2729
+ rocksdb_iter_destroy(iter);
2730
+
2731
+ rocksdb_transaction_destroy(txn);
2732
+ rocksdb_column_family_handle_destroy(cfh1);
2733
+ rocksdb_column_family_handle_destroy(cfh2);
2734
+ rocksdb_optimistictransactiondb_close_base_db(db);
2735
+ rocksdb_optimistictransactiondb_close(otxn_db);
2736
+
2737
+ // Check open optimistic transaction db with column families
2738
+ size_t cf_len;
2739
+ char** column_fams =
2740
+ rocksdb_list_column_families(db_options, dbname, &cf_len, &err);
2741
+ CheckNoError(err);
2742
+ CheckEqual("default", column_fams[0], 7);
2743
+ CheckEqual("txn_db_cf1", column_fams[1], 10);
2744
+ CheckEqual("txn_db_cf2", column_fams[2], 10);
2745
+ CheckCondition(cf_len == 3);
2746
+ rocksdb_list_column_families_destroy(column_fams, cf_len);
2747
+
2748
+ const char* cf_names[3] = {"default", "txn_db_cf1", "txn_db_cf2"};
2749
+ rocksdb_options_t* cf_options = rocksdb_options_create();
2750
+ const rocksdb_options_t* cf_opts[3] = {cf_options, cf_options, cf_options};
2751
+
2752
+ rocksdb_options_set_error_if_exists(cf_options, 0);
2753
+ rocksdb_column_family_handle_t* cf_handles[3];
2754
+ otxn_db = rocksdb_optimistictransactiondb_open_column_families(
2755
+ db_options, dbname, 3, cf_names, cf_opts, cf_handles, &err);
2756
+ CheckNoError(err);
2757
+ rocksdb_transaction_t* txn_cf = rocksdb_optimistictransaction_begin(
2758
+ otxn_db, woptions, otxn_options, NULL);
2759
+ CheckTxnGetCF(txn_cf, roptions, cf_handles[0], "key", "value");
2760
+ CheckTxnGetCF(txn_cf, roptions, cf_handles[1], "key_cf1", "val_cf1");
2761
+ CheckTxnGetCF(txn_cf, roptions, cf_handles[2], "key_cf2", "val_cf2");
2762
+ rocksdb_transaction_destroy(txn_cf);
2763
+ rocksdb_options_destroy(cf_options);
2764
+ rocksdb_column_family_handle_destroy(cf_handles[0]);
2765
+ rocksdb_column_family_handle_destroy(cf_handles[1]);
2766
+ rocksdb_column_family_handle_destroy(cf_handles[2]);
2767
+ rocksdb_optimistictransactiondb_close(otxn_db);
2768
+ rocksdb_destroy_db(db_options, dbname, &err);
2769
+ rocksdb_options_destroy(db_options);
2770
+ rocksdb_optimistictransaction_options_destroy(otxn_options);
2771
+ CheckNoError(err);
2772
+ }
2773
+
2774
+ // Simple sanity check that setting memtable rep works.
2775
+ StartPhase("memtable_reps");
2776
+ {
2777
+ // Create database with vector memtable.
2778
+ rocksdb_options_set_memtable_vector_rep(options);
2779
+ db = rocksdb_open(options, dbname, &err);
2780
+ CheckNoError(err);
2781
+
2782
+ // Create database with hash skiplist memtable.
2783
+ rocksdb_close(db);
2784
+ rocksdb_destroy_db(options, dbname, &err);
2785
+ CheckNoError(err);
2786
+
2787
+ rocksdb_options_set_hash_skip_list_rep(options, 5000, 4, 4);
2788
+ db = rocksdb_open(options, dbname, &err);
2789
+ CheckNoError(err);
2790
+ }
2791
+
2792
+ // Check that secondary instance works.
2793
+ StartPhase("open_as_secondary");
2794
+ {
2795
+ rocksdb_close(db);
2796
+ rocksdb_destroy_db(options, dbname, &err);
2797
+
2798
+ rocksdb_options_t* db_options = rocksdb_options_create();
2799
+ rocksdb_options_set_create_if_missing(db_options, 1);
2800
+ db = rocksdb_open(db_options, dbname, &err);
2801
+ CheckNoError(err);
2802
+ rocksdb_t* db1;
2803
+ rocksdb_options_t* opts = rocksdb_options_create();
2804
+ rocksdb_options_set_max_open_files(opts, -1);
2805
+ rocksdb_options_set_create_if_missing(opts, 1);
2806
+ snprintf(secondary_path, sizeof(secondary_path),
2807
+ "%s/rocksdb_c_test_secondary-%d", GetTempDir(), ((int)geteuid()));
2808
+ db1 = rocksdb_open_as_secondary(opts, dbname, secondary_path, &err);
2809
+ CheckNoError(err);
2810
+
2811
+ rocksdb_writeoptions_set_sync(woptions, 0);
2812
+ rocksdb_writeoptions_disable_WAL(woptions, 1);
2813
+ rocksdb_put(db, woptions, "key0", 4, "value0", 6, &err);
2814
+ CheckNoError(err);
2815
+ rocksdb_flushoptions_t* flush_opts = rocksdb_flushoptions_create();
2816
+ rocksdb_flushoptions_set_wait(flush_opts, 1);
2817
+ rocksdb_flush(db, flush_opts, &err);
2818
+ CheckNoError(err);
2819
+ rocksdb_try_catch_up_with_primary(db1, &err);
2820
+ CheckNoError(err);
2821
+ rocksdb_readoptions_t* ropts = rocksdb_readoptions_create();
2822
+ rocksdb_readoptions_set_verify_checksums(ropts, 1);
2823
+ rocksdb_readoptions_set_snapshot(ropts, NULL);
2824
+ CheckGet(db, ropts, "key0", "value0");
2825
+ CheckGet(db1, ropts, "key0", "value0");
2826
+
2827
+ rocksdb_writeoptions_disable_WAL(woptions, 0);
2828
+ rocksdb_put(db, woptions, "key1", 4, "value1", 6, &err);
2829
+ CheckNoError(err);
2830
+ rocksdb_try_catch_up_with_primary(db1, &err);
2831
+ CheckNoError(err);
2832
+ CheckGet(db1, ropts, "key0", "value0");
2833
+ CheckGet(db1, ropts, "key1", "value1");
2834
+
2835
+ rocksdb_close(db1);
2836
+ rocksdb_destroy_db(opts, secondary_path, &err);
2837
+ CheckNoError(err);
2838
+
2839
+ rocksdb_options_destroy(db_options);
2840
+ rocksdb_options_destroy(opts);
2841
+ rocksdb_readoptions_destroy(ropts);
2842
+ rocksdb_flushoptions_destroy(flush_opts);
2843
+ }
2844
+
2845
+ // Simple sanity check that options setting db_paths work.
2846
+ StartPhase("open_db_paths");
2847
+ {
2848
+ rocksdb_close(db);
2849
+ rocksdb_destroy_db(options, dbname, &err);
2850
+
2851
+ const rocksdb_dbpath_t* paths[1] = {dbpath};
2852
+ rocksdb_options_set_db_paths(options, paths, 1);
2853
+ db = rocksdb_open(options, dbname, &err);
2854
+ CheckNoError(err);
2855
+ }
2856
+
2857
+ StartPhase("cancel_all_background_work");
2858
+ rocksdb_cancel_all_background_work(db, 1);
2859
+
2860
+ StartPhase("cleanup");
2861
+ rocksdb_close(db);
2862
+ rocksdb_options_destroy(options);
2863
+ rocksdb_block_based_options_destroy(table_options);
2864
+ rocksdb_readoptions_destroy(roptions);
2865
+ rocksdb_writeoptions_destroy(woptions);
2866
+ rocksdb_compactoptions_destroy(coptions);
2867
+ rocksdb_cache_destroy(cache);
2868
+ rocksdb_comparator_destroy(cmp);
2869
+ rocksdb_dbpath_destroy(dbpath);
2870
+ rocksdb_env_destroy(env);
2871
+
2872
+ fprintf(stderr, "PASS\n");
2873
+ return 0;
2874
+ }
2875
+
2876
+ #else
2877
+
2878
+ int main() {
2879
+ fprintf(stderr, "SKIPPED\n");
2880
+ return 0;
2881
+ }
2882
+
2883
+ #endif // !ROCKSDB_LITE