rocksdb-native 0.0.0 → 0.0.2

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 (695) hide show
  1. package/CMakeLists.txt +1 -1
  2. package/binding.c +18 -3
  3. package/binding.gyp +23 -0
  4. package/binding.js +1 -1
  5. package/index.js +34 -22
  6. package/package.json +19 -1
  7. package/prebuilds/darwin-arm64/rocksdb-native.bare +0 -0
  8. package/vendor/rocksdb.cc +79 -0
  9. package/vendor/rocksdb.gyp +414 -0
  10. package/.clang-format +0 -15
  11. package/.github/workflows/test-node.yml +0 -23
  12. package/.gitmodules +0 -4
  13. package/NOTICE +0 -13
  14. package/vendor/rocksdb/.circleci/config.yml +0 -892
  15. package/vendor/rocksdb/.circleci/ubsan_suppression_list.txt +0 -6
  16. package/vendor/rocksdb/.clang-format +0 -5
  17. package/vendor/rocksdb/.github/workflows/sanity_check.yml +0 -47
  18. package/vendor/rocksdb/.lgtm.yml +0 -4
  19. package/vendor/rocksdb/AUTHORS +0 -12
  20. package/vendor/rocksdb/CODE_OF_CONDUCT.md +0 -77
  21. package/vendor/rocksdb/CONTRIBUTING.md +0 -17
  22. package/vendor/rocksdb/DEFAULT_OPTIONS_HISTORY.md +0 -24
  23. package/vendor/rocksdb/DUMP_FORMAT.md +0 -16
  24. package/vendor/rocksdb/HISTORY.md +0 -2399
  25. package/vendor/rocksdb/INSTALL.md +0 -220
  26. package/vendor/rocksdb/LANGUAGE-BINDINGS.md +0 -26
  27. package/vendor/rocksdb/Makefile +0 -2579
  28. package/vendor/rocksdb/PLUGINS.md +0 -8
  29. package/vendor/rocksdb/TARGETS +0 -5599
  30. package/vendor/rocksdb/USERS.md +0 -165
  31. package/vendor/rocksdb/Vagrantfile +0 -39
  32. package/vendor/rocksdb/WINDOWS_PORT.md +0 -228
  33. package/vendor/rocksdb/buckifier/bench-slow.json +0 -6163
  34. package/vendor/rocksdb/buckifier/bench.json +0 -1594
  35. package/vendor/rocksdb/buckifier/buckify_rocksdb.py +0 -333
  36. package/vendor/rocksdb/buckifier/check_buck_targets.sh +0 -32
  37. package/vendor/rocksdb/buckifier/rocks_test_runner.sh +0 -6
  38. package/vendor/rocksdb/buckifier/targets_builder.py +0 -150
  39. package/vendor/rocksdb/buckifier/targets_cfg.py +0 -41
  40. package/vendor/rocksdb/buckifier/util.py +0 -118
  41. package/vendor/rocksdb/build_tools/amalgamate.py +0 -168
  42. package/vendor/rocksdb/build_tools/benchmark_log_tool.py +0 -238
  43. package/vendor/rocksdb/build_tools/build_detect_platform +0 -804
  44. package/vendor/rocksdb/build_tools/check-sources.sh +0 -48
  45. package/vendor/rocksdb/build_tools/dependencies_platform010.sh +0 -22
  46. package/vendor/rocksdb/build_tools/dockerbuild.sh +0 -3
  47. package/vendor/rocksdb/build_tools/error_filter.py +0 -181
  48. package/vendor/rocksdb/build_tools/fb_compile_mongo.sh +0 -55
  49. package/vendor/rocksdb/build_tools/fbcode_config.sh +0 -175
  50. package/vendor/rocksdb/build_tools/fbcode_config_platform010.sh +0 -175
  51. package/vendor/rocksdb/build_tools/format-diff.sh +0 -203
  52. package/vendor/rocksdb/build_tools/gnu_parallel +0 -7971
  53. package/vendor/rocksdb/build_tools/make_package.sh +0 -129
  54. package/vendor/rocksdb/build_tools/ps_with_stack +0 -38
  55. package/vendor/rocksdb/build_tools/regression_build_test.sh +0 -396
  56. package/vendor/rocksdb/build_tools/run_ci_db_test.ps1 +0 -493
  57. package/vendor/rocksdb/build_tools/setup_centos7.sh +0 -45
  58. package/vendor/rocksdb/build_tools/ubuntu20_image/Dockerfile +0 -57
  59. package/vendor/rocksdb/build_tools/update_dependencies.sh +0 -106
  60. package/vendor/rocksdb/build_tools/version.sh +0 -23
  61. package/vendor/rocksdb/common.mk +0 -30
  62. package/vendor/rocksdb/crash_test.mk +0 -107
  63. package/vendor/rocksdb/db/c_test.c +0 -3609
  64. package/vendor/rocksdb/docs/CNAME +0 -1
  65. package/vendor/rocksdb/docs/CONTRIBUTING.md +0 -115
  66. package/vendor/rocksdb/docs/Gemfile +0 -4
  67. package/vendor/rocksdb/docs/LICENSE-DOCUMENTATION +0 -385
  68. package/vendor/rocksdb/docs/TEMPLATE-INFORMATION.md +0 -17
  69. package/vendor/rocksdb/docs/_config.yml +0 -85
  70. package/vendor/rocksdb/docs/_data/authors.yml +0 -81
  71. package/vendor/rocksdb/docs/_data/features.yml +0 -19
  72. package/vendor/rocksdb/docs/_data/nav.yml +0 -30
  73. package/vendor/rocksdb/docs/_data/nav_docs.yml +0 -3
  74. package/vendor/rocksdb/docs/_data/powered_by.yml +0 -1
  75. package/vendor/rocksdb/docs/_data/powered_by_highlight.yml +0 -1
  76. package/vendor/rocksdb/docs/_data/promo.yml +0 -6
  77. package/vendor/rocksdb/docs/_docs/faq.md +0 -48
  78. package/vendor/rocksdb/docs/_docs/getting-started.md +0 -78
  79. package/vendor/rocksdb/docs/_includes/blog_pagination.html +0 -28
  80. package/vendor/rocksdb/docs/_includes/content/gridblocks.html +0 -5
  81. package/vendor/rocksdb/docs/_includes/content/items/gridblock.html +0 -37
  82. package/vendor/rocksdb/docs/_includes/doc.html +0 -25
  83. package/vendor/rocksdb/docs/_includes/doc_paging.html +0 -0
  84. package/vendor/rocksdb/docs/_includes/footer.html +0 -34
  85. package/vendor/rocksdb/docs/_includes/head.html +0 -23
  86. package/vendor/rocksdb/docs/_includes/header.html +0 -19
  87. package/vendor/rocksdb/docs/_includes/hero.html +0 -0
  88. package/vendor/rocksdb/docs/_includes/home_header.html +0 -22
  89. package/vendor/rocksdb/docs/_includes/katex_import.html +0 -3
  90. package/vendor/rocksdb/docs/_includes/katex_render.html +0 -210
  91. package/vendor/rocksdb/docs/_includes/nav/collection_nav.html +0 -64
  92. package/vendor/rocksdb/docs/_includes/nav/collection_nav_group.html +0 -19
  93. package/vendor/rocksdb/docs/_includes/nav/collection_nav_group_item.html +0 -1
  94. package/vendor/rocksdb/docs/_includes/nav/header_nav.html +0 -30
  95. package/vendor/rocksdb/docs/_includes/nav.html +0 -37
  96. package/vendor/rocksdb/docs/_includes/nav_search.html +0 -15
  97. package/vendor/rocksdb/docs/_includes/plugins/all_share.html +0 -3
  98. package/vendor/rocksdb/docs/_includes/plugins/ascii_cinema.html +0 -2
  99. package/vendor/rocksdb/docs/_includes/plugins/button.html +0 -6
  100. package/vendor/rocksdb/docs/_includes/plugins/github_star.html +0 -4
  101. package/vendor/rocksdb/docs/_includes/plugins/github_watch.html +0 -4
  102. package/vendor/rocksdb/docs/_includes/plugins/google_share.html +0 -5
  103. package/vendor/rocksdb/docs/_includes/plugins/iframe.html +0 -6
  104. package/vendor/rocksdb/docs/_includes/plugins/like_button.html +0 -18
  105. package/vendor/rocksdb/docs/_includes/plugins/plugin_row.html +0 -5
  106. package/vendor/rocksdb/docs/_includes/plugins/post_social_plugins.html +0 -41
  107. package/vendor/rocksdb/docs/_includes/plugins/slideshow.html +0 -88
  108. package/vendor/rocksdb/docs/_includes/plugins/twitter_follow.html +0 -12
  109. package/vendor/rocksdb/docs/_includes/plugins/twitter_share.html +0 -11
  110. package/vendor/rocksdb/docs/_includes/post.html +0 -40
  111. package/vendor/rocksdb/docs/_includes/powered_by.html +0 -28
  112. package/vendor/rocksdb/docs/_includes/social_plugins.html +0 -31
  113. package/vendor/rocksdb/docs/_includes/ui/button.html +0 -1
  114. package/vendor/rocksdb/docs/_layouts/basic.html +0 -12
  115. package/vendor/rocksdb/docs/_layouts/blog.html +0 -11
  116. package/vendor/rocksdb/docs/_layouts/blog_default.html +0 -14
  117. package/vendor/rocksdb/docs/_layouts/default.html +0 -12
  118. package/vendor/rocksdb/docs/_layouts/doc_default.html +0 -14
  119. package/vendor/rocksdb/docs/_layouts/doc_page.html +0 -10
  120. package/vendor/rocksdb/docs/_layouts/docs.html +0 -5
  121. package/vendor/rocksdb/docs/_layouts/home.html +0 -26
  122. package/vendor/rocksdb/docs/_layouts/page.html +0 -3
  123. package/vendor/rocksdb/docs/_layouts/plain.html +0 -10
  124. package/vendor/rocksdb/docs/_layouts/post.html +0 -8
  125. package/vendor/rocksdb/docs/_layouts/redirect.html +0 -6
  126. package/vendor/rocksdb/docs/_layouts/top-level.html +0 -10
  127. package/vendor/rocksdb/docs/_posts/2014-03-27-how-to-backup-rocksdb.markdown +0 -135
  128. package/vendor/rocksdb/docs/_posts/2014-03-27-how-to-persist-in-memory-rocksdb-database.markdown +0 -54
  129. package/vendor/rocksdb/docs/_posts/2014-04-02-the-1st-rocksdb-local-meetup-held-on-march-27-2014.markdown +0 -53
  130. package/vendor/rocksdb/docs/_posts/2014-04-07-rocksdb-2-8-release.markdown +0 -40
  131. package/vendor/rocksdb/docs/_posts/2014-04-21-indexing-sst-files-for-better-lookup-performance.markdown +0 -28
  132. package/vendor/rocksdb/docs/_posts/2014-05-14-lock.markdown +0 -88
  133. package/vendor/rocksdb/docs/_posts/2014-05-19-rocksdb-3-0-release.markdown +0 -24
  134. package/vendor/rocksdb/docs/_posts/2014-05-22-rocksdb-3-1-release.markdown +0 -20
  135. package/vendor/rocksdb/docs/_posts/2014-06-23-plaintable-a-new-file-format.markdown +0 -47
  136. package/vendor/rocksdb/docs/_posts/2014-06-27-avoid-expensive-locks-in-get.markdown +0 -89
  137. package/vendor/rocksdb/docs/_posts/2014-06-27-rocksdb-3-2-release.markdown +0 -30
  138. package/vendor/rocksdb/docs/_posts/2014-07-29-rocksdb-3-3-release.markdown +0 -34
  139. package/vendor/rocksdb/docs/_posts/2014-09-12-cuckoo.markdown +0 -74
  140. package/vendor/rocksdb/docs/_posts/2014-09-12-new-bloom-filter-format.markdown +0 -52
  141. package/vendor/rocksdb/docs/_posts/2014-09-15-rocksdb-3-5-release.markdown +0 -38
  142. package/vendor/rocksdb/docs/_posts/2015-01-16-migrating-from-leveldb-to-rocksdb-2.markdown +0 -112
  143. package/vendor/rocksdb/docs/_posts/2015-02-24-reading-rocksdb-options-from-a-file.markdown +0 -41
  144. package/vendor/rocksdb/docs/_posts/2015-02-27-write-batch-with-index.markdown +0 -20
  145. package/vendor/rocksdb/docs/_posts/2015-04-22-integrating-rocksdb-with-mongodb-2.markdown +0 -16
  146. package/vendor/rocksdb/docs/_posts/2015-06-12-rocksdb-in-osquery.markdown +0 -10
  147. package/vendor/rocksdb/docs/_posts/2015-07-15-rocksdb-2015-h2-roadmap.markdown +0 -92
  148. package/vendor/rocksdb/docs/_posts/2015-07-17-spatial-indexing-in-rocksdb.markdown +0 -78
  149. package/vendor/rocksdb/docs/_posts/2015-07-22-rocksdb-is-now-available-in-windows-platform.markdown +0 -30
  150. package/vendor/rocksdb/docs/_posts/2015-07-23-dynamic-level.markdown +0 -29
  151. package/vendor/rocksdb/docs/_posts/2015-10-27-getthreadlist.markdown +0 -193
  152. package/vendor/rocksdb/docs/_posts/2015-11-10-use-checkpoints-for-efficient-snapshots.markdown +0 -45
  153. package/vendor/rocksdb/docs/_posts/2015-11-16-analysis-file-read-latency-by-level.markdown +0 -244
  154. package/vendor/rocksdb/docs/_posts/2016-01-29-compaction_pri.markdown +0 -51
  155. package/vendor/rocksdb/docs/_posts/2016-02-24-rocksdb-4-2-release.markdown +0 -41
  156. package/vendor/rocksdb/docs/_posts/2016-02-25-rocksdb-ama.markdown +0 -20
  157. package/vendor/rocksdb/docs/_posts/2016-03-07-rocksdb-options-file.markdown +0 -24
  158. package/vendor/rocksdb/docs/_posts/2016-04-26-rocksdb-4-5-1-released.markdown +0 -60
  159. package/vendor/rocksdb/docs/_posts/2016-07-26-rocksdb-4-8-released.markdown +0 -48
  160. package/vendor/rocksdb/docs/_posts/2016-09-28-rocksdb-4-11-2-released.markdown +0 -49
  161. package/vendor/rocksdb/docs/_posts/2017-01-06-rocksdb-5-0-1-released.markdown +0 -26
  162. package/vendor/rocksdb/docs/_posts/2017-02-07-rocksdb-5-1-2-released.markdown +0 -15
  163. package/vendor/rocksdb/docs/_posts/2017-02-17-bulkoad-ingest-sst-file.markdown +0 -50
  164. package/vendor/rocksdb/docs/_posts/2017-03-02-rocksdb-5-2-1-released.markdown +0 -22
  165. package/vendor/rocksdb/docs/_posts/2017-05-12-partitioned-index-filter.markdown +0 -34
  166. package/vendor/rocksdb/docs/_posts/2017-05-14-core-local-stats.markdown +0 -106
  167. package/vendor/rocksdb/docs/_posts/2017-05-26-rocksdb-5-4-5-released.markdown +0 -39
  168. package/vendor/rocksdb/docs/_posts/2017-06-26-17-level-based-changes.markdown +0 -60
  169. package/vendor/rocksdb/docs/_posts/2017-06-29-rocksdb-5-5-1-released.markdown +0 -22
  170. package/vendor/rocksdb/docs/_posts/2017-07-25-rocksdb-5-6-1-released.markdown +0 -22
  171. package/vendor/rocksdb/docs/_posts/2017-08-24-pinnableslice.markdown +0 -37
  172. package/vendor/rocksdb/docs/_posts/2017-08-25-flushwal.markdown +0 -26
  173. package/vendor/rocksdb/docs/_posts/2017-09-28-rocksdb-5-8-released.markdown +0 -25
  174. package/vendor/rocksdb/docs/_posts/2017-12-18-17-auto-tuned-rate-limiter.markdown +0 -28
  175. package/vendor/rocksdb/docs/_posts/2017-12-19-write-prepared-txn.markdown +0 -41
  176. package/vendor/rocksdb/docs/_posts/2018-02-05-rocksdb-5-10-2-released.markdown +0 -22
  177. package/vendor/rocksdb/docs/_posts/2018-08-01-rocksdb-tuning-advisor.markdown +0 -58
  178. package/vendor/rocksdb/docs/_posts/2018-08-23-data-block-hash-index.markdown +0 -118
  179. package/vendor/rocksdb/docs/_posts/2018-11-21-delete-range.markdown +0 -292
  180. package/vendor/rocksdb/docs/_posts/2019-03-08-format-version-4.markdown +0 -36
  181. package/vendor/rocksdb/docs/_posts/2019-08-15-unordered-write.markdown +0 -56
  182. package/vendor/rocksdb/docs/_posts/2021-04-12-universal-improvements.markdown +0 -46
  183. package/vendor/rocksdb/docs/_posts/2021-05-26-integrated-blob-db.markdown +0 -101
  184. package/vendor/rocksdb/docs/_posts/2021-05-26-online-validation.markdown +0 -17
  185. package/vendor/rocksdb/docs/_posts/2021-05-27-rocksdb-secondary-cache.markdown +0 -195
  186. package/vendor/rocksdb/docs/_posts/2021-05-31-dictionary-compression.markdown +0 -157
  187. package/vendor/rocksdb/docs/_posts/2021-12-29-ribbon-filter.markdown +0 -281
  188. package/vendor/rocksdb/docs/_posts/2022-07-18-per-key-value-checksum.markdown +0 -142
  189. package/vendor/rocksdb/docs/_posts/2022-10-05-lost-buffered-write-recovery.markdown +0 -123
  190. package/vendor/rocksdb/docs/_posts/2022-10-07-asynchronous-io-in-rocksdb.markdown +0 -133
  191. package/vendor/rocksdb/docs/_posts/2022-10-31-align-compaction-output-file.markdown +0 -107
  192. package/vendor/rocksdb/docs/_posts/2022-11-09-time-aware-tiered-storage.markdown +0 -121
  193. package/vendor/rocksdb/docs/_sass/_base.scss +0 -492
  194. package/vendor/rocksdb/docs/_sass/_blog.scss +0 -47
  195. package/vendor/rocksdb/docs/_sass/_buttons.scss +0 -47
  196. package/vendor/rocksdb/docs/_sass/_footer.scss +0 -82
  197. package/vendor/rocksdb/docs/_sass/_gridBlock.scss +0 -115
  198. package/vendor/rocksdb/docs/_sass/_header.scss +0 -139
  199. package/vendor/rocksdb/docs/_sass/_poweredby.scss +0 -69
  200. package/vendor/rocksdb/docs/_sass/_promo.scss +0 -55
  201. package/vendor/rocksdb/docs/_sass/_react_docs_nav.scss +0 -332
  202. package/vendor/rocksdb/docs/_sass/_react_header_nav.scss +0 -141
  203. package/vendor/rocksdb/docs/_sass/_reset.scss +0 -43
  204. package/vendor/rocksdb/docs/_sass/_search.scss +0 -142
  205. package/vendor/rocksdb/docs/_sass/_slideshow.scss +0 -48
  206. package/vendor/rocksdb/docs/_sass/_syntax-highlighting.scss +0 -129
  207. package/vendor/rocksdb/docs/_sass/_tables.scss +0 -47
  208. package/vendor/rocksdb/docs/_top-level/support.md +0 -22
  209. package/vendor/rocksdb/docs/blog/all.html +0 -20
  210. package/vendor/rocksdb/docs/blog/index.html +0 -12
  211. package/vendor/rocksdb/docs/css/main.scss +0 -159
  212. package/vendor/rocksdb/docs/doc-type-examples/2016-04-07-blog-post-example.md +0 -21
  213. package/vendor/rocksdb/docs/doc-type-examples/docs-hello-world.md +0 -12
  214. package/vendor/rocksdb/docs/doc-type-examples/top-level-example.md +0 -8
  215. package/vendor/rocksdb/docs/docs/index.html +0 -6
  216. package/vendor/rocksdb/docs/feed.xml +0 -30
  217. package/vendor/rocksdb/docs/index.md +0 -9
  218. package/vendor/rocksdb/docs/static/favicon.png +0 -0
  219. package/vendor/rocksdb/docs/static/fonts/LatoLatin-Black.woff +0 -0
  220. package/vendor/rocksdb/docs/static/fonts/LatoLatin-Black.woff2 +0 -0
  221. package/vendor/rocksdb/docs/static/fonts/LatoLatin-BlackItalic.woff +0 -0
  222. package/vendor/rocksdb/docs/static/fonts/LatoLatin-BlackItalic.woff2 +0 -0
  223. package/vendor/rocksdb/docs/static/fonts/LatoLatin-Italic.woff +0 -0
  224. package/vendor/rocksdb/docs/static/fonts/LatoLatin-Italic.woff2 +0 -0
  225. package/vendor/rocksdb/docs/static/fonts/LatoLatin-Light.woff +0 -0
  226. package/vendor/rocksdb/docs/static/fonts/LatoLatin-Light.woff2 +0 -0
  227. package/vendor/rocksdb/docs/static/fonts/LatoLatin-Regular.woff +0 -0
  228. package/vendor/rocksdb/docs/static/fonts/LatoLatin-Regular.woff2 +0 -0
  229. package/vendor/rocksdb/docs/static/images/Resize-of-20140327_200754-300x225.jpg +0 -0
  230. package/vendor/rocksdb/docs/static/images/align-compaction-output/compaction_output_file_size_compare.png +0 -0
  231. package/vendor/rocksdb/docs/static/images/align-compaction-output/file_cut_align.png +0 -0
  232. package/vendor/rocksdb/docs/static/images/align-compaction-output/file_cut_normal.png +0 -0
  233. package/vendor/rocksdb/docs/static/images/align-compaction-output/file_cut_trival_move.png +0 -0
  234. package/vendor/rocksdb/docs/static/images/align-compaction-output/file_size_compare.png +0 -0
  235. package/vendor/rocksdb/docs/static/images/align-compaction-output/write_amp_compare.png +0 -0
  236. package/vendor/rocksdb/docs/static/images/asynchronous-io/mget_async.png +0 -0
  237. package/vendor/rocksdb/docs/static/images/asynchronous-io/scan_async.png +0 -0
  238. package/vendor/rocksdb/docs/static/images/binaryseek.png +0 -0
  239. package/vendor/rocksdb/docs/static/images/bloom_fp_vs_bpk.png +0 -0
  240. package/vendor/rocksdb/docs/static/images/compaction/full-range.png +0 -0
  241. package/vendor/rocksdb/docs/static/images/compaction/l0-l1-contend.png +0 -0
  242. package/vendor/rocksdb/docs/static/images/compaction/l1-l2-contend.png +0 -0
  243. package/vendor/rocksdb/docs/static/images/compaction/part-range-old.png +0 -0
  244. package/vendor/rocksdb/docs/static/images/data-block-hash-index/block-format-binary-seek.png +0 -0
  245. package/vendor/rocksdb/docs/static/images/data-block-hash-index/block-format-hash-index.png +0 -0
  246. package/vendor/rocksdb/docs/static/images/data-block-hash-index/hash-index-data-structure.png +0 -0
  247. package/vendor/rocksdb/docs/static/images/data-block-hash-index/perf-cache-miss.png +0 -0
  248. package/vendor/rocksdb/docs/static/images/data-block-hash-index/perf-throughput.png +0 -0
  249. package/vendor/rocksdb/docs/static/images/delrange/delrange_collapsed.png +0 -0
  250. package/vendor/rocksdb/docs/static/images/delrange/delrange_key_schema.png +0 -0
  251. package/vendor/rocksdb/docs/static/images/delrange/delrange_sst_blocks.png +0 -0
  252. package/vendor/rocksdb/docs/static/images/delrange/delrange_uncollapsed.png +0 -0
  253. package/vendor/rocksdb/docs/static/images/delrange/delrange_write_path.png +0 -0
  254. package/vendor/rocksdb/docs/static/images/dictcmp/dictcmp_raw_sampled.png +0 -0
  255. package/vendor/rocksdb/docs/static/images/dictcmp/dictcmp_sst_blocks.png +0 -0
  256. package/vendor/rocksdb/docs/static/images/dictcmp/dictcmp_zstd_trained.png +0 -0
  257. package/vendor/rocksdb/docs/static/images/integrated-blob-db/BlobDB_Benchmarks_Legacy_Vs_Integrated.png +0 -0
  258. package/vendor/rocksdb/docs/static/images/integrated-blob-db/BlobDB_Benchmarks_RW_RO_Perf.png +0 -0
  259. package/vendor/rocksdb/docs/static/images/integrated-blob-db/BlobDB_Benchmarks_Write_Amp.png +0 -0
  260. package/vendor/rocksdb/docs/static/images/integrated-blob-db/BlobDB_Benchmarks_Write_Perf.png +0 -0
  261. package/vendor/rocksdb/docs/static/images/kv-checksum/Memtable-entry.png +0 -0
  262. package/vendor/rocksdb/docs/static/images/kv-checksum/Memtable-write.png +0 -0
  263. package/vendor/rocksdb/docs/static/images/kv-checksum/ProtInfo-Memtable.png +0 -0
  264. package/vendor/rocksdb/docs/static/images/kv-checksum/ProtInfo-Writebatch-to-Memtable.png +0 -0
  265. package/vendor/rocksdb/docs/static/images/kv-checksum/ProtInfo-Writebatch.png +0 -0
  266. package/vendor/rocksdb/docs/static/images/kv-checksum/WAL-fragment.png +0 -0
  267. package/vendor/rocksdb/docs/static/images/kv-checksum/WAL-read.png +0 -0
  268. package/vendor/rocksdb/docs/static/images/kv-checksum/WAL-write.png +0 -0
  269. package/vendor/rocksdb/docs/static/images/kv-checksum/Write-batch.png +0 -0
  270. package/vendor/rocksdb/docs/static/images/kv-checksum/Writebatch-write.png +0 -0
  271. package/vendor/rocksdb/docs/static/images/lost-buffered-write-recovery/angry-cat.png +0 -0
  272. package/vendor/rocksdb/docs/static/images/lost-buffered-write-recovery/basic-setup.png +0 -0
  273. package/vendor/rocksdb/docs/static/images/lost-buffered-write-recovery/happy-cat.png +0 -0
  274. package/vendor/rocksdb/docs/static/images/lost-buffered-write-recovery/replay-extension.png +0 -0
  275. package/vendor/rocksdb/docs/static/images/lost-buffered-write-recovery/test-fs-writable-file.png +0 -0
  276. package/vendor/rocksdb/docs/static/images/lost-buffered-write-recovery/trace-extension.png +0 -0
  277. package/vendor/rocksdb/docs/static/images/pcache-blockindex.jpg +0 -0
  278. package/vendor/rocksdb/docs/static/images/pcache-fileindex.jpg +0 -0
  279. package/vendor/rocksdb/docs/static/images/pcache-filelayout.jpg +0 -0
  280. package/vendor/rocksdb/docs/static/images/pcache-readiopath.jpg +0 -0
  281. package/vendor/rocksdb/docs/static/images/pcache-tieredstorage.jpg +0 -0
  282. package/vendor/rocksdb/docs/static/images/pcache-writeiopath.jpg +0 -0
  283. package/vendor/rocksdb/docs/static/images/promo-adapt.svg +0 -8
  284. package/vendor/rocksdb/docs/static/images/promo-flash.svg +0 -28
  285. package/vendor/rocksdb/docs/static/images/promo-operations.svg +0 -6
  286. package/vendor/rocksdb/docs/static/images/promo-performance.svg +0 -134
  287. package/vendor/rocksdb/docs/static/images/rate-limiter/auto-tuned-write-KBps-series.png +0 -0
  288. package/vendor/rocksdb/docs/static/images/rate-limiter/write-KBps-cdf.png +0 -0
  289. package/vendor/rocksdb/docs/static/images/rate-limiter/write-KBps-series.png +0 -0
  290. package/vendor/rocksdb/docs/static/images/rocksdb-secondary-cache/Mixgraph_hit_rate.png +0 -0
  291. package/vendor/rocksdb/docs/static/images/rocksdb-secondary-cache/Mixgraph_throughput.png +0 -0
  292. package/vendor/rocksdb/docs/static/images/rocksdb-secondary-cache/arch_diagram.png +0 -0
  293. package/vendor/rocksdb/docs/static/images/rocksdb-secondary-cache/insert_flow.png +0 -0
  294. package/vendor/rocksdb/docs/static/images/rocksdb-secondary-cache/lookup_flow.png +0 -0
  295. package/vendor/rocksdb/docs/static/images/time-aware-tiered-storage/compaction_moving_up_conflict.png +0 -0
  296. package/vendor/rocksdb/docs/static/images/time-aware-tiered-storage/per_key_placement_compaction.png +0 -0
  297. package/vendor/rocksdb/docs/static/images/time-aware-tiered-storage/tiered_storage_design.png +0 -0
  298. package/vendor/rocksdb/docs/static/images/time-aware-tiered-storage/tiered_storage_overview.png +0 -0
  299. package/vendor/rocksdb/docs/static/images/time-aware-tiered-storage/tiered_storage_problem.png +0 -0
  300. package/vendor/rocksdb/docs/static/images/tree_example1.png +0 -0
  301. package/vendor/rocksdb/docs/static/logo.svg +0 -76
  302. package/vendor/rocksdb/docs/static/og_image.png +0 -0
  303. package/vendor/rocksdb/examples/Makefile +0 -58
  304. package/vendor/rocksdb/examples/c_simple_example.c +0 -96
  305. package/vendor/rocksdb/examples/rocksdb_option_file_example.ini +0 -142
  306. package/vendor/rocksdb/fuzz/Makefile +0 -67
  307. package/vendor/rocksdb/fuzz/proto/db_operation.proto +0 -28
  308. package/vendor/rocksdb/issue_template.md +0 -7
  309. package/vendor/rocksdb/java/GetBenchmarks.md +0 -161
  310. package/vendor/rocksdb/java/HISTORY-JAVA.md +0 -86
  311. package/vendor/rocksdb/java/Makefile +0 -453
  312. package/vendor/rocksdb/java/RELEASE.md +0 -59
  313. package/vendor/rocksdb/java/benchmark/src/main/java/org/rocksdb/benchmark/DbBenchmark.java +0 -1640
  314. package/vendor/rocksdb/java/crossbuild/Vagrantfile +0 -51
  315. package/vendor/rocksdb/java/crossbuild/build-linux-alpine.sh +0 -70
  316. package/vendor/rocksdb/java/crossbuild/build-linux-centos.sh +0 -38
  317. package/vendor/rocksdb/java/crossbuild/build-linux.sh +0 -15
  318. package/vendor/rocksdb/java/crossbuild/docker-build-linux-alpine.sh +0 -17
  319. package/vendor/rocksdb/java/crossbuild/docker-build-linux-centos.sh +0 -38
  320. package/vendor/rocksdb/java/jdb_bench.sh +0 -13
  321. package/vendor/rocksdb/java/jmh/LICENSE-HEADER.txt +0 -5
  322. package/vendor/rocksdb/java/jmh/pom.xml +0 -138
  323. package/vendor/rocksdb/java/jmh/src/main/java/org/rocksdb/jmh/ComparatorBenchmarks.java +0 -139
  324. package/vendor/rocksdb/java/jmh/src/main/java/org/rocksdb/jmh/GetBenchmarks.java +0 -215
  325. package/vendor/rocksdb/java/jmh/src/main/java/org/rocksdb/jmh/MultiGetBenchmarks.java +0 -214
  326. package/vendor/rocksdb/java/jmh/src/main/java/org/rocksdb/jmh/PutBenchmarks.java +0 -112
  327. package/vendor/rocksdb/java/jmh/src/main/java/org/rocksdb/util/FileUtils.java +0 -59
  328. package/vendor/rocksdb/java/jmh/src/main/java/org/rocksdb/util/KVUtils.java +0 -72
  329. package/vendor/rocksdb/java/pom.xml.template +0 -178
  330. package/vendor/rocksdb/java/samples/src/main/java/OptimisticTransactionSample.java +0 -184
  331. package/vendor/rocksdb/java/samples/src/main/java/RocksDBColumnFamilySample.java +0 -78
  332. package/vendor/rocksdb/java/samples/src/main/java/RocksDBSample.java +0 -295
  333. package/vendor/rocksdb/java/samples/src/main/java/TransactionSample.java +0 -183
  334. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractCompactionFilter.java +0 -59
  335. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractCompactionFilterFactory.java +0 -77
  336. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractComparator.java +0 -124
  337. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractComparatorJniBridge.java +0 -119
  338. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractEventListener.java +0 -334
  339. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractImmutableNativeReference.java +0 -65
  340. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractMutableOptions.java +0 -368
  341. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractNativeReference.java +0 -49
  342. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractRocksIterator.java +0 -146
  343. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractSlice.java +0 -191
  344. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractTableFilter.java +0 -20
  345. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractTraceWriter.java +0 -70
  346. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractTransactionNotifier.java +0 -54
  347. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractWalFilter.java +0 -49
  348. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractWriteBatch.java +0 -203
  349. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AccessHint.java +0 -53
  350. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AdvancedColumnFamilyOptionsInterface.java +0 -463
  351. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AdvancedMutableColumnFamilyOptionsInterface.java +0 -830
  352. package/vendor/rocksdb/java/src/main/java/org/rocksdb/BackgroundErrorReason.java +0 -46
  353. package/vendor/rocksdb/java/src/main/java/org/rocksdb/BackupEngine.java +0 -259
  354. package/vendor/rocksdb/java/src/main/java/org/rocksdb/BackupEngineOptions.java +0 -458
  355. package/vendor/rocksdb/java/src/main/java/org/rocksdb/BackupInfo.java +0 -76
  356. package/vendor/rocksdb/java/src/main/java/org/rocksdb/BlockBasedTableConfig.java +0 -951
  357. package/vendor/rocksdb/java/src/main/java/org/rocksdb/BloomFilter.java +0 -73
  358. package/vendor/rocksdb/java/src/main/java/org/rocksdb/BuiltinComparator.java +0 -20
  359. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ByteBufferGetStatus.java +0 -50
  360. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Cache.java +0 -40
  361. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CassandraCompactionFilter.java +0 -20
  362. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CassandraValueMergeOperator.java +0 -25
  363. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Checkpoint.java +0 -62
  364. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ChecksumType.java +0 -45
  365. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ClockCache.java +0 -59
  366. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ColumnFamilyDescriptor.java +0 -84
  367. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ColumnFamilyHandle.java +0 -151
  368. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ColumnFamilyMetaData.java +0 -70
  369. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ColumnFamilyOptions.java +0 -1543
  370. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ColumnFamilyOptionsInterface.java +0 -536
  371. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CompactRangeOptions.java +0 -245
  372. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CompactionJobInfo.java +0 -161
  373. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CompactionJobStats.java +0 -295
  374. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CompactionOptions.java +0 -121
  375. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CompactionOptionsFIFO.java +0 -87
  376. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CompactionOptionsUniversal.java +0 -273
  377. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CompactionPriority.java +0 -81
  378. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CompactionReason.java +0 -141
  379. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CompactionStopStyle.java +0 -55
  380. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CompactionStyle.java +0 -81
  381. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ComparatorOptions.java +0 -133
  382. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ComparatorType.java +0 -48
  383. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CompressionOptions.java +0 -150
  384. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CompressionType.java +0 -121
  385. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ConcurrentTaskLimiter.java +0 -44
  386. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ConcurrentTaskLimiterImpl.java +0 -48
  387. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ConfigOptions.java +0 -53
  388. package/vendor/rocksdb/java/src/main/java/org/rocksdb/DBOptions.java +0 -1496
  389. package/vendor/rocksdb/java/src/main/java/org/rocksdb/DBOptionsInterface.java +0 -1756
  390. package/vendor/rocksdb/java/src/main/java/org/rocksdb/DataBlockIndexType.java +0 -32
  391. package/vendor/rocksdb/java/src/main/java/org/rocksdb/DbPath.java +0 -47
  392. package/vendor/rocksdb/java/src/main/java/org/rocksdb/DirectSlice.java +0 -136
  393. package/vendor/rocksdb/java/src/main/java/org/rocksdb/EncodingType.java +0 -55
  394. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Env.java +0 -167
  395. package/vendor/rocksdb/java/src/main/java/org/rocksdb/EnvOptions.java +0 -366
  396. package/vendor/rocksdb/java/src/main/java/org/rocksdb/EventListener.java +0 -335
  397. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Experimental.java +0 -23
  398. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ExternalFileIngestionInfo.java +0 -103
  399. package/vendor/rocksdb/java/src/main/java/org/rocksdb/FileOperationInfo.java +0 -112
  400. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Filter.java +0 -36
  401. package/vendor/rocksdb/java/src/main/java/org/rocksdb/FlushJobInfo.java +0 -186
  402. package/vendor/rocksdb/java/src/main/java/org/rocksdb/FlushOptions.java +0 -90
  403. package/vendor/rocksdb/java/src/main/java/org/rocksdb/FlushReason.java +0 -53
  404. package/vendor/rocksdb/java/src/main/java/org/rocksdb/HashLinkedListMemTableConfig.java +0 -174
  405. package/vendor/rocksdb/java/src/main/java/org/rocksdb/HashSkipListMemTableConfig.java +0 -106
  406. package/vendor/rocksdb/java/src/main/java/org/rocksdb/HistogramData.java +0 -75
  407. package/vendor/rocksdb/java/src/main/java/org/rocksdb/HistogramType.java +0 -214
  408. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Holder.java +0 -46
  409. package/vendor/rocksdb/java/src/main/java/org/rocksdb/IndexShorteningMode.java +0 -60
  410. package/vendor/rocksdb/java/src/main/java/org/rocksdb/IndexType.java +0 -55
  411. package/vendor/rocksdb/java/src/main/java/org/rocksdb/InfoLogLevel.java +0 -49
  412. package/vendor/rocksdb/java/src/main/java/org/rocksdb/IngestExternalFileOptions.java +0 -227
  413. package/vendor/rocksdb/java/src/main/java/org/rocksdb/KeyMayExist.java +0 -35
  414. package/vendor/rocksdb/java/src/main/java/org/rocksdb/LRUCache.java +0 -106
  415. package/vendor/rocksdb/java/src/main/java/org/rocksdb/LevelMetaData.java +0 -56
  416. package/vendor/rocksdb/java/src/main/java/org/rocksdb/LiveFileMetaData.java +0 -55
  417. package/vendor/rocksdb/java/src/main/java/org/rocksdb/LogFile.java +0 -75
  418. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Logger.java +0 -121
  419. package/vendor/rocksdb/java/src/main/java/org/rocksdb/MemTableConfig.java +0 -29
  420. package/vendor/rocksdb/java/src/main/java/org/rocksdb/MemTableInfo.java +0 -103
  421. package/vendor/rocksdb/java/src/main/java/org/rocksdb/MemoryUsageType.java +0 -72
  422. package/vendor/rocksdb/java/src/main/java/org/rocksdb/MemoryUtil.java +0 -60
  423. package/vendor/rocksdb/java/src/main/java/org/rocksdb/MergeOperator.java +0 -18
  424. package/vendor/rocksdb/java/src/main/java/org/rocksdb/MutableColumnFamilyOptions.java +0 -621
  425. package/vendor/rocksdb/java/src/main/java/org/rocksdb/MutableColumnFamilyOptionsInterface.java +0 -156
  426. package/vendor/rocksdb/java/src/main/java/org/rocksdb/MutableDBOptions.java +0 -292
  427. package/vendor/rocksdb/java/src/main/java/org/rocksdb/MutableDBOptionsInterface.java +0 -440
  428. package/vendor/rocksdb/java/src/main/java/org/rocksdb/MutableOptionKey.java +0 -16
  429. package/vendor/rocksdb/java/src/main/java/org/rocksdb/MutableOptionValue.java +0 -368
  430. package/vendor/rocksdb/java/src/main/java/org/rocksdb/NativeComparatorWrapper.java +0 -59
  431. package/vendor/rocksdb/java/src/main/java/org/rocksdb/NativeLibraryLoader.java +0 -172
  432. package/vendor/rocksdb/java/src/main/java/org/rocksdb/OperationStage.java +0 -59
  433. package/vendor/rocksdb/java/src/main/java/org/rocksdb/OperationType.java +0 -55
  434. package/vendor/rocksdb/java/src/main/java/org/rocksdb/OptimisticTransactionDB.java +0 -224
  435. package/vendor/rocksdb/java/src/main/java/org/rocksdb/OptimisticTransactionOptions.java +0 -53
  436. package/vendor/rocksdb/java/src/main/java/org/rocksdb/OptionString.java +0 -261
  437. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Options.java +0 -2574
  438. package/vendor/rocksdb/java/src/main/java/org/rocksdb/OptionsUtil.java +0 -101
  439. package/vendor/rocksdb/java/src/main/java/org/rocksdb/PersistentCache.java +0 -26
  440. package/vendor/rocksdb/java/src/main/java/org/rocksdb/PlainTableConfig.java +0 -251
  441. package/vendor/rocksdb/java/src/main/java/org/rocksdb/PrepopulateBlobCache.java +0 -117
  442. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Priority.java +0 -49
  443. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Range.java +0 -19
  444. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RateLimiter.java +0 -227
  445. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RateLimiterMode.java +0 -52
  446. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ReadOptions.java +0 -822
  447. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ReadTier.java +0 -49
  448. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RemoveEmptyValueCompactionFilter.java +0 -18
  449. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RestoreOptions.java +0 -32
  450. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ReusedSynchronisationType.java +0 -65
  451. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RocksCallbackObject.java +0 -73
  452. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RocksDB.java +0 -4688
  453. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RocksDBException.java +0 -44
  454. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RocksEnv.java +0 -31
  455. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RocksIterator.java +0 -140
  456. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RocksIteratorInterface.java +0 -127
  457. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RocksMemEnv.java +0 -31
  458. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RocksMutableObject.java +0 -87
  459. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RocksObject.java +0 -45
  460. package/vendor/rocksdb/java/src/main/java/org/rocksdb/SanityLevel.java +0 -47
  461. package/vendor/rocksdb/java/src/main/java/org/rocksdb/SizeApproximationFlag.java +0 -31
  462. package/vendor/rocksdb/java/src/main/java/org/rocksdb/SkipListMemTableConfig.java +0 -51
  463. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Slice.java +0 -135
  464. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Snapshot.java +0 -41
  465. package/vendor/rocksdb/java/src/main/java/org/rocksdb/SstFileManager.java +0 -249
  466. package/vendor/rocksdb/java/src/main/java/org/rocksdb/SstFileMetaData.java +0 -162
  467. package/vendor/rocksdb/java/src/main/java/org/rocksdb/SstFileReader.java +0 -82
  468. package/vendor/rocksdb/java/src/main/java/org/rocksdb/SstFileReaderIterator.java +0 -140
  469. package/vendor/rocksdb/java/src/main/java/org/rocksdb/SstFileWriter.java +0 -237
  470. package/vendor/rocksdb/java/src/main/java/org/rocksdb/SstPartitionerFactory.java +0 -15
  471. package/vendor/rocksdb/java/src/main/java/org/rocksdb/SstPartitionerFixedPrefixFactory.java +0 -19
  472. package/vendor/rocksdb/java/src/main/java/org/rocksdb/StateType.java +0 -53
  473. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Statistics.java +0 -153
  474. package/vendor/rocksdb/java/src/main/java/org/rocksdb/StatisticsCollector.java +0 -102
  475. package/vendor/rocksdb/java/src/main/java/org/rocksdb/StatisticsCollectorCallback.java +0 -32
  476. package/vendor/rocksdb/java/src/main/java/org/rocksdb/StatsCollectorInput.java +0 -35
  477. package/vendor/rocksdb/java/src/main/java/org/rocksdb/StatsLevel.java +0 -65
  478. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Status.java +0 -155
  479. package/vendor/rocksdb/java/src/main/java/org/rocksdb/StringAppendOperator.java +0 -29
  480. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TableFileCreationBriefInfo.java +0 -107
  481. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TableFileCreationInfo.java +0 -86
  482. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TableFileCreationReason.java +0 -46
  483. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TableFileDeletionInfo.java +0 -86
  484. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TableFilter.java +0 -21
  485. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TableFormatConfig.java +0 -22
  486. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TableProperties.java +0 -426
  487. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ThreadStatus.java +0 -224
  488. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ThreadType.java +0 -65
  489. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TickerType.java +0 -802
  490. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TimedEnv.java +0 -30
  491. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TraceOptions.java +0 -32
  492. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TraceWriter.java +0 -36
  493. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Transaction.java +0 -2162
  494. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TransactionDB.java +0 -401
  495. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TransactionDBOptions.java +0 -216
  496. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TransactionLogIterator.java +0 -112
  497. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TransactionOptions.java +0 -189
  498. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TransactionalDB.java +0 -65
  499. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TransactionalOptions.java +0 -31
  500. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TtlDB.java +0 -242
  501. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TxnDBWritePolicy.java +0 -62
  502. package/vendor/rocksdb/java/src/main/java/org/rocksdb/UInt64AddOperator.java +0 -19
  503. package/vendor/rocksdb/java/src/main/java/org/rocksdb/VectorMemTableConfig.java +0 -46
  504. package/vendor/rocksdb/java/src/main/java/org/rocksdb/WALRecoveryMode.java +0 -82
  505. package/vendor/rocksdb/java/src/main/java/org/rocksdb/WBWIRocksIterator.java +0 -203
  506. package/vendor/rocksdb/java/src/main/java/org/rocksdb/WalFileType.java +0 -55
  507. package/vendor/rocksdb/java/src/main/java/org/rocksdb/WalFilter.java +0 -86
  508. package/vendor/rocksdb/java/src/main/java/org/rocksdb/WalProcessingOption.java +0 -54
  509. package/vendor/rocksdb/java/src/main/java/org/rocksdb/WriteBatch.java +0 -394
  510. package/vendor/rocksdb/java/src/main/java/org/rocksdb/WriteBatchInterface.java +0 -283
  511. package/vendor/rocksdb/java/src/main/java/org/rocksdb/WriteBatchWithIndex.java +0 -358
  512. package/vendor/rocksdb/java/src/main/java/org/rocksdb/WriteBufferManager.java +0 -50
  513. package/vendor/rocksdb/java/src/main/java/org/rocksdb/WriteOptions.java +0 -255
  514. package/vendor/rocksdb/java/src/main/java/org/rocksdb/WriteStallCondition.java +0 -44
  515. package/vendor/rocksdb/java/src/main/java/org/rocksdb/WriteStallInfo.java +0 -75
  516. package/vendor/rocksdb/java/src/main/java/org/rocksdb/util/ByteUtil.java +0 -52
  517. package/vendor/rocksdb/java/src/main/java/org/rocksdb/util/BytewiseComparator.java +0 -121
  518. package/vendor/rocksdb/java/src/main/java/org/rocksdb/util/Environment.java +0 -245
  519. package/vendor/rocksdb/java/src/main/java/org/rocksdb/util/IntComparator.java +0 -67
  520. package/vendor/rocksdb/java/src/main/java/org/rocksdb/util/ReverseBytewiseComparator.java +0 -88
  521. package/vendor/rocksdb/java/src/main/java/org/rocksdb/util/SizeUnit.java +0 -16
  522. package/vendor/rocksdb/java/src/test/java/org/rocksdb/AbstractTransactionTest.java +0 -979
  523. package/vendor/rocksdb/java/src/test/java/org/rocksdb/BackupEngineOptionsTest.java +0 -297
  524. package/vendor/rocksdb/java/src/test/java/org/rocksdb/BackupEngineTest.java +0 -261
  525. package/vendor/rocksdb/java/src/test/java/org/rocksdb/BlobOptionsTest.java +0 -353
  526. package/vendor/rocksdb/java/src/test/java/org/rocksdb/BlockBasedTableConfigTest.java +0 -415
  527. package/vendor/rocksdb/java/src/test/java/org/rocksdb/BuiltinComparatorTest.java +0 -145
  528. package/vendor/rocksdb/java/src/test/java/org/rocksdb/ByteBufferUnsupportedOperationTest.java +0 -132
  529. package/vendor/rocksdb/java/src/test/java/org/rocksdb/BytewiseComparatorRegressionTest.java +0 -132
  530. package/vendor/rocksdb/java/src/test/java/org/rocksdb/CheckPointTest.java +0 -82
  531. package/vendor/rocksdb/java/src/test/java/org/rocksdb/ClockCacheTest.java +0 -25
  532. package/vendor/rocksdb/java/src/test/java/org/rocksdb/ColumnFamilyOptionsTest.java +0 -712
  533. package/vendor/rocksdb/java/src/test/java/org/rocksdb/ColumnFamilyTest.java +0 -562
  534. package/vendor/rocksdb/java/src/test/java/org/rocksdb/CompactRangeOptionsTest.java +0 -102
  535. package/vendor/rocksdb/java/src/test/java/org/rocksdb/CompactionFilterFactoryTest.java +0 -61
  536. package/vendor/rocksdb/java/src/test/java/org/rocksdb/CompactionJobInfoTest.java +0 -114
  537. package/vendor/rocksdb/java/src/test/java/org/rocksdb/CompactionJobStatsTest.java +0 -196
  538. package/vendor/rocksdb/java/src/test/java/org/rocksdb/CompactionOptionsFIFOTest.java +0 -35
  539. package/vendor/rocksdb/java/src/test/java/org/rocksdb/CompactionOptionsTest.java +0 -52
  540. package/vendor/rocksdb/java/src/test/java/org/rocksdb/CompactionOptionsUniversalTest.java +0 -80
  541. package/vendor/rocksdb/java/src/test/java/org/rocksdb/CompactionPriorityTest.java +0 -31
  542. package/vendor/rocksdb/java/src/test/java/org/rocksdb/CompactionStopStyleTest.java +0 -31
  543. package/vendor/rocksdb/java/src/test/java/org/rocksdb/ComparatorOptionsTest.java +0 -58
  544. package/vendor/rocksdb/java/src/test/java/org/rocksdb/CompressionOptionsTest.java +0 -71
  545. package/vendor/rocksdb/java/src/test/java/org/rocksdb/CompressionTypesTest.java +0 -25
  546. package/vendor/rocksdb/java/src/test/java/org/rocksdb/ConcurrentTaskLimiterTest.java +0 -56
  547. package/vendor/rocksdb/java/src/test/java/org/rocksdb/DBOptionsTest.java +0 -902
  548. package/vendor/rocksdb/java/src/test/java/org/rocksdb/DefaultEnvTest.java +0 -113
  549. package/vendor/rocksdb/java/src/test/java/org/rocksdb/DirectSliceTest.java +0 -93
  550. package/vendor/rocksdb/java/src/test/java/org/rocksdb/EnvOptionsTest.java +0 -145
  551. package/vendor/rocksdb/java/src/test/java/org/rocksdb/EventListenerTest.java +0 -725
  552. package/vendor/rocksdb/java/src/test/java/org/rocksdb/FilterTest.java +0 -39
  553. package/vendor/rocksdb/java/src/test/java/org/rocksdb/FlushOptionsTest.java +0 -31
  554. package/vendor/rocksdb/java/src/test/java/org/rocksdb/FlushTest.java +0 -49
  555. package/vendor/rocksdb/java/src/test/java/org/rocksdb/InfoLogLevelTest.java +0 -109
  556. package/vendor/rocksdb/java/src/test/java/org/rocksdb/IngestExternalFileOptionsTest.java +0 -107
  557. package/vendor/rocksdb/java/src/test/java/org/rocksdb/KeyMayExistTest.java +0 -528
  558. package/vendor/rocksdb/java/src/test/java/org/rocksdb/LRUCacheTest.java +0 -32
  559. package/vendor/rocksdb/java/src/test/java/org/rocksdb/LoggerTest.java +0 -235
  560. package/vendor/rocksdb/java/src/test/java/org/rocksdb/MemTableTest.java +0 -108
  561. package/vendor/rocksdb/java/src/test/java/org/rocksdb/MemoryUtilTest.java +0 -136
  562. package/vendor/rocksdb/java/src/test/java/org/rocksdb/MergeTest.java +0 -465
  563. package/vendor/rocksdb/java/src/test/java/org/rocksdb/MixedOptionsTest.java +0 -85
  564. package/vendor/rocksdb/java/src/test/java/org/rocksdb/MultiColumnRegressionTest.java +0 -145
  565. package/vendor/rocksdb/java/src/test/java/org/rocksdb/MultiGetManyKeysTest.java +0 -241
  566. package/vendor/rocksdb/java/src/test/java/org/rocksdb/MultiGetTest.java +0 -530
  567. package/vendor/rocksdb/java/src/test/java/org/rocksdb/MutableColumnFamilyOptionsTest.java +0 -167
  568. package/vendor/rocksdb/java/src/test/java/org/rocksdb/MutableDBOptionsTest.java +0 -85
  569. package/vendor/rocksdb/java/src/test/java/org/rocksdb/MutableOptionsGetSetTest.java +0 -429
  570. package/vendor/rocksdb/java/src/test/java/org/rocksdb/NativeComparatorWrapperTest.java +0 -90
  571. package/vendor/rocksdb/java/src/test/java/org/rocksdb/NativeLibraryLoaderTest.java +0 -41
  572. package/vendor/rocksdb/java/src/test/java/org/rocksdb/OptimisticTransactionDBTest.java +0 -131
  573. package/vendor/rocksdb/java/src/test/java/org/rocksdb/OptimisticTransactionOptionsTest.java +0 -38
  574. package/vendor/rocksdb/java/src/test/java/org/rocksdb/OptimisticTransactionTest.java +0 -446
  575. package/vendor/rocksdb/java/src/test/java/org/rocksdb/OptionsTest.java +0 -1488
  576. package/vendor/rocksdb/java/src/test/java/org/rocksdb/OptionsUtilTest.java +0 -129
  577. package/vendor/rocksdb/java/src/test/java/org/rocksdb/PlainTableConfigTest.java +0 -89
  578. package/vendor/rocksdb/java/src/test/java/org/rocksdb/PlatformRandomHelper.java +0 -58
  579. package/vendor/rocksdb/java/src/test/java/org/rocksdb/PutMultiplePartsTest.java +0 -164
  580. package/vendor/rocksdb/java/src/test/java/org/rocksdb/RateLimiterTest.java +0 -65
  581. package/vendor/rocksdb/java/src/test/java/org/rocksdb/ReadOnlyTest.java +0 -222
  582. package/vendor/rocksdb/java/src/test/java/org/rocksdb/ReadOptionsTest.java +0 -374
  583. package/vendor/rocksdb/java/src/test/java/org/rocksdb/RocksDBExceptionTest.java +0 -115
  584. package/vendor/rocksdb/java/src/test/java/org/rocksdb/RocksDBTest.java +0 -1692
  585. package/vendor/rocksdb/java/src/test/java/org/rocksdb/RocksIteratorTest.java +0 -289
  586. package/vendor/rocksdb/java/src/test/java/org/rocksdb/RocksMemEnvTest.java +0 -137
  587. package/vendor/rocksdb/java/src/test/java/org/rocksdb/RocksNativeLibraryResource.java +0 -18
  588. package/vendor/rocksdb/java/src/test/java/org/rocksdb/SecondaryDBTest.java +0 -135
  589. package/vendor/rocksdb/java/src/test/java/org/rocksdb/SliceTest.java +0 -80
  590. package/vendor/rocksdb/java/src/test/java/org/rocksdb/SnapshotTest.java +0 -169
  591. package/vendor/rocksdb/java/src/test/java/org/rocksdb/SstFileManagerTest.java +0 -66
  592. package/vendor/rocksdb/java/src/test/java/org/rocksdb/SstFileReaderTest.java +0 -222
  593. package/vendor/rocksdb/java/src/test/java/org/rocksdb/SstFileWriterTest.java +0 -239
  594. package/vendor/rocksdb/java/src/test/java/org/rocksdb/SstPartitionerTest.java +0 -72
  595. package/vendor/rocksdb/java/src/test/java/org/rocksdb/StatisticsCollectorTest.java +0 -55
  596. package/vendor/rocksdb/java/src/test/java/org/rocksdb/StatisticsTest.java +0 -168
  597. package/vendor/rocksdb/java/src/test/java/org/rocksdb/StatsCallbackMock.java +0 -19
  598. package/vendor/rocksdb/java/src/test/java/org/rocksdb/TableFilterTest.java +0 -106
  599. package/vendor/rocksdb/java/src/test/java/org/rocksdb/TimedEnvTest.java +0 -40
  600. package/vendor/rocksdb/java/src/test/java/org/rocksdb/TransactionDBOptionsTest.java +0 -64
  601. package/vendor/rocksdb/java/src/test/java/org/rocksdb/TransactionDBTest.java +0 -177
  602. package/vendor/rocksdb/java/src/test/java/org/rocksdb/TransactionLogIteratorTest.java +0 -139
  603. package/vendor/rocksdb/java/src/test/java/org/rocksdb/TransactionOptionsTest.java +0 -72
  604. package/vendor/rocksdb/java/src/test/java/org/rocksdb/TransactionTest.java +0 -488
  605. package/vendor/rocksdb/java/src/test/java/org/rocksdb/TtlDBTest.java +0 -112
  606. package/vendor/rocksdb/java/src/test/java/org/rocksdb/Types.java +0 -43
  607. package/vendor/rocksdb/java/src/test/java/org/rocksdb/VerifyChecksumsTest.java +0 -213
  608. package/vendor/rocksdb/java/src/test/java/org/rocksdb/WALRecoveryModeTest.java +0 -22
  609. package/vendor/rocksdb/java/src/test/java/org/rocksdb/WalFilterTest.java +0 -165
  610. package/vendor/rocksdb/java/src/test/java/org/rocksdb/WriteBatchHandlerTest.java +0 -76
  611. package/vendor/rocksdb/java/src/test/java/org/rocksdb/WriteBatchTest.java +0 -528
  612. package/vendor/rocksdb/java/src/test/java/org/rocksdb/WriteBatchThreadedTest.java +0 -101
  613. package/vendor/rocksdb/java/src/test/java/org/rocksdb/WriteBatchWithIndexTest.java +0 -1068
  614. package/vendor/rocksdb/java/src/test/java/org/rocksdb/WriteOptionsTest.java +0 -75
  615. package/vendor/rocksdb/java/src/test/java/org/rocksdb/test/RemoveEmptyValueCompactionFilterFactory.java +0 -21
  616. package/vendor/rocksdb/java/src/test/java/org/rocksdb/test/RocksJunitRunner.java +0 -174
  617. package/vendor/rocksdb/java/src/test/java/org/rocksdb/test/TestableEventListener.java +0 -23
  618. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/ByteBufferAllocator.java +0 -16
  619. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/BytewiseComparatorIntTest.java +0 -267
  620. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/BytewiseComparatorTest.java +0 -531
  621. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/CapturingWriteBatchHandler.java +0 -190
  622. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/DirectByteBufferAllocator.java +0 -18
  623. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/EnvironmentTest.java +0 -304
  624. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/HeapByteBufferAllocator.java +0 -18
  625. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/IntComparatorTest.java +0 -266
  626. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/JNIComparatorTest.java +0 -180
  627. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/ReverseBytewiseComparatorIntTest.java +0 -270
  628. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/SizeUnitTest.java +0 -27
  629. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/TestUtil.java +0 -72
  630. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/WriteBatchGetter.java +0 -139
  631. package/vendor/rocksdb/java/understanding_options.md +0 -79
  632. package/vendor/rocksdb/src.mk +0 -713
  633. package/vendor/rocksdb/thirdparty.inc +0 -268
  634. package/vendor/rocksdb/tools/Dockerfile +0 -5
  635. package/vendor/rocksdb/tools/advisor/advisor/__init__.py +0 -0
  636. package/vendor/rocksdb/tools/advisor/advisor/bench_runner.py +0 -39
  637. package/vendor/rocksdb/tools/advisor/advisor/config_optimizer_example.py +0 -140
  638. package/vendor/rocksdb/tools/advisor/advisor/db_bench_runner.py +0 -237
  639. package/vendor/rocksdb/tools/advisor/advisor/db_config_optimizer.py +0 -293
  640. package/vendor/rocksdb/tools/advisor/advisor/db_log_parser.py +0 -134
  641. package/vendor/rocksdb/tools/advisor/advisor/db_options_parser.py +0 -348
  642. package/vendor/rocksdb/tools/advisor/advisor/db_stats_fetcher.py +0 -346
  643. package/vendor/rocksdb/tools/advisor/advisor/db_timeseries_parser.py +0 -203
  644. package/vendor/rocksdb/tools/advisor/advisor/ini_parser.py +0 -76
  645. package/vendor/rocksdb/tools/advisor/advisor/rule_parser.py +0 -510
  646. package/vendor/rocksdb/tools/advisor/advisor/rule_parser_example.py +0 -98
  647. package/vendor/rocksdb/tools/advisor/advisor/rules.ini +0 -214
  648. package/vendor/rocksdb/tools/advisor/test/__init__.py +0 -0
  649. package/vendor/rocksdb/tools/advisor/test/input_files/LOG-0 +0 -30
  650. package/vendor/rocksdb/tools/advisor/test/input_files/LOG-1 +0 -25
  651. package/vendor/rocksdb/tools/advisor/test/input_files/OPTIONS-000005 +0 -49
  652. package/vendor/rocksdb/tools/advisor/test/input_files/log_stats_parser_keys_ts +0 -3
  653. package/vendor/rocksdb/tools/advisor/test/input_files/rules_err1.ini +0 -56
  654. package/vendor/rocksdb/tools/advisor/test/input_files/rules_err2.ini +0 -15
  655. package/vendor/rocksdb/tools/advisor/test/input_files/rules_err3.ini +0 -15
  656. package/vendor/rocksdb/tools/advisor/test/input_files/rules_err4.ini +0 -15
  657. package/vendor/rocksdb/tools/advisor/test/input_files/test_rules.ini +0 -47
  658. package/vendor/rocksdb/tools/advisor/test/input_files/triggered_rules.ini +0 -83
  659. package/vendor/rocksdb/tools/advisor/test/test_db_bench_runner.py +0 -141
  660. package/vendor/rocksdb/tools/advisor/test/test_db_log_parser.py +0 -96
  661. package/vendor/rocksdb/tools/advisor/test/test_db_options_parser.py +0 -214
  662. package/vendor/rocksdb/tools/advisor/test/test_db_stats_fetcher.py +0 -121
  663. package/vendor/rocksdb/tools/advisor/test/test_rule_parser.py +0 -226
  664. package/vendor/rocksdb/tools/analyze_txn_stress_test.sh +0 -77
  665. package/vendor/rocksdb/tools/auto_sanity_test.sh +0 -93
  666. package/vendor/rocksdb/tools/backup_db.sh +0 -15
  667. package/vendor/rocksdb/tools/benchmark.sh +0 -1173
  668. package/vendor/rocksdb/tools/benchmark_ci.py +0 -182
  669. package/vendor/rocksdb/tools/benchmark_compare.sh +0 -342
  670. package/vendor/rocksdb/tools/benchmark_leveldb.sh +0 -187
  671. package/vendor/rocksdb/tools/block_cache_analyzer/__init__.py +0 -2
  672. package/vendor/rocksdb/tools/block_cache_analyzer/block_cache_pysim.py +0 -2000
  673. package/vendor/rocksdb/tools/block_cache_analyzer/block_cache_pysim.sh +0 -156
  674. package/vendor/rocksdb/tools/block_cache_analyzer/block_cache_pysim_test.py +0 -734
  675. package/vendor/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_plot.py +0 -729
  676. package/vendor/rocksdb/tools/check_all_python.py +0 -22
  677. package/vendor/rocksdb/tools/check_format_compatible.sh +0 -379
  678. package/vendor/rocksdb/tools/db_crashtest.py +0 -1018
  679. package/vendor/rocksdb/tools/dbench_monitor +0 -102
  680. package/vendor/rocksdb/tools/generate_random_db.sh +0 -31
  681. package/vendor/rocksdb/tools/ingest_external_sst.sh +0 -18
  682. package/vendor/rocksdb/tools/ldb_test.py +0 -955
  683. package/vendor/rocksdb/tools/pflag +0 -217
  684. package/vendor/rocksdb/tools/regression_test.sh +0 -525
  685. package/vendor/rocksdb/tools/restore_db.sh +0 -15
  686. package/vendor/rocksdb/tools/rocksdb_dump_test.sh +0 -9
  687. package/vendor/rocksdb/tools/run_blob_bench.sh +0 -223
  688. package/vendor/rocksdb/tools/run_flash_bench.sh +0 -359
  689. package/vendor/rocksdb/tools/run_leveldb.sh +0 -175
  690. package/vendor/rocksdb/tools/sample-dump.dmp +0 -0
  691. package/vendor/rocksdb/tools/verify_random_db.sh +0 -41
  692. package/vendor/rocksdb/tools/write_external_sst.sh +0 -26
  693. package/vendor/rocksdb/tools/write_stress_runner.py +0 -83
  694. package/vendor/rocksdb/util/crc32c_ppc.c +0 -94
  695. package/vendor/rocksdb/util/crc32c_ppc_asm.S +0 -756
@@ -1,3609 +0,0 @@
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
- #include <assert.h>
9
- #include <stddef.h>
10
- #include <stdlib.h>
11
- #include <string.h>
12
- #include <sys/types.h>
13
-
14
- #include "rocksdb/c.h"
15
- #ifndef OS_WIN
16
- #include <unistd.h>
17
- #endif
18
- #include <inttypes.h>
19
-
20
- // Can not use port/port.h macros as this is a c file
21
- #ifdef OS_WIN
22
- #include <windows.h>
23
-
24
- // Ok for uniqueness
25
- int geteuid() {
26
- int result = 0;
27
-
28
- result = ((int)GetCurrentProcessId() << 16);
29
- result |= (int)GetCurrentThreadId();
30
-
31
- return result;
32
- }
33
-
34
- #endif
35
-
36
- const char* phase = "";
37
- static char dbname[200];
38
- static char sstfilename[200];
39
- static char dbbackupname[200];
40
- static char dbcheckpointname[200];
41
- static char dbpathname[200];
42
- static char secondary_path[200];
43
-
44
- static void StartPhase(const char* name) {
45
- fprintf(stderr, "=== Test %s\n", name);
46
- phase = name;
47
- }
48
- #ifdef _MSC_VER
49
- #pragma warning(push)
50
- #pragma warning(disable : 4996) // getenv security warning
51
- #endif
52
- static const char* GetTempDir(void) {
53
- const char* ret = getenv("TEST_TMPDIR");
54
- if (ret == NULL || ret[0] == '\0')
55
- #ifdef OS_WIN
56
- ret = getenv("TEMP");
57
- #else
58
- ret = "/tmp";
59
- #endif
60
- return ret;
61
- }
62
- #ifdef _MSC_VER
63
- #pragma warning(pop)
64
- #endif
65
-
66
- #define CheckNoError(err) \
67
- if ((err) != NULL) { \
68
- fprintf(stderr, "%s:%d: %s: %s\n", __FILE__, __LINE__, phase, (err)); \
69
- abort(); \
70
- }
71
-
72
- #define CheckCondition(cond) \
73
- if (!(cond)) { \
74
- fprintf(stderr, "%s:%d: %s: %s\n", __FILE__, __LINE__, phase, #cond); \
75
- abort(); \
76
- }
77
-
78
- static void CheckEqual(const char* expected, const char* v, size_t n) {
79
- if (expected == NULL && v == NULL) {
80
- // ok
81
- } else if (expected != NULL && v != NULL && n == strlen(expected) &&
82
- memcmp(expected, v, n) == 0) {
83
- // ok
84
- return;
85
- } else {
86
- fprintf(stderr, "%s: expected '%s', got '%s'\n", phase,
87
- (expected ? expected : "(null)"), (v ? v : "(null)"));
88
- abort();
89
- }
90
- }
91
-
92
- static void Free(char** ptr) {
93
- if (*ptr) {
94
- free(*ptr);
95
- *ptr = NULL;
96
- }
97
- }
98
-
99
- static void CheckValue(char* err, const char* expected, char** actual,
100
- size_t actual_length) {
101
- CheckNoError(err);
102
- CheckEqual(expected, *actual, actual_length);
103
- Free(actual);
104
- }
105
-
106
- static void CheckGet(rocksdb_t* db, const rocksdb_readoptions_t* options,
107
- const char* key, const char* expected) {
108
- char* err = NULL;
109
- size_t val_len;
110
- char* val;
111
- val = rocksdb_get(db, options, key, strlen(key), &val_len, &err);
112
- CheckNoError(err);
113
- CheckEqual(expected, val, val_len);
114
- Free(&val);
115
- }
116
-
117
- static void CheckGetCF(rocksdb_t* db, const rocksdb_readoptions_t* options,
118
- rocksdb_column_family_handle_t* handle, const char* key,
119
- const char* expected) {
120
- char* err = NULL;
121
- size_t val_len;
122
- char* val;
123
- val = rocksdb_get_cf(db, options, handle, key, strlen(key), &val_len, &err);
124
- CheckNoError(err);
125
- CheckEqual(expected, val, val_len);
126
- Free(&val);
127
- }
128
-
129
- static void CheckPinGet(rocksdb_t* db, const rocksdb_readoptions_t* options,
130
- const char* key, const char* expected) {
131
- char* err = NULL;
132
- size_t val_len;
133
- const char* val;
134
- rocksdb_pinnableslice_t* p;
135
- p = rocksdb_get_pinned(db, options, key, strlen(key), &err);
136
- CheckNoError(err);
137
- val = rocksdb_pinnableslice_value(p, &val_len);
138
- CheckEqual(expected, val, val_len);
139
- rocksdb_pinnableslice_destroy(p);
140
- }
141
-
142
- static void CheckPinGetCF(rocksdb_t* db, const rocksdb_readoptions_t* options,
143
- rocksdb_column_family_handle_t* handle,
144
- const char* key, const char* expected) {
145
- char* err = NULL;
146
- size_t val_len;
147
- const char* val;
148
- rocksdb_pinnableslice_t* p;
149
- p = rocksdb_get_pinned_cf(db, options, handle, key, strlen(key), &err);
150
- CheckNoError(err);
151
- val = rocksdb_pinnableslice_value(p, &val_len);
152
- CheckEqual(expected, val, val_len);
153
- rocksdb_pinnableslice_destroy(p);
154
- }
155
-
156
- static void CheckMultiGetValues(size_t num_keys, char** values,
157
- size_t* values_sizes, char** errs,
158
- const char** expected) {
159
- for (size_t i = 0; i < num_keys; i++) {
160
- CheckNoError(errs[i]);
161
- CheckEqual(expected[i], values[i], values_sizes[i]);
162
- Free(&values[i]);
163
- }
164
- }
165
-
166
- static void CheckIter(rocksdb_iterator_t* iter, const char* key,
167
- const char* val) {
168
- size_t len;
169
- const char* str;
170
- str = rocksdb_iter_key(iter, &len);
171
- CheckEqual(key, str, len);
172
- str = rocksdb_iter_value(iter, &len);
173
- CheckEqual(val, str, len);
174
- }
175
-
176
- // Callback from rocksdb_writebatch_iterate()
177
- static void CheckPut(void* ptr, const char* k, size_t klen, const char* v,
178
- size_t vlen) {
179
- int* state = (int*)ptr;
180
- CheckCondition(*state < 2);
181
- switch (*state) {
182
- case 0:
183
- CheckEqual("bar", k, klen);
184
- CheckEqual("b", v, vlen);
185
- break;
186
- case 1:
187
- CheckEqual("box", k, klen);
188
- CheckEqual("c", v, vlen);
189
- break;
190
- }
191
- (*state)++;
192
- }
193
-
194
- // Callback from rocksdb_writebatch_iterate()
195
- static void CheckDel(void* ptr, const char* k, size_t klen) {
196
- int* state = (int*)ptr;
197
- CheckCondition(*state == 2);
198
- CheckEqual("bar", k, klen);
199
- (*state)++;
200
- }
201
-
202
- static void CmpDestroy(void* arg) { (void)arg; }
203
-
204
- static int CmpCompare(void* arg, const char* a, size_t alen, const char* b,
205
- size_t blen) {
206
- (void)arg;
207
- size_t n = (alen < blen) ? alen : blen;
208
- int r = memcmp(a, b, n);
209
- if (r == 0) {
210
- if (alen < blen)
211
- r = -1;
212
- else if (alen > blen)
213
- r = +1;
214
- }
215
- return r;
216
- }
217
-
218
- static const char* CmpName(void* arg) {
219
- (void)arg;
220
- return "foo";
221
- }
222
-
223
- // Custom compaction filter
224
- static void CFilterDestroy(void* arg) { (void)arg; }
225
- static const char* CFilterName(void* arg) {
226
- (void)arg;
227
- return "foo";
228
- }
229
- static unsigned char CFilterFilter(void* arg, int level, const char* key,
230
- size_t key_length,
231
- const char* existing_value,
232
- size_t value_length, char** new_value,
233
- size_t* new_value_length,
234
- unsigned char* value_changed) {
235
- (void)arg;
236
- (void)level;
237
- (void)existing_value;
238
- (void)value_length;
239
- if (key_length == 3) {
240
- if (memcmp(key, "bar", key_length) == 0) {
241
- return 1;
242
- } else if (memcmp(key, "baz", key_length) == 0) {
243
- *value_changed = 1;
244
- *new_value = "newbazvalue";
245
- *new_value_length = 11;
246
- return 0;
247
- }
248
- }
249
- return 0;
250
- }
251
-
252
- static void CFilterFactoryDestroy(void* arg) { (void)arg; }
253
- static const char* CFilterFactoryName(void* arg) {
254
- (void)arg;
255
- return "foo";
256
- }
257
- static rocksdb_compactionfilter_t* CFilterCreate(
258
- void* arg, rocksdb_compactionfiltercontext_t* context) {
259
- (void)arg;
260
- (void)context;
261
- return rocksdb_compactionfilter_create(NULL, CFilterDestroy, CFilterFilter,
262
- CFilterName);
263
- }
264
-
265
- void CheckMetaData(rocksdb_column_family_metadata_t* cf_meta,
266
- const char* expected_cf_name) {
267
- char* cf_name = rocksdb_column_family_metadata_get_name(cf_meta);
268
- assert(strcmp(cf_name, expected_cf_name) == 0);
269
- rocksdb_free(cf_name);
270
-
271
- size_t cf_size = rocksdb_column_family_metadata_get_size(cf_meta);
272
- assert(cf_size > 0);
273
- size_t cf_file_count = rocksdb_column_family_metadata_get_size(cf_meta);
274
- assert(cf_file_count > 0);
275
-
276
- uint64_t total_level_size = 0;
277
- size_t total_file_count = 0;
278
- size_t level_count = rocksdb_column_family_metadata_get_level_count(cf_meta);
279
- assert(level_count > 0);
280
- for (size_t l = 0; l < level_count; ++l) {
281
- rocksdb_level_metadata_t* level_meta =
282
- rocksdb_column_family_metadata_get_level_metadata(cf_meta, l);
283
- assert(level_meta);
284
- assert(rocksdb_level_metadata_get_level(level_meta) >= (int)l);
285
- uint64_t level_size = rocksdb_level_metadata_get_size(level_meta);
286
- uint64_t file_size_in_level = 0;
287
-
288
- size_t file_count = rocksdb_level_metadata_get_file_count(level_meta);
289
- total_file_count += file_count;
290
- for (size_t f = 0; f < file_count; ++f) {
291
- rocksdb_sst_file_metadata_t* file_meta =
292
- rocksdb_level_metadata_get_sst_file_metadata(level_meta, f);
293
- assert(file_meta);
294
-
295
- uint64_t file_size = rocksdb_sst_file_metadata_get_size(file_meta);
296
- assert(file_size > 0);
297
- file_size_in_level += file_size;
298
-
299
- char* file_name =
300
- rocksdb_sst_file_metadata_get_relative_filename(file_meta);
301
- assert(file_name);
302
- assert(strlen(file_name) > 0);
303
- rocksdb_free(file_name);
304
-
305
- size_t smallest_key_len;
306
- char* smallest_key = rocksdb_sst_file_metadata_get_smallestkey(
307
- file_meta, &smallest_key_len);
308
- assert(smallest_key);
309
- assert(smallest_key_len > 0);
310
- size_t largest_key_len;
311
- char* largest_key =
312
- rocksdb_sst_file_metadata_get_largestkey(file_meta, &largest_key_len);
313
- assert(largest_key);
314
- assert(largest_key_len > 0);
315
- rocksdb_free(smallest_key);
316
- rocksdb_free(largest_key);
317
-
318
- rocksdb_sst_file_metadata_destroy(file_meta);
319
- }
320
- assert(level_size == file_size_in_level);
321
- total_level_size += level_size;
322
- rocksdb_level_metadata_destroy(level_meta);
323
- }
324
- assert(total_file_count > 0);
325
- assert(cf_size == total_level_size);
326
- }
327
-
328
- void GetAndCheckMetaData(rocksdb_t* db) {
329
- rocksdb_column_family_metadata_t* cf_meta =
330
- rocksdb_get_column_family_metadata(db);
331
-
332
- CheckMetaData(cf_meta, "default");
333
-
334
- rocksdb_column_family_metadata_destroy(cf_meta);
335
- }
336
-
337
- void GetAndCheckMetaDataCf(rocksdb_t* db,
338
- rocksdb_column_family_handle_t* handle,
339
- const char* cf_name) {
340
- // Compact to make sure we have at least one sst file to obtain datadata.
341
- rocksdb_compact_range_cf(db, handle, NULL, 0, NULL, 0);
342
-
343
- rocksdb_column_family_metadata_t* cf_meta =
344
- rocksdb_get_column_family_metadata_cf(db, handle);
345
-
346
- CheckMetaData(cf_meta, cf_name);
347
-
348
- rocksdb_column_family_metadata_destroy(cf_meta);
349
- }
350
-
351
- static rocksdb_t* CheckCompaction(rocksdb_t* db, rocksdb_options_t* options,
352
- rocksdb_readoptions_t* roptions,
353
- rocksdb_writeoptions_t* woptions) {
354
- char* err = NULL;
355
- db = rocksdb_open(options, dbname, &err);
356
- CheckNoError(err);
357
- rocksdb_put(db, woptions, "foo", 3, "foovalue", 8, &err);
358
- CheckNoError(err);
359
- CheckGet(db, roptions, "foo", "foovalue");
360
- rocksdb_put(db, woptions, "bar", 3, "barvalue", 8, &err);
361
- CheckNoError(err);
362
- CheckGet(db, roptions, "bar", "barvalue");
363
- rocksdb_put(db, woptions, "baz", 3, "bazvalue", 8, &err);
364
- CheckNoError(err);
365
- CheckGet(db, roptions, "baz", "bazvalue");
366
-
367
- // Disable compaction
368
- rocksdb_disable_manual_compaction(db);
369
- rocksdb_compact_range(db, NULL, 0, NULL, 0);
370
- // should not filter anything when disabled
371
- CheckGet(db, roptions, "foo", "foovalue");
372
- CheckGet(db, roptions, "bar", "barvalue");
373
- CheckGet(db, roptions, "baz", "bazvalue");
374
- // Reenable compaction
375
- rocksdb_enable_manual_compaction(db);
376
-
377
- // Force compaction
378
- rocksdb_compact_range(db, NULL, 0, NULL, 0);
379
- // should have filtered bar, but not foo
380
- CheckGet(db, roptions, "foo", "foovalue");
381
- CheckGet(db, roptions, "bar", NULL);
382
- CheckGet(db, roptions, "baz", "newbazvalue");
383
-
384
- rocksdb_suggest_compact_range(db, "bar", 3, "foo", 3, &err);
385
- GetAndCheckMetaData(db);
386
- CheckNoError(err);
387
-
388
- return db;
389
- }
390
-
391
- // Custom merge operator
392
- static void MergeOperatorDestroy(void* arg) { (void)arg; }
393
- static const char* MergeOperatorName(void* arg) {
394
- (void)arg;
395
- return "TestMergeOperator";
396
- }
397
- static char* MergeOperatorFullMerge(
398
- void* arg, const char* key, size_t key_length, const char* existing_value,
399
- size_t existing_value_length, const char* const* operands_list,
400
- const size_t* operands_list_length, int num_operands,
401
- unsigned char* success, size_t* new_value_length) {
402
- (void)arg;
403
- (void)key;
404
- (void)key_length;
405
- (void)existing_value;
406
- (void)existing_value_length;
407
- (void)operands_list;
408
- (void)operands_list_length;
409
- (void)num_operands;
410
- *new_value_length = 4;
411
- *success = 1;
412
- char* result = malloc(4);
413
- memcpy(result, "fake", 4);
414
- return result;
415
- }
416
- static char* MergeOperatorPartialMerge(void* arg, const char* key,
417
- size_t key_length,
418
- const char* const* operands_list,
419
- const size_t* operands_list_length,
420
- int num_operands, unsigned char* success,
421
- size_t* new_value_length) {
422
- (void)arg;
423
- (void)key;
424
- (void)key_length;
425
- (void)operands_list;
426
- (void)operands_list_length;
427
- (void)num_operands;
428
- *new_value_length = 4;
429
- *success = 1;
430
- char* result = malloc(4);
431
- memcpy(result, "fake", 4);
432
- return result;
433
- }
434
-
435
- static void CheckTxnGet(rocksdb_transaction_t* txn,
436
- const rocksdb_readoptions_t* options, const char* key,
437
- const char* expected) {
438
- char* err = NULL;
439
- size_t val_len;
440
- char* val;
441
- val = rocksdb_transaction_get(txn, options, key, strlen(key), &val_len, &err);
442
- CheckNoError(err);
443
- CheckEqual(expected, val, val_len);
444
- Free(&val);
445
- }
446
-
447
- static void CheckTxnGetCF(rocksdb_transaction_t* txn,
448
- const rocksdb_readoptions_t* options,
449
- rocksdb_column_family_handle_t* column_family,
450
- const char* key, const char* expected) {
451
- char* err = NULL;
452
- size_t val_len;
453
- char* val;
454
- val = rocksdb_transaction_get_cf(txn, options, column_family, key,
455
- strlen(key), &val_len, &err);
456
- CheckNoError(err);
457
- CheckEqual(expected, val, val_len);
458
- Free(&val);
459
- }
460
-
461
- static void CheckTxnPinGet(rocksdb_transaction_t* txn,
462
- const rocksdb_readoptions_t* options,
463
- const char* key, const char* expected) {
464
- rocksdb_pinnableslice_t* p = NULL;
465
- const char* val = NULL;
466
- char* err = NULL;
467
- size_t val_len;
468
- p = rocksdb_transaction_get_pinned(txn, options, key, strlen(key), &err);
469
- CheckNoError(err);
470
- val = rocksdb_pinnableslice_value(p, &val_len);
471
- CheckEqual(expected, val, val_len);
472
- rocksdb_pinnableslice_destroy(p);
473
- }
474
-
475
- static void CheckTxnPinGetCF(rocksdb_transaction_t* txn,
476
- const rocksdb_readoptions_t* options,
477
- rocksdb_column_family_handle_t* column_family,
478
- const char* key, const char* expected) {
479
- rocksdb_pinnableslice_t* p = NULL;
480
- const char* val = NULL;
481
- char* err = NULL;
482
- size_t val_len;
483
- p = rocksdb_transaction_get_pinned_cf(txn, options, column_family, key,
484
- strlen(key), &err);
485
- CheckNoError(err);
486
- val = rocksdb_pinnableslice_value(p, &val_len);
487
- CheckEqual(expected, val, val_len);
488
- rocksdb_pinnableslice_destroy(p);
489
- }
490
-
491
- static void CheckTxnGetForUpdate(rocksdb_transaction_t* txn,
492
- const rocksdb_readoptions_t* options,
493
- const char* key, const char* expected) {
494
- char* err = NULL;
495
- size_t val_len;
496
- char* val;
497
- val = rocksdb_transaction_get_for_update(txn, options, key, strlen(key),
498
- &val_len, true, &err);
499
- CheckNoError(err);
500
- CheckEqual(expected, val, val_len);
501
- Free(&val);
502
- }
503
-
504
- static void CheckTxnDBGet(rocksdb_transactiondb_t* txn_db,
505
- const rocksdb_readoptions_t* options, const char* key,
506
- const char* expected) {
507
- char* err = NULL;
508
- size_t val_len;
509
- char* val;
510
- val = rocksdb_transactiondb_get(txn_db, options, key, strlen(key), &val_len,
511
- &err);
512
- CheckNoError(err);
513
- CheckEqual(expected, val, val_len);
514
- Free(&val);
515
- }
516
-
517
- static void CheckTxnDBGetCF(rocksdb_transactiondb_t* txn_db,
518
- const rocksdb_readoptions_t* options,
519
- rocksdb_column_family_handle_t* column_family,
520
- const char* key, const char* expected) {
521
- char* err = NULL;
522
- size_t val_len;
523
- char* val;
524
- val = rocksdb_transactiondb_get_cf(txn_db, options, column_family, key,
525
- strlen(key), &val_len, &err);
526
- CheckNoError(err);
527
- CheckEqual(expected, val, val_len);
528
- Free(&val);
529
- }
530
-
531
- static void CheckTxnGetForUpdateCF(
532
- rocksdb_transaction_t* txn, const rocksdb_readoptions_t* options,
533
- rocksdb_column_family_handle_t* column_family, const char* key,
534
- const char* expected) {
535
- char* err = NULL;
536
- size_t val_len;
537
- char* val;
538
- val = rocksdb_transaction_get_for_update_cf(
539
- txn, options, column_family, key, strlen(key), &val_len, true, &err);
540
- CheckNoError(err);
541
- CheckEqual(expected, val, val_len);
542
- Free(&val);
543
- }
544
-
545
- static void CheckTxnDBPinGet(rocksdb_transactiondb_t* txn_db,
546
- const rocksdb_readoptions_t* options,
547
- const char* key, const char* expected) {
548
- rocksdb_pinnableslice_t* p = NULL;
549
- const char* val = NULL;
550
- char* err = NULL;
551
- size_t val_len;
552
- p = rocksdb_transactiondb_get_pinned(txn_db, options, key, strlen(key), &err);
553
- CheckNoError(err);
554
- val = rocksdb_pinnableslice_value(p, &val_len);
555
- CheckEqual(expected, val, val_len);
556
- rocksdb_pinnableslice_destroy(p);
557
- }
558
-
559
- static void CheckTxnDBPinGetCF(rocksdb_transactiondb_t* txn_db,
560
- const rocksdb_readoptions_t* options,
561
- rocksdb_column_family_handle_t* column_family,
562
- const char* key, const char* expected) {
563
- rocksdb_pinnableslice_t* p = NULL;
564
- const char* val = NULL;
565
- char* err = NULL;
566
- size_t val_len;
567
- p = rocksdb_transactiondb_get_pinned_cf(txn_db, options, column_family, key,
568
- strlen(key), &err);
569
- CheckNoError(err);
570
- val = rocksdb_pinnableslice_value(p, &val_len);
571
- CheckEqual(expected, val, val_len);
572
- rocksdb_pinnableslice_destroy(p);
573
- }
574
-
575
- static void LoadAndCheckLatestOptions(const char* db_name, rocksdb_env_t* env,
576
- bool ignore_unknown_options,
577
- rocksdb_cache_t* cache,
578
- rocksdb_comparator_t* cmp,
579
- const size_t expected_num_column_families,
580
- const char** expected_cf_names,
581
- const char* expected_open_err) {
582
- rocksdb_options_t* db_options;
583
- size_t num_column_families;
584
- char** list_column_family_names;
585
- rocksdb_options_t** list_column_family_options;
586
- char* err = 0;
587
-
588
- // load the latest rocksdb option
589
- rocksdb_load_latest_options(db_name, env, ignore_unknown_options, cache,
590
- &db_options, &num_column_families,
591
- &list_column_family_names,
592
- &list_column_family_options, &err);
593
- assert(num_column_families == expected_num_column_families);
594
- CheckNoError(err);
595
-
596
- // verify the loaded options by opening the db.
597
- rocksdb_options_set_error_if_exists(db_options, 0);
598
-
599
- char** list_const_cf_names =
600
- (char**)malloc(num_column_families * sizeof(char*));
601
- rocksdb_options_t** list_const_cf_options = (rocksdb_options_t**)malloc(
602
- num_column_families * sizeof(rocksdb_options_t*));
603
- for (size_t i = 0; i < num_column_families; ++i) {
604
- assert(strcmp(list_column_family_names[i], expected_cf_names[i]) == 0);
605
- list_const_cf_names[i] = list_column_family_names[i];
606
- if (cmp) {
607
- rocksdb_options_set_comparator(list_column_family_options[i], cmp);
608
- }
609
- list_const_cf_options[i] = list_column_family_options[i];
610
- }
611
- rocksdb_column_family_handle_t** handles =
612
- (rocksdb_column_family_handle_t**)malloc(
613
- num_column_families * sizeof(rocksdb_column_family_handle_t*));
614
-
615
- rocksdb_t* db = rocksdb_open_column_families(
616
- db_options, db_name, (int)num_column_families,
617
- (const char* const*)list_const_cf_names,
618
- (const rocksdb_options_t* const*)list_const_cf_options, handles, &err);
619
- if (expected_open_err == NULL) {
620
- CheckNoError(err);
621
- for (size_t i = 0; i < num_column_families; ++i) {
622
- rocksdb_column_family_handle_destroy(handles[i]);
623
- }
624
- free(handles);
625
- rocksdb_close(db);
626
- } else {
627
- assert(err != NULL);
628
- assert(strcmp(err, expected_open_err) == 0);
629
- free(handles);
630
- free(err);
631
- }
632
-
633
- free(list_const_cf_names);
634
- free(list_const_cf_options);
635
- rocksdb_load_latest_options_destroy(db_options, list_column_family_names,
636
- list_column_family_options,
637
- num_column_families);
638
- }
639
-
640
- int main(int argc, char** argv) {
641
- (void)argc;
642
- (void)argv;
643
- rocksdb_t* db;
644
- rocksdb_comparator_t* cmp;
645
- rocksdb_cache_t* cache;
646
- rocksdb_dbpath_t* dbpath;
647
- rocksdb_env_t* env;
648
- rocksdb_options_t* options;
649
- rocksdb_compactoptions_t* coptions;
650
- rocksdb_block_based_table_options_t* table_options;
651
- rocksdb_readoptions_t* roptions;
652
- rocksdb_writeoptions_t* woptions;
653
- rocksdb_ratelimiter_t* rate_limiter;
654
- rocksdb_transactiondb_t* txn_db;
655
- rocksdb_transactiondb_options_t* txn_db_options;
656
- rocksdb_transaction_t* txn;
657
- rocksdb_transaction_options_t* txn_options;
658
- rocksdb_optimistictransactiondb_t* otxn_db;
659
- rocksdb_optimistictransaction_options_t* otxn_options;
660
- char* err = NULL;
661
- int run = -1;
662
-
663
- snprintf(dbname, sizeof(dbname), "%s/rocksdb_c_test-%d", GetTempDir(),
664
- ((int)geteuid()));
665
-
666
- snprintf(dbbackupname, sizeof(dbbackupname), "%s/rocksdb_c_test-%d-backup",
667
- GetTempDir(), ((int)geteuid()));
668
-
669
- snprintf(dbcheckpointname, sizeof(dbcheckpointname),
670
- "%s/rocksdb_c_test-%d-checkpoint", GetTempDir(), ((int)geteuid()));
671
-
672
- snprintf(sstfilename, sizeof(sstfilename), "%s/rocksdb_c_test-%d-sst",
673
- GetTempDir(), ((int)geteuid()));
674
-
675
- snprintf(dbpathname, sizeof(dbpathname), "%s/rocksdb_c_test-%d-dbpath",
676
- GetTempDir(), ((int)geteuid()));
677
-
678
- StartPhase("create_objects");
679
- cmp = rocksdb_comparator_create(NULL, CmpDestroy, CmpCompare, CmpName);
680
- dbpath = rocksdb_dbpath_create(dbpathname, 1024 * 1024);
681
- env = rocksdb_create_default_env();
682
-
683
- rocksdb_create_dir_if_missing(env, GetTempDir(), &err);
684
- CheckNoError(err);
685
-
686
- cache = rocksdb_cache_create_lru(100000);
687
-
688
- options = rocksdb_options_create();
689
- rocksdb_options_set_comparator(options, cmp);
690
- rocksdb_options_set_error_if_exists(options, 1);
691
- rocksdb_options_set_env(options, env);
692
- rocksdb_options_set_info_log(options, NULL);
693
- rocksdb_options_set_write_buffer_size(options, 100000);
694
- rocksdb_options_set_paranoid_checks(options, 1);
695
- rocksdb_options_set_max_open_files(options, 10);
696
-
697
- table_options = rocksdb_block_based_options_create();
698
- rocksdb_block_based_options_set_block_cache(table_options, cache);
699
- rocksdb_block_based_options_set_data_block_index_type(table_options, 1);
700
- rocksdb_block_based_options_set_data_block_hash_ratio(table_options, 0.75);
701
- rocksdb_options_set_block_based_table_factory(options, table_options);
702
-
703
- rocksdb_options_set_compression(options, rocksdb_no_compression);
704
- rocksdb_options_set_compression_options(options, -14, -1, 0, 0);
705
- int compression_levels[] = {rocksdb_no_compression, rocksdb_no_compression,
706
- rocksdb_no_compression, rocksdb_no_compression};
707
- rocksdb_options_set_compression_per_level(options, compression_levels, 4);
708
- rate_limiter = rocksdb_ratelimiter_create(1000 * 1024 * 1024, 100 * 1000, 10);
709
- rocksdb_options_set_ratelimiter(options, rate_limiter);
710
- rocksdb_ratelimiter_destroy(rate_limiter);
711
-
712
- roptions = rocksdb_readoptions_create();
713
- rocksdb_readoptions_set_verify_checksums(roptions, 1);
714
- rocksdb_readoptions_set_fill_cache(roptions, 1);
715
-
716
- woptions = rocksdb_writeoptions_create();
717
- rocksdb_writeoptions_set_sync(woptions, 1);
718
-
719
- coptions = rocksdb_compactoptions_create();
720
- rocksdb_compactoptions_set_exclusive_manual_compaction(coptions, 1);
721
-
722
- rocksdb_options_add_compact_on_deletion_collector_factory(options, 10000,
723
- 10001);
724
-
725
- StartPhase("destroy");
726
- rocksdb_destroy_db(options, dbname, &err);
727
- Free(&err);
728
-
729
- StartPhase("open_error");
730
- rocksdb_open(options, dbname, &err);
731
- CheckCondition(err != NULL);
732
- Free(&err);
733
-
734
- StartPhase("open");
735
- rocksdb_options_set_create_if_missing(options, 1);
736
- db = rocksdb_open(options, dbname, &err);
737
- CheckNoError(err);
738
- CheckGet(db, roptions, "foo", NULL);
739
-
740
- StartPhase("put");
741
- rocksdb_put(db, woptions, "foo", 3, "hello", 5, &err);
742
- CheckNoError(err);
743
- CheckGet(db, roptions, "foo", "hello");
744
-
745
- StartPhase("backup_and_restore");
746
- {
747
- rocksdb_destroy_db(options, dbbackupname, &err);
748
- CheckNoError(err);
749
-
750
- rocksdb_backup_engine_t* be =
751
- rocksdb_backup_engine_open(options, dbbackupname, &err);
752
- CheckNoError(err);
753
-
754
- rocksdb_backup_engine_create_new_backup(be, db, &err);
755
- CheckNoError(err);
756
-
757
- // need a change to trigger a new backup
758
- rocksdb_delete(db, woptions, "does-not-exist", 14, &err);
759
- CheckNoError(err);
760
-
761
- rocksdb_backup_engine_create_new_backup(be, db, &err);
762
- CheckNoError(err);
763
-
764
- const rocksdb_backup_engine_info_t* bei =
765
- rocksdb_backup_engine_get_backup_info(be);
766
- CheckCondition(rocksdb_backup_engine_info_count(bei) > 1);
767
- rocksdb_backup_engine_info_destroy(bei);
768
-
769
- rocksdb_backup_engine_purge_old_backups(be, 1, &err);
770
- CheckNoError(err);
771
-
772
- bei = rocksdb_backup_engine_get_backup_info(be);
773
- CheckCondition(rocksdb_backup_engine_info_count(bei) == 1);
774
- rocksdb_backup_engine_info_destroy(bei);
775
-
776
- rocksdb_delete(db, woptions, "foo", 3, &err);
777
- CheckNoError(err);
778
-
779
- rocksdb_close(db);
780
-
781
- rocksdb_destroy_db(options, dbname, &err);
782
- CheckNoError(err);
783
-
784
- rocksdb_restore_options_t* restore_options =
785
- rocksdb_restore_options_create();
786
- rocksdb_restore_options_set_keep_log_files(restore_options, 0);
787
- rocksdb_backup_engine_restore_db_from_latest_backup(be, dbname, dbname,
788
- restore_options, &err);
789
- CheckNoError(err);
790
- rocksdb_restore_options_destroy(restore_options);
791
-
792
- rocksdb_options_set_error_if_exists(options, 0);
793
- db = rocksdb_open(options, dbname, &err);
794
- CheckNoError(err);
795
- rocksdb_options_set_error_if_exists(options, 1);
796
-
797
- CheckGet(db, roptions, "foo", "hello");
798
-
799
- rocksdb_backup_engine_close(be);
800
- }
801
-
802
- StartPhase("checkpoint");
803
- {
804
- rocksdb_destroy_db(options, dbcheckpointname, &err);
805
- CheckNoError(err);
806
-
807
- rocksdb_checkpoint_t* checkpoint =
808
- rocksdb_checkpoint_object_create(db, &err);
809
- CheckNoError(err);
810
-
811
- rocksdb_checkpoint_create(checkpoint, dbcheckpointname, 0, &err);
812
- CheckNoError(err);
813
-
814
- // start a new database from the checkpoint
815
- rocksdb_close(db);
816
- rocksdb_options_set_error_if_exists(options, 0);
817
- db = rocksdb_open(options, dbcheckpointname, &err);
818
- CheckNoError(err);
819
-
820
- CheckGet(db, roptions, "foo", "hello");
821
-
822
- rocksdb_checkpoint_object_destroy(checkpoint);
823
-
824
- rocksdb_close(db);
825
- rocksdb_destroy_db(options, dbcheckpointname, &err);
826
- CheckNoError(err);
827
-
828
- db = rocksdb_open(options, dbname, &err);
829
- CheckNoError(err);
830
- rocksdb_options_set_error_if_exists(options, 1);
831
- }
832
-
833
- StartPhase("compactall");
834
- rocksdb_compact_range(db, NULL, 0, NULL, 0);
835
- CheckGet(db, roptions, "foo", "hello");
836
-
837
- StartPhase("compactrange");
838
- rocksdb_compact_range(db, "a", 1, "z", 1);
839
- CheckGet(db, roptions, "foo", "hello");
840
-
841
- StartPhase("compactallopt");
842
- rocksdb_compact_range_opt(db, coptions, NULL, 0, NULL, 0);
843
- CheckGet(db, roptions, "foo", "hello");
844
-
845
- StartPhase("compactrangeopt");
846
- rocksdb_compact_range_opt(db, coptions, "a", 1, "z", 1);
847
- CheckGet(db, roptions, "foo", "hello");
848
-
849
- // Simple check cache usage
850
- StartPhase("cache_usage");
851
- {
852
- rocksdb_readoptions_set_pin_data(roptions, 1);
853
- rocksdb_iterator_t* iter = rocksdb_create_iterator(db, roptions);
854
- rocksdb_iter_seek(iter, "foo", 3);
855
-
856
- size_t usage = rocksdb_cache_get_usage(cache);
857
- CheckCondition(usage > 0);
858
-
859
- size_t pin_usage = rocksdb_cache_get_pinned_usage(cache);
860
- CheckCondition(pin_usage > 0);
861
-
862
- rocksdb_iter_next(iter);
863
- rocksdb_iter_destroy(iter);
864
- rocksdb_readoptions_set_pin_data(roptions, 0);
865
- }
866
-
867
- StartPhase("addfile");
868
- {
869
- rocksdb_envoptions_t* env_opt = rocksdb_envoptions_create();
870
- rocksdb_options_t* io_options = rocksdb_options_create();
871
- rocksdb_sstfilewriter_t* writer =
872
- rocksdb_sstfilewriter_create(env_opt, io_options);
873
-
874
- remove(sstfilename);
875
- rocksdb_sstfilewriter_open(writer, sstfilename, &err);
876
- CheckNoError(err);
877
- rocksdb_sstfilewriter_put(writer, "sstk1", 5, "v1", 2, &err);
878
- CheckNoError(err);
879
- rocksdb_sstfilewriter_put(writer, "sstk2", 5, "v2", 2, &err);
880
- CheckNoError(err);
881
- rocksdb_sstfilewriter_put(writer, "sstk3", 5, "v3", 2, &err);
882
- CheckNoError(err);
883
- rocksdb_sstfilewriter_finish(writer, &err);
884
- CheckNoError(err);
885
-
886
- rocksdb_ingestexternalfileoptions_t* ing_opt =
887
- rocksdb_ingestexternalfileoptions_create();
888
- const char* file_list[1] = {sstfilename};
889
- rocksdb_ingest_external_file(db, file_list, 1, ing_opt, &err);
890
- CheckNoError(err);
891
- CheckGet(db, roptions, "sstk1", "v1");
892
- CheckGet(db, roptions, "sstk2", "v2");
893
- CheckGet(db, roptions, "sstk3", "v3");
894
-
895
- remove(sstfilename);
896
- rocksdb_sstfilewriter_open(writer, sstfilename, &err);
897
- CheckNoError(err);
898
- rocksdb_sstfilewriter_put(writer, "sstk2", 5, "v4", 2, &err);
899
- CheckNoError(err);
900
- rocksdb_sstfilewriter_put(writer, "sstk22", 6, "v5", 2, &err);
901
- CheckNoError(err);
902
- rocksdb_sstfilewriter_put(writer, "sstk3", 5, "v6", 2, &err);
903
- CheckNoError(err);
904
- rocksdb_sstfilewriter_finish(writer, &err);
905
- CheckNoError(err);
906
-
907
- rocksdb_ingest_external_file(db, file_list, 1, ing_opt, &err);
908
- CheckNoError(err);
909
- CheckGet(db, roptions, "sstk1", "v1");
910
- CheckGet(db, roptions, "sstk2", "v4");
911
- CheckGet(db, roptions, "sstk22", "v5");
912
- CheckGet(db, roptions, "sstk3", "v6");
913
-
914
- rocksdb_sstfilewriter_open(writer, sstfilename, &err);
915
- CheckNoError(err);
916
- rocksdb_sstfilewriter_put(writer, "abc1", 4, "v7", 2, &err);
917
- CheckNoError(err);
918
- rocksdb_sstfilewriter_put(writer, "abc2", 4, "v8", 2, &err);
919
- CheckNoError(err);
920
- rocksdb_sstfilewriter_put(writer, "abc3", 4, "v9", 2, &err);
921
- CheckNoError(err);
922
- rocksdb_sstfilewriter_put(writer, "abc4", 4, "v10", 3, &err);
923
- CheckNoError(err);
924
- rocksdb_sstfilewriter_delete_range(writer, "abc1", 4, "abc4", 4, &err);
925
- CheckNoError(err);
926
- rocksdb_sstfilewriter_finish(writer, &err);
927
- CheckNoError(err);
928
-
929
- rocksdb_ingestexternalfileoptions_destroy(ing_opt);
930
- rocksdb_sstfilewriter_destroy(writer);
931
- rocksdb_options_destroy(io_options);
932
- rocksdb_envoptions_destroy(env_opt);
933
-
934
- // Delete all keys we just ingested
935
- rocksdb_delete(db, woptions, "sstk1", 5, &err);
936
- CheckNoError(err);
937
- rocksdb_delete(db, woptions, "sstk2", 5, &err);
938
- CheckNoError(err);
939
- rocksdb_delete(db, woptions, "sstk22", 6, &err);
940
- CheckNoError(err);
941
- rocksdb_delete(db, woptions, "sstk3", 5, &err);
942
- CheckNoError(err);
943
- }
944
-
945
- StartPhase("writebatch");
946
- {
947
- rocksdb_writebatch_t* wb = rocksdb_writebatch_create();
948
- rocksdb_writebatch_put(wb, "foo", 3, "a", 1);
949
- rocksdb_writebatch_clear(wb);
950
- rocksdb_writebatch_put(wb, "bar", 3, "b", 1);
951
- rocksdb_writebatch_put(wb, "box", 3, "c", 1);
952
- rocksdb_writebatch_delete(wb, "bar", 3);
953
- rocksdb_write(db, woptions, wb, &err);
954
- CheckNoError(err);
955
- CheckGet(db, roptions, "foo", "hello");
956
- CheckGet(db, roptions, "bar", NULL);
957
- CheckGet(db, roptions, "box", "c");
958
- int pos = 0;
959
- rocksdb_writebatch_iterate(wb, &pos, CheckPut, CheckDel);
960
- CheckCondition(pos == 3);
961
- rocksdb_writebatch_clear(wb);
962
- rocksdb_writebatch_put(wb, "bar", 3, "b", 1);
963
- rocksdb_writebatch_put(wb, "bay", 3, "d", 1);
964
- rocksdb_writebatch_delete_range(wb, "bar", 3, "bay", 3);
965
- rocksdb_write(db, woptions, wb, &err);
966
- CheckNoError(err);
967
- CheckGet(db, roptions, "bar", NULL);
968
- CheckGet(db, roptions, "bay", "d");
969
- rocksdb_writebatch_clear(wb);
970
- const char* start_list[1] = {"bay"};
971
- const size_t start_sizes[1] = {3};
972
- const char* end_list[1] = {"baz"};
973
- const size_t end_sizes[1] = {3};
974
- rocksdb_writebatch_delete_rangev(wb, 1, start_list, start_sizes, end_list,
975
- end_sizes);
976
- rocksdb_write(db, woptions, wb, &err);
977
- CheckNoError(err);
978
- CheckGet(db, roptions, "bay", NULL);
979
- rocksdb_writebatch_destroy(wb);
980
- }
981
-
982
- StartPhase("writebatch_vectors");
983
- {
984
- rocksdb_writebatch_t* wb = rocksdb_writebatch_create();
985
- const char* k_list[2] = {"z", "ap"};
986
- const size_t k_sizes[2] = {1, 2};
987
- const char* v_list[3] = {"x", "y", "z"};
988
- const size_t v_sizes[3] = {1, 1, 1};
989
- rocksdb_writebatch_putv(wb, 2, k_list, k_sizes, 3, v_list, v_sizes);
990
- rocksdb_write(db, woptions, wb, &err);
991
- CheckNoError(err);
992
- CheckGet(db, roptions, "zap", "xyz");
993
- rocksdb_writebatch_delete(wb, "zap", 3);
994
- rocksdb_write(db, woptions, wb, &err);
995
- CheckNoError(err);
996
- CheckGet(db, roptions, "zap", NULL);
997
- rocksdb_writebatch_destroy(wb);
998
- }
999
-
1000
- StartPhase("writebatch_savepoint");
1001
- {
1002
- rocksdb_writebatch_t* wb = rocksdb_writebatch_create();
1003
- rocksdb_writebatch_set_save_point(wb);
1004
- rocksdb_writebatch_set_save_point(wb);
1005
- const char* k_list[2] = {"z", "ap"};
1006
- const size_t k_sizes[2] = {1, 2};
1007
- const char* v_list[3] = {"x", "y", "z"};
1008
- const size_t v_sizes[3] = {1, 1, 1};
1009
- rocksdb_writebatch_pop_save_point(wb, &err);
1010
- CheckNoError(err);
1011
- rocksdb_writebatch_putv(wb, 2, k_list, k_sizes, 3, v_list, v_sizes);
1012
- rocksdb_writebatch_rollback_to_save_point(wb, &err);
1013
- CheckNoError(err);
1014
- rocksdb_write(db, woptions, wb, &err);
1015
- CheckNoError(err);
1016
- CheckGet(db, roptions, "zap", NULL);
1017
- rocksdb_writebatch_destroy(wb);
1018
- }
1019
-
1020
- StartPhase("writebatch_rep");
1021
- {
1022
- rocksdb_writebatch_t* wb1 = rocksdb_writebatch_create();
1023
- rocksdb_writebatch_put(wb1, "baz", 3, "d", 1);
1024
- rocksdb_writebatch_put(wb1, "quux", 4, "e", 1);
1025
- rocksdb_writebatch_delete(wb1, "quux", 4);
1026
- size_t repsize1 = 0;
1027
- const char* rep = rocksdb_writebatch_data(wb1, &repsize1);
1028
- rocksdb_writebatch_t* wb2 = rocksdb_writebatch_create_from(rep, repsize1);
1029
- CheckCondition(rocksdb_writebatch_count(wb1) ==
1030
- rocksdb_writebatch_count(wb2));
1031
- size_t repsize2 = 0;
1032
- CheckCondition(
1033
- memcmp(rep, rocksdb_writebatch_data(wb2, &repsize2), repsize1) == 0);
1034
- rocksdb_writebatch_destroy(wb1);
1035
- rocksdb_writebatch_destroy(wb2);
1036
- }
1037
-
1038
- StartPhase("writebatch_wi");
1039
- {
1040
- rocksdb_writebatch_wi_t* wbi = rocksdb_writebatch_wi_create(0, 1);
1041
- rocksdb_writebatch_wi_put(wbi, "foo", 3, "a", 1);
1042
- rocksdb_writebatch_wi_clear(wbi);
1043
- rocksdb_writebatch_wi_put(wbi, "bar", 3, "b", 1);
1044
- rocksdb_writebatch_wi_put(wbi, "box", 3, "c", 1);
1045
- rocksdb_writebatch_wi_delete(wbi, "bar", 3);
1046
- int count = rocksdb_writebatch_wi_count(wbi);
1047
- CheckCondition(count == 3);
1048
- size_t size;
1049
- char* value;
1050
- value = rocksdb_writebatch_wi_get_from_batch(wbi, options, "box", 3, &size,
1051
- &err);
1052
- CheckValue(err, "c", &value, size);
1053
- value = rocksdb_writebatch_wi_get_from_batch(wbi, options, "bar", 3, &size,
1054
- &err);
1055
- CheckValue(err, NULL, &value, size);
1056
- value = rocksdb_writebatch_wi_get_from_batch_and_db(wbi, db, roptions,
1057
- "foo", 3, &size, &err);
1058
- CheckValue(err, "hello", &value, size);
1059
- value = rocksdb_writebatch_wi_get_from_batch_and_db(wbi, db, roptions,
1060
- "box", 3, &size, &err);
1061
- CheckValue(err, "c", &value, size);
1062
- rocksdb_write_writebatch_wi(db, woptions, wbi, &err);
1063
- CheckNoError(err);
1064
- CheckGet(db, roptions, "foo", "hello");
1065
- CheckGet(db, roptions, "bar", NULL);
1066
- CheckGet(db, roptions, "box", "c");
1067
- int pos = 0;
1068
- rocksdb_writebatch_wi_iterate(wbi, &pos, CheckPut, CheckDel);
1069
- CheckCondition(pos == 3);
1070
- rocksdb_writebatch_wi_clear(wbi);
1071
- rocksdb_writebatch_wi_destroy(wbi);
1072
- }
1073
-
1074
- StartPhase("writebatch_wi_vectors");
1075
- {
1076
- rocksdb_writebatch_wi_t* wb = rocksdb_writebatch_wi_create(0, 1);
1077
- const char* k_list[2] = {"z", "ap"};
1078
- const size_t k_sizes[2] = {1, 2};
1079
- const char* v_list[3] = {"x", "y", "z"};
1080
- const size_t v_sizes[3] = {1, 1, 1};
1081
- rocksdb_writebatch_wi_putv(wb, 2, k_list, k_sizes, 3, v_list, v_sizes);
1082
- rocksdb_write_writebatch_wi(db, woptions, wb, &err);
1083
- CheckNoError(err);
1084
- CheckGet(db, roptions, "zap", "xyz");
1085
- rocksdb_writebatch_wi_delete(wb, "zap", 3);
1086
- rocksdb_write_writebatch_wi(db, woptions, wb, &err);
1087
- CheckNoError(err);
1088
- CheckGet(db, roptions, "zap", NULL);
1089
- rocksdb_writebatch_wi_destroy(wb);
1090
- }
1091
-
1092
- StartPhase("writebatch_wi_savepoint");
1093
- {
1094
- rocksdb_writebatch_wi_t* wb = rocksdb_writebatch_wi_create(0, 1);
1095
- rocksdb_writebatch_wi_set_save_point(wb);
1096
- const char* k_list[2] = {"z", "ap"};
1097
- const size_t k_sizes[2] = {1, 2};
1098
- const char* v_list[3] = {"x", "y", "z"};
1099
- const size_t v_sizes[3] = {1, 1, 1};
1100
- rocksdb_writebatch_wi_putv(wb, 2, k_list, k_sizes, 3, v_list, v_sizes);
1101
- rocksdb_writebatch_wi_rollback_to_save_point(wb, &err);
1102
- CheckNoError(err);
1103
- rocksdb_write_writebatch_wi(db, woptions, wb, &err);
1104
- CheckNoError(err);
1105
- CheckGet(db, roptions, "zap", NULL);
1106
- rocksdb_writebatch_wi_destroy(wb);
1107
- }
1108
-
1109
- StartPhase("iter");
1110
- {
1111
- rocksdb_iterator_t* iter = rocksdb_create_iterator(db, roptions);
1112
- CheckCondition(!rocksdb_iter_valid(iter));
1113
- rocksdb_iter_seek_to_first(iter);
1114
- CheckCondition(rocksdb_iter_valid(iter));
1115
- CheckIter(iter, "box", "c");
1116
- rocksdb_iter_next(iter);
1117
- CheckIter(iter, "foo", "hello");
1118
- rocksdb_iter_prev(iter);
1119
- CheckIter(iter, "box", "c");
1120
- rocksdb_iter_prev(iter);
1121
- CheckCondition(!rocksdb_iter_valid(iter));
1122
- rocksdb_iter_seek_to_last(iter);
1123
- CheckIter(iter, "foo", "hello");
1124
- rocksdb_iter_seek(iter, "b", 1);
1125
- CheckIter(iter, "box", "c");
1126
- rocksdb_iter_seek_for_prev(iter, "g", 1);
1127
- CheckIter(iter, "foo", "hello");
1128
- rocksdb_iter_seek_for_prev(iter, "box", 3);
1129
- CheckIter(iter, "box", "c");
1130
- rocksdb_iter_get_error(iter, &err);
1131
- CheckNoError(err);
1132
- rocksdb_iter_destroy(iter);
1133
- }
1134
-
1135
- StartPhase("wbwi_iter");
1136
- {
1137
- rocksdb_iterator_t* base_iter = rocksdb_create_iterator(db, roptions);
1138
- rocksdb_writebatch_wi_t* wbi = rocksdb_writebatch_wi_create(0, 1);
1139
- rocksdb_writebatch_wi_put(wbi, "bar", 3, "b", 1);
1140
- rocksdb_writebatch_wi_delete(wbi, "foo", 3);
1141
- rocksdb_iterator_t* iter =
1142
- rocksdb_writebatch_wi_create_iterator_with_base(wbi, base_iter);
1143
- CheckCondition(!rocksdb_iter_valid(iter));
1144
- rocksdb_iter_seek_to_first(iter);
1145
- CheckCondition(rocksdb_iter_valid(iter));
1146
- CheckIter(iter, "bar", "b");
1147
- rocksdb_iter_next(iter);
1148
- CheckIter(iter, "box", "c");
1149
- rocksdb_iter_prev(iter);
1150
- CheckIter(iter, "bar", "b");
1151
- rocksdb_iter_prev(iter);
1152
- CheckCondition(!rocksdb_iter_valid(iter));
1153
- rocksdb_iter_seek_to_last(iter);
1154
- CheckIter(iter, "box", "c");
1155
- rocksdb_iter_seek(iter, "b", 1);
1156
- CheckIter(iter, "bar", "b");
1157
- rocksdb_iter_seek_for_prev(iter, "c", 1);
1158
- CheckIter(iter, "box", "c");
1159
- rocksdb_iter_seek_for_prev(iter, "box", 3);
1160
- CheckIter(iter, "box", "c");
1161
- rocksdb_iter_get_error(iter, &err);
1162
- CheckNoError(err);
1163
- rocksdb_iter_destroy(iter);
1164
- rocksdb_writebatch_wi_destroy(wbi);
1165
- }
1166
-
1167
- StartPhase("multiget");
1168
- {
1169
- const char* keys[3] = {"box", "foo", "notfound"};
1170
- const size_t keys_sizes[3] = {3, 3, 8};
1171
- char* vals[3];
1172
- size_t vals_sizes[3];
1173
- char* errs[3];
1174
- const char* expected[3] = {"c", "hello", NULL};
1175
- rocksdb_multi_get(db, roptions, 3, keys, keys_sizes, vals, vals_sizes,
1176
- errs);
1177
- CheckMultiGetValues(3, vals, vals_sizes, errs, expected);
1178
- }
1179
-
1180
- StartPhase("pin_get");
1181
- {
1182
- CheckPinGet(db, roptions, "box", "c");
1183
- CheckPinGet(db, roptions, "foo", "hello");
1184
- CheckPinGet(db, roptions, "notfound", NULL);
1185
- }
1186
-
1187
- StartPhase("approximate_sizes");
1188
- {
1189
- int i;
1190
- int n = 20000;
1191
- char keybuf[100];
1192
- char valbuf[100];
1193
- uint64_t sizes[2];
1194
- const char* start[2] = {"a", "k00000000000000010000"};
1195
- size_t start_len[2] = {1, 21};
1196
- const char* limit[2] = {"k00000000000000010000", "z"};
1197
- size_t limit_len[2] = {21, 1};
1198
- rocksdb_writeoptions_set_sync(woptions, 0);
1199
- for (i = 0; i < n; i++) {
1200
- snprintf(keybuf, sizeof(keybuf), "k%020d", i);
1201
- snprintf(valbuf, sizeof(valbuf), "v%020d", i);
1202
- rocksdb_put(db, woptions, keybuf, strlen(keybuf), valbuf, strlen(valbuf),
1203
- &err);
1204
- CheckNoError(err);
1205
- }
1206
- rocksdb_approximate_sizes(db, 2, start, start_len, limit, limit_len, sizes,
1207
- &err);
1208
- CheckNoError(err);
1209
- CheckCondition(sizes[0] > 0);
1210
- CheckCondition(sizes[1] > 0);
1211
- }
1212
-
1213
- StartPhase("property");
1214
- {
1215
- char* prop = rocksdb_property_value(db, "nosuchprop");
1216
- CheckCondition(prop == NULL);
1217
- prop = rocksdb_property_value(db, "rocksdb.stats");
1218
- CheckCondition(prop != NULL);
1219
- Free(&prop);
1220
- }
1221
-
1222
- StartPhase("snapshot");
1223
- {
1224
- const rocksdb_snapshot_t* snap;
1225
- snap = rocksdb_create_snapshot(db);
1226
- rocksdb_delete(db, woptions, "foo", 3, &err);
1227
- CheckNoError(err);
1228
- rocksdb_readoptions_set_snapshot(roptions, snap);
1229
- CheckGet(db, roptions, "foo", "hello");
1230
- rocksdb_readoptions_set_snapshot(roptions, NULL);
1231
- CheckGet(db, roptions, "foo", NULL);
1232
- rocksdb_release_snapshot(db, snap);
1233
- }
1234
- StartPhase("snapshot_with_memtable_inplace_update");
1235
- {
1236
- rocksdb_close(db);
1237
- const rocksdb_snapshot_t* snap = NULL;
1238
- const char* s_key = "foo_snap";
1239
- const char* value1 = "hello_s1";
1240
- const char* value2 = "hello_s2";
1241
- rocksdb_options_set_allow_concurrent_memtable_write(options, 0);
1242
- rocksdb_options_set_inplace_update_support(options, 1);
1243
- rocksdb_options_set_error_if_exists(options, 0);
1244
- db = rocksdb_open(options, dbname, &err);
1245
- CheckNoError(err);
1246
- rocksdb_put(db, woptions, s_key, 8, value1, 8, &err);
1247
- snap = rocksdb_create_snapshot(db);
1248
- assert(snap != NULL);
1249
- rocksdb_put(db, woptions, s_key, 8, value2, 8, &err);
1250
- CheckNoError(err);
1251
- rocksdb_readoptions_set_snapshot(roptions, snap);
1252
- CheckGet(db, roptions, "foo", NULL);
1253
- // snapshot syntax is invalid, because of inplace update supported is set
1254
- CheckGet(db, roptions, s_key, value2);
1255
- // restore the data and options
1256
- rocksdb_delete(db, woptions, s_key, 8, &err);
1257
- CheckGet(db, roptions, s_key, NULL);
1258
- rocksdb_release_snapshot(db, snap);
1259
- rocksdb_readoptions_set_snapshot(roptions, NULL);
1260
- rocksdb_options_set_inplace_update_support(options, 0);
1261
- rocksdb_options_set_allow_concurrent_memtable_write(options, 1);
1262
- rocksdb_options_set_error_if_exists(options, 1);
1263
- }
1264
- StartPhase("repair");
1265
- {
1266
- // If we do not compact here, then the lazy deletion of
1267
- // files (https://reviews.facebook.net/D6123) would leave
1268
- // around deleted files and the repair process will find
1269
- // those files and put them back into the database.
1270
- rocksdb_compact_range(db, NULL, 0, NULL, 0);
1271
- rocksdb_close(db);
1272
- rocksdb_options_set_create_if_missing(options, 0);
1273
- rocksdb_options_set_error_if_exists(options, 0);
1274
- rocksdb_options_set_wal_recovery_mode(options, 2);
1275
- rocksdb_repair_db(options, dbname, &err);
1276
- CheckNoError(err);
1277
- db = rocksdb_open(options, dbname, &err);
1278
- CheckNoError(err);
1279
- CheckGet(db, roptions, "foo", NULL);
1280
- CheckGet(db, roptions, "bar", NULL);
1281
- CheckGet(db, roptions, "box", "c");
1282
- rocksdb_options_set_create_if_missing(options, 1);
1283
- rocksdb_options_set_error_if_exists(options, 1);
1284
- }
1285
-
1286
- StartPhase("filter");
1287
- for (run = 1; run <= 4; run++) {
1288
- // run=0 uses custom filter (not currently supported)
1289
- // run=1 uses old block-based bloom filter
1290
- // run=2 run uses full bloom filter
1291
- // run=3 uses Ribbon
1292
- // run=4 uses Ribbon-Bloom hybrid configuration
1293
- CheckNoError(err);
1294
- rocksdb_filterpolicy_t* policy;
1295
- if (run == 1) {
1296
- policy = rocksdb_filterpolicy_create_bloom(8.0);
1297
- } else if (run == 2) {
1298
- policy = rocksdb_filterpolicy_create_bloom_full(8.0);
1299
- } else if (run == 3) {
1300
- policy = rocksdb_filterpolicy_create_ribbon(8.0);
1301
- } else {
1302
- policy = rocksdb_filterpolicy_create_ribbon_hybrid(8.0, 1);
1303
- }
1304
- rocksdb_block_based_options_set_filter_policy(table_options, policy);
1305
-
1306
- // Create new database
1307
- rocksdb_close(db);
1308
- rocksdb_destroy_db(options, dbname, &err);
1309
- rocksdb_options_set_block_based_table_factory(options, table_options);
1310
- db = rocksdb_open(options, dbname, &err);
1311
- CheckNoError(err);
1312
- rocksdb_put(db, woptions, "foo", 3, "foovalue", 8, &err);
1313
- CheckNoError(err);
1314
- rocksdb_put(db, woptions, "bar", 3, "barvalue", 8, &err);
1315
- CheckNoError(err);
1316
-
1317
- {
1318
- // Add enough keys to get just one reasonably populated Bloom filter
1319
- const int keys_to_add = 1500;
1320
- int i;
1321
- char keybuf[100];
1322
- for (i = 0; i < keys_to_add; i++) {
1323
- snprintf(keybuf, sizeof(keybuf), "yes%020d", i);
1324
- rocksdb_put(db, woptions, keybuf, strlen(keybuf), "val", 3, &err);
1325
- CheckNoError(err);
1326
- }
1327
- }
1328
- rocksdb_compact_range(db, NULL, 0, NULL, 0);
1329
-
1330
- CheckGet(db, roptions, "foo", "foovalue");
1331
- CheckGet(db, roptions, "bar", "barvalue");
1332
-
1333
- {
1334
- // Query some keys not added to identify Bloom filter implementation
1335
- // from false positive queries, using perfcontext to detect Bloom
1336
- // filter behavior
1337
- rocksdb_perfcontext_t* perf = rocksdb_perfcontext_create();
1338
- rocksdb_perfcontext_reset(perf);
1339
-
1340
- const int keys_to_query = 10000;
1341
- int i;
1342
- char keybuf[100];
1343
- for (i = 0; i < keys_to_query; i++) {
1344
- snprintf(keybuf, sizeof(keybuf), "no%020d", i);
1345
- CheckGet(db, roptions, keybuf, NULL);
1346
- }
1347
-
1348
- const int hits =
1349
- (int)rocksdb_perfcontext_metric(perf, rocksdb_bloom_sst_hit_count);
1350
- if (run == 0) {
1351
- // Due to half true, half false with fake filter result
1352
- CheckCondition(hits == keys_to_query / 2);
1353
- } else if (run == 1 || run == 2 || run == 4) {
1354
- // For run == 1, block-based Bloom is no longer available in public
1355
- // API; attempting to enable it enables full Bloom instead.
1356
- //
1357
- // Essentially a fingerprint of full Bloom schema, format_version=5
1358
- CheckCondition(hits == 188);
1359
- } else {
1360
- // Essentially a fingerprint of Ribbon schema
1361
- CheckCondition(hits == 226);
1362
- }
1363
- CheckCondition(
1364
- (keys_to_query - hits) ==
1365
- (int)rocksdb_perfcontext_metric(perf, rocksdb_bloom_sst_miss_count));
1366
-
1367
- rocksdb_perfcontext_destroy(perf);
1368
- }
1369
-
1370
- // Reset the policy
1371
- rocksdb_block_based_options_set_filter_policy(table_options, NULL);
1372
- rocksdb_options_set_block_based_table_factory(options, table_options);
1373
- }
1374
-
1375
- StartPhase("compaction_filter");
1376
- {
1377
- rocksdb_options_t* options_with_filter = rocksdb_options_create();
1378
- rocksdb_options_set_create_if_missing(options_with_filter, 1);
1379
- rocksdb_compactionfilter_t* cfilter;
1380
- cfilter = rocksdb_compactionfilter_create(NULL, CFilterDestroy,
1381
- CFilterFilter, CFilterName);
1382
- // Create new database
1383
- rocksdb_close(db);
1384
- rocksdb_destroy_db(options_with_filter, dbname, &err);
1385
- rocksdb_options_set_compaction_filter(options_with_filter, cfilter);
1386
- db = CheckCompaction(db, options_with_filter, roptions, woptions);
1387
-
1388
- rocksdb_options_set_compaction_filter(options_with_filter, NULL);
1389
- rocksdb_compactionfilter_destroy(cfilter);
1390
- rocksdb_options_destroy(options_with_filter);
1391
- }
1392
-
1393
- StartPhase("compaction_filter_factory");
1394
- {
1395
- rocksdb_options_t* options_with_filter_factory = rocksdb_options_create();
1396
- rocksdb_options_set_create_if_missing(options_with_filter_factory, 1);
1397
- rocksdb_compactionfilterfactory_t* factory;
1398
- factory = rocksdb_compactionfilterfactory_create(
1399
- NULL, CFilterFactoryDestroy, CFilterCreate, CFilterFactoryName);
1400
- // Create new database
1401
- rocksdb_close(db);
1402
- rocksdb_destroy_db(options_with_filter_factory, dbname, &err);
1403
- rocksdb_options_set_compaction_filter_factory(options_with_filter_factory,
1404
- factory);
1405
- db = CheckCompaction(db, options_with_filter_factory, roptions, woptions);
1406
-
1407
- rocksdb_options_set_compaction_filter_factory(options_with_filter_factory,
1408
- NULL);
1409
- rocksdb_options_destroy(options_with_filter_factory);
1410
- }
1411
-
1412
- StartPhase("merge_operator");
1413
- {
1414
- rocksdb_mergeoperator_t* merge_operator;
1415
- merge_operator = rocksdb_mergeoperator_create(
1416
- NULL, MergeOperatorDestroy, MergeOperatorFullMerge,
1417
- MergeOperatorPartialMerge, NULL, MergeOperatorName);
1418
- // Create new database
1419
- rocksdb_close(db);
1420
- rocksdb_destroy_db(options, dbname, &err);
1421
- rocksdb_options_set_merge_operator(options, merge_operator);
1422
- db = rocksdb_open(options, dbname, &err);
1423
- CheckNoError(err);
1424
- rocksdb_put(db, woptions, "foo", 3, "foovalue", 8, &err);
1425
- CheckNoError(err);
1426
- CheckGet(db, roptions, "foo", "foovalue");
1427
- rocksdb_merge(db, woptions, "foo", 3, "barvalue", 8, &err);
1428
- CheckNoError(err);
1429
- CheckGet(db, roptions, "foo", "fake");
1430
-
1431
- // Merge of a non-existing value
1432
- rocksdb_merge(db, woptions, "bar", 3, "barvalue", 8, &err);
1433
- CheckNoError(err);
1434
- CheckGet(db, roptions, "bar", "fake");
1435
- }
1436
-
1437
- StartPhase("columnfamilies");
1438
- {
1439
- rocksdb_close(db);
1440
- rocksdb_destroy_db(options, dbname, &err);
1441
- CheckNoError(err);
1442
-
1443
- rocksdb_options_t* db_options = rocksdb_options_create();
1444
- rocksdb_options_set_create_if_missing(db_options, 1);
1445
- db = rocksdb_open(db_options, dbname, &err);
1446
- CheckNoError(err);
1447
- rocksdb_close(db);
1448
- {
1449
- const char* expected_cf_names[1] = {"default"};
1450
- LoadAndCheckLatestOptions(dbname, env, false, cache, NULL, 1,
1451
- expected_cf_names, NULL);
1452
- }
1453
-
1454
- rocksdb_options_set_create_if_missing(db_options, 0);
1455
- db = rocksdb_open(db_options, dbname, &err);
1456
- rocksdb_column_family_handle_t* cfh;
1457
- cfh = rocksdb_create_column_family(db, db_options, "cf1", &err);
1458
- rocksdb_column_family_handle_destroy(cfh);
1459
- CheckNoError(err);
1460
- rocksdb_close(db);
1461
-
1462
- size_t cflen;
1463
- char** column_fams =
1464
- rocksdb_list_column_families(db_options, dbname, &cflen, &err);
1465
- CheckNoError(err);
1466
- CheckEqual("default", column_fams[0], 7);
1467
- CheckEqual("cf1", column_fams[1], 3);
1468
- CheckCondition(cflen == 2);
1469
- rocksdb_list_column_families_destroy(column_fams, cflen);
1470
-
1471
- rocksdb_options_t* cf_options = rocksdb_options_create();
1472
-
1473
- const char* cf_names[2] = {"default", "cf1"};
1474
- const rocksdb_options_t* cf_opts[2] = {cf_options, cf_options};
1475
- rocksdb_column_family_handle_t* handles[2];
1476
-
1477
- LoadAndCheckLatestOptions(dbname, env, false, cache, NULL, 2, cf_names,
1478
- NULL);
1479
-
1480
- db = rocksdb_open_column_families(db_options, dbname, 2, cf_names, cf_opts,
1481
- handles, &err);
1482
- CheckNoError(err);
1483
-
1484
- rocksdb_put_cf(db, woptions, handles[1], "foo", 3, "hello", 5, &err);
1485
- CheckNoError(err);
1486
-
1487
- rocksdb_put_cf(db, woptions, handles[1], "foobar1", 7, "hello1", 6, &err);
1488
- CheckNoError(err);
1489
- rocksdb_put_cf(db, woptions, handles[1], "foobar2", 7, "hello2", 6, &err);
1490
- CheckNoError(err);
1491
- rocksdb_put_cf(db, woptions, handles[1], "foobar3", 7, "hello3", 6, &err);
1492
- CheckNoError(err);
1493
- rocksdb_put_cf(db, woptions, handles[1], "foobar4", 7, "hello4", 6, &err);
1494
- CheckNoError(err);
1495
- rocksdb_suggest_compact_range_cf(db, handles[1], "foo", 3, "foobar9", 7,
1496
- &err);
1497
- CheckNoError(err);
1498
-
1499
- rocksdb_flushoptions_t* flush_options = rocksdb_flushoptions_create();
1500
- rocksdb_flushoptions_set_wait(flush_options, 1);
1501
- rocksdb_flush_cf(db, flush_options, handles[1], &err);
1502
- CheckNoError(err) rocksdb_flushoptions_destroy(flush_options);
1503
-
1504
- CheckGetCF(db, roptions, handles[1], "foo", "hello");
1505
- CheckPinGetCF(db, roptions, handles[1], "foo", "hello");
1506
-
1507
- rocksdb_delete_cf(db, woptions, handles[1], "foo", 3, &err);
1508
- CheckNoError(err);
1509
-
1510
- rocksdb_delete_range_cf(db, woptions, handles[1], "foobar2", 7, "foobar4",
1511
- 7, &err);
1512
- CheckNoError(err);
1513
-
1514
- CheckGetCF(db, roptions, handles[1], "foo", NULL);
1515
- CheckPinGetCF(db, roptions, handles[1], "foo", NULL);
1516
-
1517
- rocksdb_writebatch_t* wb = rocksdb_writebatch_create();
1518
- rocksdb_writebatch_put_cf(wb, handles[1], "baz", 3, "a", 1);
1519
- rocksdb_writebatch_clear(wb);
1520
- rocksdb_writebatch_put_cf(wb, handles[1], "bar", 3, "b", 1);
1521
- rocksdb_writebatch_put_cf(wb, handles[1], "box", 3, "c", 1);
1522
- rocksdb_writebatch_put_cf(wb, handles[1], "buff", 4, "rocksdb", 7);
1523
- rocksdb_writebatch_delete_cf(wb, handles[1], "bar", 3);
1524
- rocksdb_write(db, woptions, wb, &err);
1525
- CheckNoError(err);
1526
- CheckGetCF(db, roptions, handles[1], "baz", NULL);
1527
- CheckGetCF(db, roptions, handles[1], "bar", NULL);
1528
- CheckGetCF(db, roptions, handles[1], "box", "c");
1529
- CheckGetCF(db, roptions, handles[1], "buff", "rocksdb");
1530
- CheckPinGetCF(db, roptions, handles[1], "baz", NULL);
1531
- CheckPinGetCF(db, roptions, handles[1], "bar", NULL);
1532
- CheckPinGetCF(db, roptions, handles[1], "box", "c");
1533
- CheckPinGetCF(db, roptions, handles[1], "buff", "rocksdb");
1534
- rocksdb_writebatch_destroy(wb);
1535
-
1536
- rocksdb_flush_wal(db, 1, &err);
1537
- CheckNoError(err);
1538
-
1539
- const char* keys[3] = {"box", "box", "barfooxx"};
1540
- const rocksdb_column_family_handle_t* get_handles[3] = {
1541
- handles[0], handles[1], handles[1]};
1542
- const size_t keys_sizes[3] = {3, 3, 8};
1543
- char* vals[3];
1544
- size_t vals_sizes[3];
1545
- char* errs[3];
1546
- rocksdb_multi_get_cf(db, roptions, get_handles, 3, keys, keys_sizes, vals,
1547
- vals_sizes, errs);
1548
-
1549
- int i;
1550
- for (i = 0; i < 3; i++) {
1551
- CheckEqual(NULL, errs[i], 0);
1552
- switch (i) {
1553
- case 0:
1554
- CheckEqual(NULL, vals[i], vals_sizes[i]); // wrong cf
1555
- break;
1556
- case 1:
1557
- CheckEqual("c", vals[i], vals_sizes[i]); // bingo
1558
- break;
1559
- case 2:
1560
- CheckEqual(NULL, vals[i], vals_sizes[i]); // normal not found
1561
- break;
1562
- }
1563
- Free(&vals[i]);
1564
- }
1565
-
1566
- {
1567
- const char* batched_keys[4] = {"box", "buff", "barfooxx", "box"};
1568
- const size_t batched_keys_sizes[4] = {3, 4, 8, 3};
1569
- const char* expected_value[4] = {"c", "rocksdb", NULL, "c"};
1570
- char* batched_errs[4];
1571
-
1572
- rocksdb_pinnableslice_t* pvals[4];
1573
- rocksdb_batched_multi_get_cf(db, roptions, handles[1], 4, batched_keys,
1574
- batched_keys_sizes, pvals, batched_errs,
1575
- false);
1576
- const char* val;
1577
- size_t val_len;
1578
- for (i = 0; i < 4; ++i) {
1579
- val = rocksdb_pinnableslice_value(pvals[i], &val_len);
1580
- CheckNoError(batched_errs[i]);
1581
- CheckEqual(expected_value[i], val, val_len);
1582
- rocksdb_pinnableslice_destroy(pvals[i]);
1583
- }
1584
- }
1585
-
1586
- {
1587
- unsigned char value_found = 0;
1588
-
1589
- CheckCondition(!rocksdb_key_may_exist(db, roptions, "invalid_key", 11,
1590
- NULL, NULL, NULL, 0, NULL));
1591
- CheckCondition(!rocksdb_key_may_exist(db, roptions, "invalid_key", 11,
1592
- &vals[0], &vals_sizes[0], NULL, 0,
1593
- &value_found));
1594
- if (value_found) {
1595
- Free(&vals[0]);
1596
- }
1597
-
1598
- CheckCondition(!rocksdb_key_may_exist_cf(db, roptions, handles[1],
1599
- "invalid_key", 11, NULL, NULL,
1600
- NULL, 0, NULL));
1601
- CheckCondition(!rocksdb_key_may_exist_cf(db, roptions, handles[1],
1602
- "invalid_key", 11, &vals[0],
1603
- &vals_sizes[0], NULL, 0, NULL));
1604
- if (value_found) {
1605
- Free(&vals[0]);
1606
- }
1607
- }
1608
-
1609
- rocksdb_iterator_t* iter =
1610
- rocksdb_create_iterator_cf(db, roptions, handles[1]);
1611
- CheckCondition(!rocksdb_iter_valid(iter));
1612
- rocksdb_iter_seek_to_first(iter);
1613
- CheckCondition(rocksdb_iter_valid(iter));
1614
-
1615
- for (i = 0; rocksdb_iter_valid(iter) != 0; rocksdb_iter_next(iter)) {
1616
- i++;
1617
- }
1618
- CheckCondition(i == 4);
1619
- rocksdb_iter_get_error(iter, &err);
1620
- CheckNoError(err);
1621
- rocksdb_iter_destroy(iter);
1622
-
1623
- rocksdb_column_family_handle_t* iters_cf_handles[2] = {handles[0],
1624
- handles[1]};
1625
- rocksdb_iterator_t* iters_handles[2];
1626
- rocksdb_create_iterators(db, roptions, iters_cf_handles, iters_handles, 2,
1627
- &err);
1628
- CheckNoError(err);
1629
-
1630
- iter = iters_handles[0];
1631
- CheckCondition(!rocksdb_iter_valid(iter));
1632
- rocksdb_iter_seek_to_first(iter);
1633
- CheckCondition(!rocksdb_iter_valid(iter));
1634
- rocksdb_iter_destroy(iter);
1635
-
1636
- iter = iters_handles[1];
1637
- CheckCondition(!rocksdb_iter_valid(iter));
1638
- rocksdb_iter_seek_to_first(iter);
1639
- CheckCondition(rocksdb_iter_valid(iter));
1640
-
1641
- for (i = 0; rocksdb_iter_valid(iter) != 0; rocksdb_iter_next(iter)) {
1642
- i++;
1643
- }
1644
- CheckCondition(i == 4);
1645
- rocksdb_iter_get_error(iter, &err);
1646
- CheckNoError(err);
1647
- rocksdb_iter_destroy(iter);
1648
-
1649
- GetAndCheckMetaDataCf(db, handles[1], cf_names[1]);
1650
-
1651
- rocksdb_drop_column_family(db, handles[1], &err);
1652
- CheckNoError(err);
1653
- for (i = 0; i < 2; i++) {
1654
- rocksdb_column_family_handle_destroy(handles[i]);
1655
- }
1656
- rocksdb_close(db);
1657
- {
1658
- // As column family has been dropped, we expect only one column family.
1659
- const char* expected_cf_names[1] = {"default"};
1660
- LoadAndCheckLatestOptions(dbname, env, false, cache, NULL, 1,
1661
- expected_cf_names, NULL);
1662
- }
1663
- rocksdb_destroy_db(options, dbname, &err);
1664
- rocksdb_options_destroy(db_options);
1665
- rocksdb_options_destroy(cf_options);
1666
- }
1667
-
1668
- StartPhase("prefix");
1669
- {
1670
- // Create new database
1671
- rocksdb_options_set_allow_mmap_reads(options, 1);
1672
- rocksdb_options_set_prefix_extractor(
1673
- options, rocksdb_slicetransform_create_fixed_prefix(3));
1674
- rocksdb_options_set_hash_skip_list_rep(options, 5000, 4, 4);
1675
- rocksdb_options_set_plain_table_factory(options, 4, 10, 0.75, 16);
1676
- rocksdb_options_set_allow_concurrent_memtable_write(options, 0);
1677
-
1678
- db = rocksdb_open(options, dbname, &err);
1679
- CheckNoError(err);
1680
-
1681
- rocksdb_put(db, woptions, "foo1", 4, "foo", 3, &err);
1682
- CheckNoError(err);
1683
- rocksdb_put(db, woptions, "foo2", 4, "foo", 3, &err);
1684
- CheckNoError(err);
1685
- rocksdb_put(db, woptions, "foo3", 4, "foo", 3, &err);
1686
- CheckNoError(err);
1687
- rocksdb_put(db, woptions, "bar1", 4, "bar", 3, &err);
1688
- CheckNoError(err);
1689
- rocksdb_put(db, woptions, "bar2", 4, "bar", 3, &err);
1690
- CheckNoError(err);
1691
- rocksdb_put(db, woptions, "bar3", 4, "bar", 3, &err);
1692
- CheckNoError(err);
1693
-
1694
- rocksdb_iterator_t* iter = rocksdb_create_iterator(db, roptions);
1695
- CheckCondition(!rocksdb_iter_valid(iter));
1696
-
1697
- rocksdb_iter_seek(iter, "bar", 3);
1698
- rocksdb_iter_get_error(iter, &err);
1699
- CheckNoError(err);
1700
- CheckCondition(rocksdb_iter_valid(iter));
1701
-
1702
- CheckIter(iter, "bar1", "bar");
1703
- rocksdb_iter_next(iter);
1704
- CheckIter(iter, "bar2", "bar");
1705
- rocksdb_iter_next(iter);
1706
- CheckIter(iter, "bar3", "bar");
1707
- rocksdb_iter_get_error(iter, &err);
1708
- CheckNoError(err);
1709
- rocksdb_iter_destroy(iter);
1710
-
1711
- rocksdb_readoptions_set_total_order_seek(roptions, 1);
1712
- iter = rocksdb_create_iterator(db, roptions);
1713
- CheckCondition(!rocksdb_iter_valid(iter));
1714
-
1715
- rocksdb_iter_seek(iter, "ba", 2);
1716
- rocksdb_iter_get_error(iter, &err);
1717
- CheckNoError(err);
1718
- CheckCondition(rocksdb_iter_valid(iter));
1719
- CheckIter(iter, "bar1", "bar");
1720
-
1721
- rocksdb_iter_destroy(iter);
1722
- rocksdb_readoptions_set_total_order_seek(roptions, 0);
1723
-
1724
- rocksdb_close(db);
1725
-
1726
- {
1727
- const char* expected_cf_names[1] = {"default"};
1728
- LoadAndCheckLatestOptions(dbname, env, false, cache, NULL, 1,
1729
- expected_cf_names,
1730
- "Invalid argument: leveldb.BytewiseComparator: "
1731
- "does not match existing comparator foo");
1732
- LoadAndCheckLatestOptions(dbname, env, false, cache, cmp, 1,
1733
- expected_cf_names, NULL);
1734
- }
1735
- rocksdb_destroy_db(options, dbname, &err);
1736
- }
1737
-
1738
- // Check memory usage stats
1739
- StartPhase("approximate_memory_usage");
1740
- {
1741
- // Create database
1742
- db = rocksdb_open(options, dbname, &err);
1743
- CheckNoError(err);
1744
-
1745
- rocksdb_memory_consumers_t* consumers;
1746
- consumers = rocksdb_memory_consumers_create();
1747
- rocksdb_memory_consumers_add_db(consumers, db);
1748
- rocksdb_memory_consumers_add_cache(consumers, cache);
1749
-
1750
- // take memory usage report before write-read operation
1751
- rocksdb_memory_usage_t* mu1;
1752
- mu1 = rocksdb_approximate_memory_usage_create(consumers, &err);
1753
- CheckNoError(err);
1754
-
1755
- // Put data (this should affect memtables)
1756
- rocksdb_put(db, woptions, "memory", 6, "test", 4, &err);
1757
- CheckNoError(err);
1758
- CheckGet(db, roptions, "memory", "test");
1759
-
1760
- // take memory usage report after write-read operation
1761
- rocksdb_memory_usage_t* mu2;
1762
- mu2 = rocksdb_approximate_memory_usage_create(consumers, &err);
1763
- CheckNoError(err);
1764
-
1765
- // amount of memory used within memtables should grow
1766
- CheckCondition(rocksdb_approximate_memory_usage_get_mem_table_total(mu2) >=
1767
- rocksdb_approximate_memory_usage_get_mem_table_total(mu1));
1768
- CheckCondition(
1769
- rocksdb_approximate_memory_usage_get_mem_table_unflushed(mu2) >=
1770
- rocksdb_approximate_memory_usage_get_mem_table_unflushed(mu1));
1771
-
1772
- rocksdb_memory_consumers_destroy(consumers);
1773
- rocksdb_approximate_memory_usage_destroy(mu1);
1774
- rocksdb_approximate_memory_usage_destroy(mu2);
1775
- rocksdb_close(db);
1776
- rocksdb_destroy_db(options, dbname, &err);
1777
- CheckNoError(err);
1778
- }
1779
-
1780
- StartPhase("cuckoo_options");
1781
- {
1782
- rocksdb_cuckoo_table_options_t* cuckoo_options;
1783
- cuckoo_options = rocksdb_cuckoo_options_create();
1784
- rocksdb_cuckoo_options_set_hash_ratio(cuckoo_options, 0.5);
1785
- rocksdb_cuckoo_options_set_max_search_depth(cuckoo_options, 200);
1786
- rocksdb_cuckoo_options_set_cuckoo_block_size(cuckoo_options, 10);
1787
- rocksdb_cuckoo_options_set_identity_as_first_hash(cuckoo_options, 1);
1788
- rocksdb_cuckoo_options_set_use_module_hash(cuckoo_options, 0);
1789
- rocksdb_options_set_cuckoo_table_factory(options, cuckoo_options);
1790
-
1791
- db = rocksdb_open(options, dbname, &err);
1792
- CheckNoError(err);
1793
-
1794
- rocksdb_cuckoo_options_destroy(cuckoo_options);
1795
- }
1796
-
1797
- StartPhase("options");
1798
- {
1799
- rocksdb_options_t* o;
1800
- o = rocksdb_options_create();
1801
-
1802
- // Set and check options.
1803
- rocksdb_options_set_allow_ingest_behind(o, 1);
1804
- CheckCondition(1 == rocksdb_options_get_allow_ingest_behind(o));
1805
-
1806
- rocksdb_options_compaction_readahead_size(o, 10);
1807
- CheckCondition(10 == rocksdb_options_get_compaction_readahead_size(o));
1808
-
1809
- rocksdb_options_set_create_if_missing(o, 1);
1810
- CheckCondition(1 == rocksdb_options_get_create_if_missing(o));
1811
-
1812
- rocksdb_options_set_create_missing_column_families(o, 1);
1813
- CheckCondition(1 == rocksdb_options_get_create_missing_column_families(o));
1814
-
1815
- rocksdb_options_set_error_if_exists(o, 1);
1816
- CheckCondition(1 == rocksdb_options_get_error_if_exists(o));
1817
-
1818
- rocksdb_options_set_paranoid_checks(o, 1);
1819
- CheckCondition(1 == rocksdb_options_get_paranoid_checks(o));
1820
-
1821
- rocksdb_options_set_info_log_level(o, 3);
1822
- CheckCondition(3 == rocksdb_options_get_info_log_level(o));
1823
-
1824
- rocksdb_options_set_write_buffer_size(o, 100);
1825
- CheckCondition(100 == rocksdb_options_get_write_buffer_size(o));
1826
-
1827
- rocksdb_options_set_db_write_buffer_size(o, 1000);
1828
- CheckCondition(1000 == rocksdb_options_get_db_write_buffer_size(o));
1829
-
1830
- rocksdb_options_set_max_open_files(o, 21);
1831
- CheckCondition(21 == rocksdb_options_get_max_open_files(o));
1832
-
1833
- rocksdb_options_set_max_file_opening_threads(o, 5);
1834
- CheckCondition(5 == rocksdb_options_get_max_file_opening_threads(o));
1835
-
1836
- rocksdb_options_set_max_total_wal_size(o, 400);
1837
- CheckCondition(400 == rocksdb_options_get_max_total_wal_size(o));
1838
-
1839
- rocksdb_options_set_num_levels(o, 7);
1840
- CheckCondition(7 == rocksdb_options_get_num_levels(o));
1841
-
1842
- rocksdb_options_set_level0_file_num_compaction_trigger(o, 4);
1843
- CheckCondition(4 ==
1844
- rocksdb_options_get_level0_file_num_compaction_trigger(o));
1845
-
1846
- rocksdb_options_set_level0_slowdown_writes_trigger(o, 6);
1847
- CheckCondition(6 == rocksdb_options_get_level0_slowdown_writes_trigger(o));
1848
-
1849
- rocksdb_options_set_level0_stop_writes_trigger(o, 8);
1850
- CheckCondition(8 == rocksdb_options_get_level0_stop_writes_trigger(o));
1851
-
1852
- rocksdb_options_set_target_file_size_base(o, 256);
1853
- CheckCondition(256 == rocksdb_options_get_target_file_size_base(o));
1854
-
1855
- rocksdb_options_set_target_file_size_multiplier(o, 3);
1856
- CheckCondition(3 == rocksdb_options_get_target_file_size_multiplier(o));
1857
-
1858
- rocksdb_options_set_max_bytes_for_level_base(o, 1024);
1859
- CheckCondition(1024 == rocksdb_options_get_max_bytes_for_level_base(o));
1860
-
1861
- rocksdb_options_set_level_compaction_dynamic_level_bytes(o, 1);
1862
- CheckCondition(1 ==
1863
- rocksdb_options_get_level_compaction_dynamic_level_bytes(o));
1864
-
1865
- rocksdb_options_set_max_bytes_for_level_multiplier(o, 2.0);
1866
- CheckCondition(2.0 ==
1867
- rocksdb_options_get_max_bytes_for_level_multiplier(o));
1868
-
1869
- rocksdb_options_set_skip_stats_update_on_db_open(o, 1);
1870
- CheckCondition(1 == rocksdb_options_get_skip_stats_update_on_db_open(o));
1871
-
1872
- rocksdb_options_set_skip_checking_sst_file_sizes_on_db_open(o, 1);
1873
- CheckCondition(
1874
- 1 == rocksdb_options_get_skip_checking_sst_file_sizes_on_db_open(o));
1875
-
1876
- rocksdb_options_set_max_write_buffer_number(o, 97);
1877
- CheckCondition(97 == rocksdb_options_get_max_write_buffer_number(o));
1878
-
1879
- rocksdb_options_set_min_write_buffer_number_to_merge(o, 23);
1880
- CheckCondition(23 ==
1881
- rocksdb_options_get_min_write_buffer_number_to_merge(o));
1882
-
1883
- rocksdb_options_set_max_write_buffer_number_to_maintain(o, 64);
1884
- CheckCondition(64 ==
1885
- rocksdb_options_get_max_write_buffer_number_to_maintain(o));
1886
-
1887
- rocksdb_options_set_max_write_buffer_size_to_maintain(o, 50000);
1888
- CheckCondition(50000 ==
1889
- rocksdb_options_get_max_write_buffer_size_to_maintain(o));
1890
-
1891
- rocksdb_options_set_enable_pipelined_write(o, 1);
1892
- CheckCondition(1 == rocksdb_options_get_enable_pipelined_write(o));
1893
-
1894
- rocksdb_options_set_unordered_write(o, 1);
1895
- CheckCondition(1 == rocksdb_options_get_unordered_write(o));
1896
-
1897
- rocksdb_options_set_max_subcompactions(o, 123456);
1898
- CheckCondition(123456 == rocksdb_options_get_max_subcompactions(o));
1899
-
1900
- rocksdb_options_set_max_background_jobs(o, 2);
1901
- CheckCondition(2 == rocksdb_options_get_max_background_jobs(o));
1902
-
1903
- rocksdb_options_set_max_background_compactions(o, 3);
1904
- CheckCondition(3 == rocksdb_options_get_max_background_compactions(o));
1905
-
1906
- rocksdb_options_set_max_background_flushes(o, 5);
1907
- CheckCondition(5 == rocksdb_options_get_max_background_flushes(o));
1908
-
1909
- rocksdb_options_set_max_log_file_size(o, 6);
1910
- CheckCondition(6 == rocksdb_options_get_max_log_file_size(o));
1911
-
1912
- rocksdb_options_set_log_file_time_to_roll(o, 7);
1913
- CheckCondition(7 == rocksdb_options_get_log_file_time_to_roll(o));
1914
-
1915
- rocksdb_options_set_keep_log_file_num(o, 8);
1916
- CheckCondition(8 == rocksdb_options_get_keep_log_file_num(o));
1917
-
1918
- rocksdb_options_set_recycle_log_file_num(o, 9);
1919
- CheckCondition(9 == rocksdb_options_get_recycle_log_file_num(o));
1920
-
1921
- rocksdb_options_set_soft_pending_compaction_bytes_limit(o, 10);
1922
- CheckCondition(10 ==
1923
- rocksdb_options_get_soft_pending_compaction_bytes_limit(o));
1924
-
1925
- rocksdb_options_set_hard_pending_compaction_bytes_limit(o, 11);
1926
- CheckCondition(11 ==
1927
- rocksdb_options_get_hard_pending_compaction_bytes_limit(o));
1928
-
1929
- rocksdb_options_set_max_manifest_file_size(o, 12);
1930
- CheckCondition(12 == rocksdb_options_get_max_manifest_file_size(o));
1931
-
1932
- rocksdb_options_set_table_cache_numshardbits(o, 13);
1933
- CheckCondition(13 == rocksdb_options_get_table_cache_numshardbits(o));
1934
-
1935
- rocksdb_options_set_arena_block_size(o, 14);
1936
- CheckCondition(14 == rocksdb_options_get_arena_block_size(o));
1937
-
1938
- rocksdb_options_set_use_fsync(o, 1);
1939
- CheckCondition(1 == rocksdb_options_get_use_fsync(o));
1940
-
1941
- rocksdb_options_set_WAL_ttl_seconds(o, 15);
1942
- CheckCondition(15 == rocksdb_options_get_WAL_ttl_seconds(o));
1943
-
1944
- rocksdb_options_set_WAL_size_limit_MB(o, 16);
1945
- CheckCondition(16 == rocksdb_options_get_WAL_size_limit_MB(o));
1946
-
1947
- rocksdb_options_set_manifest_preallocation_size(o, 17);
1948
- CheckCondition(17 == rocksdb_options_get_manifest_preallocation_size(o));
1949
-
1950
- rocksdb_options_set_allow_mmap_reads(o, 1);
1951
- CheckCondition(1 == rocksdb_options_get_allow_mmap_reads(o));
1952
-
1953
- rocksdb_options_set_allow_mmap_writes(o, 1);
1954
- CheckCondition(1 == rocksdb_options_get_allow_mmap_writes(o));
1955
-
1956
- rocksdb_options_set_use_direct_reads(o, 1);
1957
- CheckCondition(1 == rocksdb_options_get_use_direct_reads(o));
1958
-
1959
- rocksdb_options_set_use_direct_io_for_flush_and_compaction(o, 1);
1960
- CheckCondition(
1961
- 1 == rocksdb_options_get_use_direct_io_for_flush_and_compaction(o));
1962
-
1963
- rocksdb_options_set_is_fd_close_on_exec(o, 1);
1964
- CheckCondition(1 == rocksdb_options_get_is_fd_close_on_exec(o));
1965
-
1966
- rocksdb_options_set_stats_dump_period_sec(o, 18);
1967
- CheckCondition(18 == rocksdb_options_get_stats_dump_period_sec(o));
1968
-
1969
- rocksdb_options_set_stats_persist_period_sec(o, 5);
1970
- CheckCondition(5 == rocksdb_options_get_stats_persist_period_sec(o));
1971
-
1972
- rocksdb_options_set_advise_random_on_open(o, 1);
1973
- CheckCondition(1 == rocksdb_options_get_advise_random_on_open(o));
1974
-
1975
- rocksdb_options_set_access_hint_on_compaction_start(o, 3);
1976
- CheckCondition(3 == rocksdb_options_get_access_hint_on_compaction_start(o));
1977
-
1978
- rocksdb_options_set_use_adaptive_mutex(o, 1);
1979
- CheckCondition(1 == rocksdb_options_get_use_adaptive_mutex(o));
1980
-
1981
- rocksdb_options_set_bytes_per_sync(o, 19);
1982
- CheckCondition(19 == rocksdb_options_get_bytes_per_sync(o));
1983
-
1984
- rocksdb_options_set_wal_bytes_per_sync(o, 20);
1985
- CheckCondition(20 == rocksdb_options_get_wal_bytes_per_sync(o));
1986
-
1987
- rocksdb_options_set_writable_file_max_buffer_size(o, 21);
1988
- CheckCondition(21 == rocksdb_options_get_writable_file_max_buffer_size(o));
1989
-
1990
- rocksdb_options_set_allow_concurrent_memtable_write(o, 1);
1991
- CheckCondition(1 == rocksdb_options_get_allow_concurrent_memtable_write(o));
1992
-
1993
- rocksdb_options_set_enable_write_thread_adaptive_yield(o, 1);
1994
- CheckCondition(1 ==
1995
- rocksdb_options_get_enable_write_thread_adaptive_yield(o));
1996
-
1997
- rocksdb_options_set_max_sequential_skip_in_iterations(o, 22);
1998
- CheckCondition(22 ==
1999
- rocksdb_options_get_max_sequential_skip_in_iterations(o));
2000
-
2001
- rocksdb_options_set_disable_auto_compactions(o, 1);
2002
- CheckCondition(1 == rocksdb_options_get_disable_auto_compactions(o));
2003
-
2004
- rocksdb_options_set_optimize_filters_for_hits(o, 1);
2005
- CheckCondition(1 == rocksdb_options_get_optimize_filters_for_hits(o));
2006
-
2007
- rocksdb_options_set_delete_obsolete_files_period_micros(o, 23);
2008
- CheckCondition(23 ==
2009
- rocksdb_options_get_delete_obsolete_files_period_micros(o));
2010
-
2011
- rocksdb_options_set_memtable_prefix_bloom_size_ratio(o, 2.0);
2012
- CheckCondition(2.0 ==
2013
- rocksdb_options_get_memtable_prefix_bloom_size_ratio(o));
2014
-
2015
- rocksdb_options_set_max_compaction_bytes(o, 24);
2016
- CheckCondition(24 == rocksdb_options_get_max_compaction_bytes(o));
2017
-
2018
- rocksdb_options_set_memtable_huge_page_size(o, 25);
2019
- CheckCondition(25 == rocksdb_options_get_memtable_huge_page_size(o));
2020
-
2021
- rocksdb_options_set_max_successive_merges(o, 26);
2022
- CheckCondition(26 == rocksdb_options_get_max_successive_merges(o));
2023
-
2024
- rocksdb_options_set_bloom_locality(o, 27);
2025
- CheckCondition(27 == rocksdb_options_get_bloom_locality(o));
2026
-
2027
- rocksdb_options_set_inplace_update_support(o, 1);
2028
- CheckCondition(1 == rocksdb_options_get_inplace_update_support(o));
2029
-
2030
- rocksdb_options_set_inplace_update_num_locks(o, 28);
2031
- CheckCondition(28 == rocksdb_options_get_inplace_update_num_locks(o));
2032
-
2033
- rocksdb_options_set_report_bg_io_stats(o, 1);
2034
- CheckCondition(1 == rocksdb_options_get_report_bg_io_stats(o));
2035
-
2036
- rocksdb_options_set_wal_recovery_mode(o, 2);
2037
- CheckCondition(2 == rocksdb_options_get_wal_recovery_mode(o));
2038
-
2039
- rocksdb_options_set_compression(o, 5);
2040
- CheckCondition(5 == rocksdb_options_get_compression(o));
2041
-
2042
- rocksdb_options_set_bottommost_compression(o, 4);
2043
- CheckCondition(4 == rocksdb_options_get_bottommost_compression(o));
2044
-
2045
- rocksdb_options_set_compaction_style(o, 2);
2046
- CheckCondition(2 == rocksdb_options_get_compaction_style(o));
2047
-
2048
- rocksdb_options_set_atomic_flush(o, 1);
2049
- CheckCondition(1 == rocksdb_options_get_atomic_flush(o));
2050
-
2051
- rocksdb_options_set_manual_wal_flush(o, 1);
2052
- CheckCondition(1 == rocksdb_options_get_manual_wal_flush(o));
2053
-
2054
- rocksdb_options_set_wal_compression(o, 1);
2055
- CheckCondition(1 == rocksdb_options_get_wal_compression(o));
2056
-
2057
- rocksdb_options_set_experimental_mempurge_threshold(o, 29.0);
2058
- CheckCondition(29.0 ==
2059
- rocksdb_options_get_experimental_mempurge_threshold(o));
2060
-
2061
- /* Blob Options */
2062
- rocksdb_options_set_enable_blob_files(o, 1);
2063
- CheckCondition(1 == rocksdb_options_get_enable_blob_files(o));
2064
-
2065
- rocksdb_options_set_min_blob_size(o, 29);
2066
- CheckCondition(29 == rocksdb_options_get_min_blob_size(o));
2067
-
2068
- rocksdb_options_set_blob_file_size(o, 30);
2069
- CheckCondition(30 == rocksdb_options_get_blob_file_size(o));
2070
-
2071
- rocksdb_options_set_blob_compression_type(o, 4);
2072
- CheckCondition(4 == rocksdb_options_get_blob_compression_type(o));
2073
-
2074
- rocksdb_options_set_enable_blob_gc(o, 1);
2075
- CheckCondition(1 == rocksdb_options_get_enable_blob_gc(o));
2076
-
2077
- rocksdb_options_set_blob_gc_age_cutoff(o, 0.5);
2078
- CheckCondition(0.5 == rocksdb_options_get_blob_gc_age_cutoff(o));
2079
-
2080
- rocksdb_options_set_blob_gc_force_threshold(o, 0.75);
2081
- CheckCondition(0.75 == rocksdb_options_get_blob_gc_force_threshold(o));
2082
-
2083
- rocksdb_options_set_blob_compaction_readahead_size(o, 262144);
2084
- CheckCondition(262144 ==
2085
- rocksdb_options_get_blob_compaction_readahead_size(o));
2086
-
2087
- rocksdb_options_set_blob_file_starting_level(o, 5);
2088
- CheckCondition(5 == rocksdb_options_get_blob_file_starting_level(o));
2089
-
2090
- rocksdb_options_set_prepopulate_blob_cache(o, 1 /* flush only */);
2091
- CheckCondition(1 == rocksdb_options_get_prepopulate_blob_cache(o));
2092
-
2093
- // Create a copy that should be equal to the original.
2094
- rocksdb_options_t* copy;
2095
- copy = rocksdb_options_create_copy(o);
2096
-
2097
- CheckCondition(1 == rocksdb_options_get_allow_ingest_behind(copy));
2098
- CheckCondition(10 == rocksdb_options_get_compaction_readahead_size(copy));
2099
- CheckCondition(1 == rocksdb_options_get_create_if_missing(copy));
2100
- CheckCondition(1 ==
2101
- rocksdb_options_get_create_missing_column_families(copy));
2102
- CheckCondition(1 == rocksdb_options_get_error_if_exists(copy));
2103
- CheckCondition(1 == rocksdb_options_get_paranoid_checks(copy));
2104
- CheckCondition(3 == rocksdb_options_get_info_log_level(copy));
2105
- CheckCondition(100 == rocksdb_options_get_write_buffer_size(copy));
2106
- CheckCondition(1000 == rocksdb_options_get_db_write_buffer_size(copy));
2107
- CheckCondition(21 == rocksdb_options_get_max_open_files(copy));
2108
- CheckCondition(5 == rocksdb_options_get_max_file_opening_threads(copy));
2109
- CheckCondition(400 == rocksdb_options_get_max_total_wal_size(copy));
2110
- CheckCondition(7 == rocksdb_options_get_num_levels(copy));
2111
- CheckCondition(
2112
- 4 == rocksdb_options_get_level0_file_num_compaction_trigger(copy));
2113
- CheckCondition(6 ==
2114
- rocksdb_options_get_level0_slowdown_writes_trigger(copy));
2115
- CheckCondition(8 == rocksdb_options_get_level0_stop_writes_trigger(copy));
2116
- CheckCondition(256 == rocksdb_options_get_target_file_size_base(copy));
2117
- CheckCondition(3 == rocksdb_options_get_target_file_size_multiplier(copy));
2118
- CheckCondition(1024 == rocksdb_options_get_max_bytes_for_level_base(copy));
2119
- CheckCondition(
2120
- 1 == rocksdb_options_get_level_compaction_dynamic_level_bytes(copy));
2121
- CheckCondition(2.0 ==
2122
- rocksdb_options_get_max_bytes_for_level_multiplier(copy));
2123
- CheckCondition(1 == rocksdb_options_get_skip_stats_update_on_db_open(copy));
2124
- CheckCondition(
2125
- 1 == rocksdb_options_get_skip_checking_sst_file_sizes_on_db_open(copy));
2126
- CheckCondition(97 == rocksdb_options_get_max_write_buffer_number(copy));
2127
- CheckCondition(23 ==
2128
- rocksdb_options_get_min_write_buffer_number_to_merge(copy));
2129
- CheckCondition(
2130
- 64 == rocksdb_options_get_max_write_buffer_number_to_maintain(copy));
2131
- CheckCondition(50000 ==
2132
- rocksdb_options_get_max_write_buffer_size_to_maintain(copy));
2133
- CheckCondition(1 == rocksdb_options_get_enable_pipelined_write(copy));
2134
- CheckCondition(1 == rocksdb_options_get_unordered_write(copy));
2135
- CheckCondition(123456 == rocksdb_options_get_max_subcompactions(copy));
2136
- CheckCondition(2 == rocksdb_options_get_max_background_jobs(copy));
2137
- CheckCondition(3 == rocksdb_options_get_max_background_compactions(copy));
2138
- CheckCondition(5 == rocksdb_options_get_max_background_flushes(copy));
2139
- CheckCondition(6 == rocksdb_options_get_max_log_file_size(copy));
2140
- CheckCondition(7 == rocksdb_options_get_log_file_time_to_roll(copy));
2141
- CheckCondition(8 == rocksdb_options_get_keep_log_file_num(copy));
2142
- CheckCondition(9 == rocksdb_options_get_recycle_log_file_num(copy));
2143
- CheckCondition(
2144
- 10 == rocksdb_options_get_soft_pending_compaction_bytes_limit(copy));
2145
- CheckCondition(
2146
- 11 == rocksdb_options_get_hard_pending_compaction_bytes_limit(copy));
2147
- CheckCondition(12 == rocksdb_options_get_max_manifest_file_size(copy));
2148
- CheckCondition(13 == rocksdb_options_get_table_cache_numshardbits(copy));
2149
- CheckCondition(14 == rocksdb_options_get_arena_block_size(copy));
2150
- CheckCondition(1 == rocksdb_options_get_use_fsync(copy));
2151
- CheckCondition(15 == rocksdb_options_get_WAL_ttl_seconds(copy));
2152
- CheckCondition(16 == rocksdb_options_get_WAL_size_limit_MB(copy));
2153
- CheckCondition(17 == rocksdb_options_get_manifest_preallocation_size(copy));
2154
- CheckCondition(1 == rocksdb_options_get_allow_mmap_reads(copy));
2155
- CheckCondition(1 == rocksdb_options_get_allow_mmap_writes(copy));
2156
- CheckCondition(1 == rocksdb_options_get_use_direct_reads(copy));
2157
- CheckCondition(
2158
- 1 == rocksdb_options_get_use_direct_io_for_flush_and_compaction(copy));
2159
- CheckCondition(1 == rocksdb_options_get_is_fd_close_on_exec(copy));
2160
- CheckCondition(18 == rocksdb_options_get_stats_dump_period_sec(copy));
2161
- CheckCondition(5 == rocksdb_options_get_stats_persist_period_sec(copy));
2162
- CheckCondition(1 == rocksdb_options_get_advise_random_on_open(copy));
2163
- CheckCondition(3 ==
2164
- rocksdb_options_get_access_hint_on_compaction_start(copy));
2165
- CheckCondition(1 == rocksdb_options_get_use_adaptive_mutex(copy));
2166
- CheckCondition(19 == rocksdb_options_get_bytes_per_sync(copy));
2167
- CheckCondition(20 == rocksdb_options_get_wal_bytes_per_sync(copy));
2168
- CheckCondition(21 ==
2169
- rocksdb_options_get_writable_file_max_buffer_size(copy));
2170
- CheckCondition(1 ==
2171
- rocksdb_options_get_allow_concurrent_memtable_write(copy));
2172
- CheckCondition(
2173
- 1 == rocksdb_options_get_enable_write_thread_adaptive_yield(copy));
2174
- CheckCondition(22 ==
2175
- rocksdb_options_get_max_sequential_skip_in_iterations(copy));
2176
- CheckCondition(1 == rocksdb_options_get_disable_auto_compactions(copy));
2177
- CheckCondition(1 == rocksdb_options_get_optimize_filters_for_hits(copy));
2178
- CheckCondition(
2179
- 23 == rocksdb_options_get_delete_obsolete_files_period_micros(copy));
2180
- CheckCondition(2.0 ==
2181
- rocksdb_options_get_memtable_prefix_bloom_size_ratio(copy));
2182
- CheckCondition(24 == rocksdb_options_get_max_compaction_bytes(copy));
2183
- CheckCondition(25 == rocksdb_options_get_memtable_huge_page_size(copy));
2184
- CheckCondition(26 == rocksdb_options_get_max_successive_merges(copy));
2185
- CheckCondition(27 == rocksdb_options_get_bloom_locality(copy));
2186
- CheckCondition(1 == rocksdb_options_get_inplace_update_support(copy));
2187
- CheckCondition(28 == rocksdb_options_get_inplace_update_num_locks(copy));
2188
- CheckCondition(1 == rocksdb_options_get_report_bg_io_stats(copy));
2189
- CheckCondition(2 == rocksdb_options_get_wal_recovery_mode(copy));
2190
- CheckCondition(5 == rocksdb_options_get_compression(copy));
2191
- CheckCondition(4 == rocksdb_options_get_bottommost_compression(copy));
2192
- CheckCondition(2 == rocksdb_options_get_compaction_style(copy));
2193
- CheckCondition(1 == rocksdb_options_get_atomic_flush(copy));
2194
- CheckCondition(29.0 ==
2195
- rocksdb_options_get_experimental_mempurge_threshold(copy));
2196
-
2197
- // Copies should be independent.
2198
- rocksdb_options_set_allow_ingest_behind(copy, 0);
2199
- CheckCondition(0 == rocksdb_options_get_allow_ingest_behind(copy));
2200
- CheckCondition(1 == rocksdb_options_get_allow_ingest_behind(o));
2201
-
2202
- rocksdb_options_compaction_readahead_size(copy, 20);
2203
- CheckCondition(20 == rocksdb_options_get_compaction_readahead_size(copy));
2204
- CheckCondition(10 == rocksdb_options_get_compaction_readahead_size(o));
2205
-
2206
- rocksdb_options_set_create_if_missing(copy, 0);
2207
- CheckCondition(0 == rocksdb_options_get_create_if_missing(copy));
2208
- CheckCondition(1 == rocksdb_options_get_create_if_missing(o));
2209
-
2210
- rocksdb_options_set_create_missing_column_families(copy, 0);
2211
- CheckCondition(0 ==
2212
- rocksdb_options_get_create_missing_column_families(copy));
2213
- CheckCondition(1 == rocksdb_options_get_create_missing_column_families(o));
2214
-
2215
- rocksdb_options_set_error_if_exists(copy, 0);
2216
- CheckCondition(0 == rocksdb_options_get_error_if_exists(copy));
2217
- CheckCondition(1 == rocksdb_options_get_error_if_exists(o));
2218
-
2219
- rocksdb_options_set_paranoid_checks(copy, 0);
2220
- CheckCondition(0 == rocksdb_options_get_paranoid_checks(copy));
2221
- CheckCondition(1 == rocksdb_options_get_paranoid_checks(o));
2222
-
2223
- rocksdb_options_set_info_log_level(copy, 2);
2224
- CheckCondition(2 == rocksdb_options_get_info_log_level(copy));
2225
- CheckCondition(3 == rocksdb_options_get_info_log_level(o));
2226
-
2227
- rocksdb_options_set_write_buffer_size(copy, 200);
2228
- CheckCondition(200 == rocksdb_options_get_write_buffer_size(copy));
2229
- CheckCondition(100 == rocksdb_options_get_write_buffer_size(o));
2230
-
2231
- rocksdb_options_set_db_write_buffer_size(copy, 2000);
2232
- CheckCondition(2000 == rocksdb_options_get_db_write_buffer_size(copy));
2233
- CheckCondition(1000 == rocksdb_options_get_db_write_buffer_size(o));
2234
-
2235
- rocksdb_options_set_max_open_files(copy, 42);
2236
- CheckCondition(42 == rocksdb_options_get_max_open_files(copy));
2237
- CheckCondition(21 == rocksdb_options_get_max_open_files(o));
2238
-
2239
- rocksdb_options_set_max_file_opening_threads(copy, 3);
2240
- CheckCondition(3 == rocksdb_options_get_max_file_opening_threads(copy));
2241
- CheckCondition(5 == rocksdb_options_get_max_file_opening_threads(o));
2242
-
2243
- rocksdb_options_set_max_total_wal_size(copy, 4000);
2244
- CheckCondition(4000 == rocksdb_options_get_max_total_wal_size(copy));
2245
- CheckCondition(400 == rocksdb_options_get_max_total_wal_size(o));
2246
-
2247
- rocksdb_options_set_num_levels(copy, 6);
2248
- CheckCondition(6 == rocksdb_options_get_num_levels(copy));
2249
- CheckCondition(7 == rocksdb_options_get_num_levels(o));
2250
-
2251
- rocksdb_options_set_level0_file_num_compaction_trigger(copy, 14);
2252
- CheckCondition(
2253
- 14 == rocksdb_options_get_level0_file_num_compaction_trigger(copy));
2254
- CheckCondition(4 ==
2255
- rocksdb_options_get_level0_file_num_compaction_trigger(o));
2256
-
2257
- rocksdb_options_set_level0_slowdown_writes_trigger(copy, 61);
2258
- CheckCondition(61 ==
2259
- rocksdb_options_get_level0_slowdown_writes_trigger(copy));
2260
- CheckCondition(6 == rocksdb_options_get_level0_slowdown_writes_trigger(o));
2261
-
2262
- rocksdb_options_set_level0_stop_writes_trigger(copy, 17);
2263
- CheckCondition(17 == rocksdb_options_get_level0_stop_writes_trigger(copy));
2264
- CheckCondition(8 == rocksdb_options_get_level0_stop_writes_trigger(o));
2265
-
2266
- rocksdb_options_set_target_file_size_base(copy, 128);
2267
- CheckCondition(128 == rocksdb_options_get_target_file_size_base(copy));
2268
- CheckCondition(256 == rocksdb_options_get_target_file_size_base(o));
2269
-
2270
- rocksdb_options_set_target_file_size_multiplier(copy, 13);
2271
- CheckCondition(13 == rocksdb_options_get_target_file_size_multiplier(copy));
2272
- CheckCondition(3 == rocksdb_options_get_target_file_size_multiplier(o));
2273
-
2274
- rocksdb_options_set_max_bytes_for_level_base(copy, 900);
2275
- CheckCondition(900 == rocksdb_options_get_max_bytes_for_level_base(copy));
2276
- CheckCondition(1024 == rocksdb_options_get_max_bytes_for_level_base(o));
2277
-
2278
- rocksdb_options_set_level_compaction_dynamic_level_bytes(copy, 0);
2279
- CheckCondition(
2280
- 0 == rocksdb_options_get_level_compaction_dynamic_level_bytes(copy));
2281
- CheckCondition(1 ==
2282
- rocksdb_options_get_level_compaction_dynamic_level_bytes(o));
2283
-
2284
- rocksdb_options_set_max_bytes_for_level_multiplier(copy, 8.0);
2285
- CheckCondition(8.0 ==
2286
- rocksdb_options_get_max_bytes_for_level_multiplier(copy));
2287
- CheckCondition(2.0 ==
2288
- rocksdb_options_get_max_bytes_for_level_multiplier(o));
2289
-
2290
- rocksdb_options_set_skip_stats_update_on_db_open(copy, 0);
2291
- CheckCondition(0 == rocksdb_options_get_skip_stats_update_on_db_open(copy));
2292
- CheckCondition(1 == rocksdb_options_get_skip_stats_update_on_db_open(o));
2293
-
2294
- rocksdb_options_set_skip_checking_sst_file_sizes_on_db_open(copy, 0);
2295
- CheckCondition(
2296
- 0 == rocksdb_options_get_skip_checking_sst_file_sizes_on_db_open(copy));
2297
- CheckCondition(
2298
- 1 == rocksdb_options_get_skip_checking_sst_file_sizes_on_db_open(o));
2299
-
2300
- rocksdb_options_set_max_write_buffer_number(copy, 2000);
2301
- CheckCondition(2000 == rocksdb_options_get_max_write_buffer_number(copy));
2302
- CheckCondition(97 == rocksdb_options_get_max_write_buffer_number(o));
2303
-
2304
- rocksdb_options_set_min_write_buffer_number_to_merge(copy, 146);
2305
- CheckCondition(146 ==
2306
- rocksdb_options_get_min_write_buffer_number_to_merge(copy));
2307
- CheckCondition(23 ==
2308
- rocksdb_options_get_min_write_buffer_number_to_merge(o));
2309
-
2310
- rocksdb_options_set_max_write_buffer_number_to_maintain(copy, 128);
2311
- CheckCondition(
2312
- 128 == rocksdb_options_get_max_write_buffer_number_to_maintain(copy));
2313
- CheckCondition(64 ==
2314
- rocksdb_options_get_max_write_buffer_number_to_maintain(o));
2315
-
2316
- rocksdb_options_set_max_write_buffer_size_to_maintain(copy, 9000);
2317
- CheckCondition(9000 ==
2318
- rocksdb_options_get_max_write_buffer_size_to_maintain(copy));
2319
- CheckCondition(50000 ==
2320
- rocksdb_options_get_max_write_buffer_size_to_maintain(o));
2321
-
2322
- rocksdb_options_set_enable_pipelined_write(copy, 0);
2323
- CheckCondition(0 == rocksdb_options_get_enable_pipelined_write(copy));
2324
- CheckCondition(1 == rocksdb_options_get_enable_pipelined_write(o));
2325
-
2326
- rocksdb_options_set_unordered_write(copy, 0);
2327
- CheckCondition(0 == rocksdb_options_get_unordered_write(copy));
2328
- CheckCondition(1 == rocksdb_options_get_unordered_write(o));
2329
-
2330
- rocksdb_options_set_max_subcompactions(copy, 90001);
2331
- CheckCondition(90001 == rocksdb_options_get_max_subcompactions(copy));
2332
- CheckCondition(123456 == rocksdb_options_get_max_subcompactions(o));
2333
-
2334
- rocksdb_options_set_max_background_jobs(copy, 12);
2335
- CheckCondition(12 == rocksdb_options_get_max_background_jobs(copy));
2336
- CheckCondition(2 == rocksdb_options_get_max_background_jobs(o));
2337
-
2338
- rocksdb_options_set_max_background_compactions(copy, 13);
2339
- CheckCondition(13 == rocksdb_options_get_max_background_compactions(copy));
2340
- CheckCondition(3 == rocksdb_options_get_max_background_compactions(o));
2341
-
2342
- rocksdb_options_set_max_background_flushes(copy, 15);
2343
- CheckCondition(15 == rocksdb_options_get_max_background_flushes(copy));
2344
- CheckCondition(5 == rocksdb_options_get_max_background_flushes(o));
2345
-
2346
- rocksdb_options_set_max_log_file_size(copy, 16);
2347
- CheckCondition(16 == rocksdb_options_get_max_log_file_size(copy));
2348
- CheckCondition(6 == rocksdb_options_get_max_log_file_size(o));
2349
-
2350
- rocksdb_options_set_log_file_time_to_roll(copy, 17);
2351
- CheckCondition(17 == rocksdb_options_get_log_file_time_to_roll(copy));
2352
- CheckCondition(7 == rocksdb_options_get_log_file_time_to_roll(o));
2353
-
2354
- rocksdb_options_set_keep_log_file_num(copy, 18);
2355
- CheckCondition(18 == rocksdb_options_get_keep_log_file_num(copy));
2356
- CheckCondition(8 == rocksdb_options_get_keep_log_file_num(o));
2357
-
2358
- rocksdb_options_set_recycle_log_file_num(copy, 19);
2359
- CheckCondition(19 == rocksdb_options_get_recycle_log_file_num(copy));
2360
- CheckCondition(9 == rocksdb_options_get_recycle_log_file_num(o));
2361
-
2362
- rocksdb_options_set_soft_pending_compaction_bytes_limit(copy, 110);
2363
- CheckCondition(
2364
- 110 == rocksdb_options_get_soft_pending_compaction_bytes_limit(copy));
2365
- CheckCondition(10 ==
2366
- rocksdb_options_get_soft_pending_compaction_bytes_limit(o));
2367
-
2368
- rocksdb_options_set_hard_pending_compaction_bytes_limit(copy, 111);
2369
- CheckCondition(
2370
- 111 == rocksdb_options_get_hard_pending_compaction_bytes_limit(copy));
2371
- CheckCondition(11 ==
2372
- rocksdb_options_get_hard_pending_compaction_bytes_limit(o));
2373
-
2374
- rocksdb_options_set_max_manifest_file_size(copy, 112);
2375
- CheckCondition(112 == rocksdb_options_get_max_manifest_file_size(copy));
2376
- CheckCondition(12 == rocksdb_options_get_max_manifest_file_size(o));
2377
-
2378
- rocksdb_options_set_table_cache_numshardbits(copy, 113);
2379
- CheckCondition(113 == rocksdb_options_get_table_cache_numshardbits(copy));
2380
- CheckCondition(13 == rocksdb_options_get_table_cache_numshardbits(o));
2381
-
2382
- rocksdb_options_set_arena_block_size(copy, 114);
2383
- CheckCondition(114 == rocksdb_options_get_arena_block_size(copy));
2384
- CheckCondition(14 == rocksdb_options_get_arena_block_size(o));
2385
-
2386
- rocksdb_options_set_use_fsync(copy, 0);
2387
- CheckCondition(0 == rocksdb_options_get_use_fsync(copy));
2388
- CheckCondition(1 == rocksdb_options_get_use_fsync(o));
2389
-
2390
- rocksdb_options_set_WAL_ttl_seconds(copy, 115);
2391
- CheckCondition(115 == rocksdb_options_get_WAL_ttl_seconds(copy));
2392
- CheckCondition(15 == rocksdb_options_get_WAL_ttl_seconds(o));
2393
-
2394
- rocksdb_options_set_WAL_size_limit_MB(copy, 116);
2395
- CheckCondition(116 == rocksdb_options_get_WAL_size_limit_MB(copy));
2396
- CheckCondition(16 == rocksdb_options_get_WAL_size_limit_MB(o));
2397
-
2398
- rocksdb_options_set_manifest_preallocation_size(copy, 117);
2399
- CheckCondition(117 ==
2400
- rocksdb_options_get_manifest_preallocation_size(copy));
2401
- CheckCondition(17 == rocksdb_options_get_manifest_preallocation_size(o));
2402
-
2403
- rocksdb_options_set_allow_mmap_reads(copy, 0);
2404
- CheckCondition(0 == rocksdb_options_get_allow_mmap_reads(copy));
2405
- CheckCondition(1 == rocksdb_options_get_allow_mmap_reads(o));
2406
-
2407
- rocksdb_options_set_allow_mmap_writes(copy, 0);
2408
- CheckCondition(0 == rocksdb_options_get_allow_mmap_writes(copy));
2409
- CheckCondition(1 == rocksdb_options_get_allow_mmap_writes(o));
2410
-
2411
- rocksdb_options_set_use_direct_reads(copy, 0);
2412
- CheckCondition(0 == rocksdb_options_get_use_direct_reads(copy));
2413
- CheckCondition(1 == rocksdb_options_get_use_direct_reads(o));
2414
-
2415
- rocksdb_options_set_use_direct_io_for_flush_and_compaction(copy, 0);
2416
- CheckCondition(
2417
- 0 == rocksdb_options_get_use_direct_io_for_flush_and_compaction(copy));
2418
- CheckCondition(
2419
- 1 == rocksdb_options_get_use_direct_io_for_flush_and_compaction(o));
2420
-
2421
- rocksdb_options_set_is_fd_close_on_exec(copy, 0);
2422
- CheckCondition(0 == rocksdb_options_get_is_fd_close_on_exec(copy));
2423
- CheckCondition(1 == rocksdb_options_get_is_fd_close_on_exec(o));
2424
-
2425
- rocksdb_options_set_stats_dump_period_sec(copy, 218);
2426
- CheckCondition(218 == rocksdb_options_get_stats_dump_period_sec(copy));
2427
- CheckCondition(18 == rocksdb_options_get_stats_dump_period_sec(o));
2428
-
2429
- rocksdb_options_set_stats_persist_period_sec(copy, 600);
2430
- CheckCondition(600 == rocksdb_options_get_stats_persist_period_sec(copy));
2431
- CheckCondition(5 == rocksdb_options_get_stats_persist_period_sec(o));
2432
-
2433
- rocksdb_options_set_advise_random_on_open(copy, 0);
2434
- CheckCondition(0 == rocksdb_options_get_advise_random_on_open(copy));
2435
- CheckCondition(1 == rocksdb_options_get_advise_random_on_open(o));
2436
-
2437
- rocksdb_options_set_access_hint_on_compaction_start(copy, 2);
2438
- CheckCondition(2 ==
2439
- rocksdb_options_get_access_hint_on_compaction_start(copy));
2440
- CheckCondition(3 == rocksdb_options_get_access_hint_on_compaction_start(o));
2441
-
2442
- rocksdb_options_set_use_adaptive_mutex(copy, 0);
2443
- CheckCondition(0 == rocksdb_options_get_use_adaptive_mutex(copy));
2444
- CheckCondition(1 == rocksdb_options_get_use_adaptive_mutex(o));
2445
-
2446
- rocksdb_options_set_bytes_per_sync(copy, 219);
2447
- CheckCondition(219 == rocksdb_options_get_bytes_per_sync(copy));
2448
- CheckCondition(19 == rocksdb_options_get_bytes_per_sync(o));
2449
-
2450
- rocksdb_options_set_wal_bytes_per_sync(copy, 120);
2451
- CheckCondition(120 == rocksdb_options_get_wal_bytes_per_sync(copy));
2452
- CheckCondition(20 == rocksdb_options_get_wal_bytes_per_sync(o));
2453
-
2454
- rocksdb_options_set_writable_file_max_buffer_size(copy, 121);
2455
- CheckCondition(121 ==
2456
- rocksdb_options_get_writable_file_max_buffer_size(copy));
2457
- CheckCondition(21 == rocksdb_options_get_writable_file_max_buffer_size(o));
2458
-
2459
- rocksdb_options_set_allow_concurrent_memtable_write(copy, 0);
2460
- CheckCondition(0 ==
2461
- rocksdb_options_get_allow_concurrent_memtable_write(copy));
2462
- CheckCondition(1 == rocksdb_options_get_allow_concurrent_memtable_write(o));
2463
-
2464
- rocksdb_options_set_enable_write_thread_adaptive_yield(copy, 0);
2465
- CheckCondition(
2466
- 0 == rocksdb_options_get_enable_write_thread_adaptive_yield(copy));
2467
- CheckCondition(1 ==
2468
- rocksdb_options_get_enable_write_thread_adaptive_yield(o));
2469
-
2470
- rocksdb_options_set_max_sequential_skip_in_iterations(copy, 122);
2471
- CheckCondition(122 ==
2472
- rocksdb_options_get_max_sequential_skip_in_iterations(copy));
2473
- CheckCondition(22 ==
2474
- rocksdb_options_get_max_sequential_skip_in_iterations(o));
2475
-
2476
- rocksdb_options_set_disable_auto_compactions(copy, 0);
2477
- CheckCondition(0 == rocksdb_options_get_disable_auto_compactions(copy));
2478
- CheckCondition(1 == rocksdb_options_get_disable_auto_compactions(o));
2479
-
2480
- rocksdb_options_set_optimize_filters_for_hits(copy, 0);
2481
- CheckCondition(0 == rocksdb_options_get_optimize_filters_for_hits(copy));
2482
- CheckCondition(1 == rocksdb_options_get_optimize_filters_for_hits(o));
2483
-
2484
- rocksdb_options_set_delete_obsolete_files_period_micros(copy, 123);
2485
- CheckCondition(
2486
- 123 == rocksdb_options_get_delete_obsolete_files_period_micros(copy));
2487
- CheckCondition(23 ==
2488
- rocksdb_options_get_delete_obsolete_files_period_micros(o));
2489
-
2490
- rocksdb_options_set_memtable_prefix_bloom_size_ratio(copy, 4.0);
2491
- CheckCondition(4.0 ==
2492
- rocksdb_options_get_memtable_prefix_bloom_size_ratio(copy));
2493
- CheckCondition(2.0 ==
2494
- rocksdb_options_get_memtable_prefix_bloom_size_ratio(o));
2495
-
2496
- rocksdb_options_set_max_compaction_bytes(copy, 124);
2497
- CheckCondition(124 == rocksdb_options_get_max_compaction_bytes(copy));
2498
- CheckCondition(24 == rocksdb_options_get_max_compaction_bytes(o));
2499
-
2500
- rocksdb_options_set_memtable_huge_page_size(copy, 125);
2501
- CheckCondition(125 == rocksdb_options_get_memtable_huge_page_size(copy));
2502
- CheckCondition(25 == rocksdb_options_get_memtable_huge_page_size(o));
2503
-
2504
- rocksdb_options_set_max_successive_merges(copy, 126);
2505
- CheckCondition(126 == rocksdb_options_get_max_successive_merges(copy));
2506
- CheckCondition(26 == rocksdb_options_get_max_successive_merges(o));
2507
-
2508
- rocksdb_options_set_bloom_locality(copy, 127);
2509
- CheckCondition(127 == rocksdb_options_get_bloom_locality(copy));
2510
- CheckCondition(27 == rocksdb_options_get_bloom_locality(o));
2511
-
2512
- rocksdb_options_set_inplace_update_support(copy, 0);
2513
- CheckCondition(0 == rocksdb_options_get_inplace_update_support(copy));
2514
- CheckCondition(1 == rocksdb_options_get_inplace_update_support(o));
2515
-
2516
- rocksdb_options_set_inplace_update_num_locks(copy, 128);
2517
- CheckCondition(128 == rocksdb_options_get_inplace_update_num_locks(copy));
2518
- CheckCondition(28 == rocksdb_options_get_inplace_update_num_locks(o));
2519
-
2520
- rocksdb_options_set_report_bg_io_stats(copy, 0);
2521
- CheckCondition(0 == rocksdb_options_get_report_bg_io_stats(copy));
2522
- CheckCondition(1 == rocksdb_options_get_report_bg_io_stats(o));
2523
-
2524
- rocksdb_options_set_wal_recovery_mode(copy, 1);
2525
- CheckCondition(1 == rocksdb_options_get_wal_recovery_mode(copy));
2526
- CheckCondition(2 == rocksdb_options_get_wal_recovery_mode(o));
2527
-
2528
- rocksdb_options_set_compression(copy, 4);
2529
- CheckCondition(4 == rocksdb_options_get_compression(copy));
2530
- CheckCondition(5 == rocksdb_options_get_compression(o));
2531
-
2532
- rocksdb_options_set_bottommost_compression(copy, 3);
2533
- CheckCondition(3 == rocksdb_options_get_bottommost_compression(copy));
2534
- CheckCondition(4 == rocksdb_options_get_bottommost_compression(o));
2535
-
2536
- rocksdb_options_set_compaction_style(copy, 1);
2537
- CheckCondition(1 == rocksdb_options_get_compaction_style(copy));
2538
- CheckCondition(2 == rocksdb_options_get_compaction_style(o));
2539
-
2540
- rocksdb_options_set_atomic_flush(copy, 0);
2541
- CheckCondition(0 == rocksdb_options_get_atomic_flush(copy));
2542
- CheckCondition(1 == rocksdb_options_get_atomic_flush(o));
2543
-
2544
- rocksdb_options_set_experimental_mempurge_threshold(copy, 229.0);
2545
- CheckCondition(229.0 ==
2546
- rocksdb_options_get_experimental_mempurge_threshold(copy));
2547
- CheckCondition(29.0 ==
2548
- rocksdb_options_get_experimental_mempurge_threshold(o));
2549
-
2550
- rocksdb_options_destroy(copy);
2551
- rocksdb_options_destroy(o);
2552
- }
2553
-
2554
- StartPhase("read_options");
2555
- {
2556
- rocksdb_readoptions_t* ro;
2557
- ro = rocksdb_readoptions_create();
2558
-
2559
- rocksdb_readoptions_set_verify_checksums(ro, 1);
2560
- CheckCondition(1 == rocksdb_readoptions_get_verify_checksums(ro));
2561
-
2562
- rocksdb_readoptions_set_fill_cache(ro, 1);
2563
- CheckCondition(1 == rocksdb_readoptions_get_fill_cache(ro));
2564
-
2565
- rocksdb_readoptions_set_read_tier(ro, 2);
2566
- CheckCondition(2 == rocksdb_readoptions_get_read_tier(ro));
2567
-
2568
- rocksdb_readoptions_set_tailing(ro, 1);
2569
- CheckCondition(1 == rocksdb_readoptions_get_tailing(ro));
2570
-
2571
- rocksdb_readoptions_set_readahead_size(ro, 100);
2572
- CheckCondition(100 == rocksdb_readoptions_get_readahead_size(ro));
2573
-
2574
- rocksdb_readoptions_set_prefix_same_as_start(ro, 1);
2575
- CheckCondition(1 == rocksdb_readoptions_get_prefix_same_as_start(ro));
2576
-
2577
- rocksdb_readoptions_set_pin_data(ro, 1);
2578
- CheckCondition(1 == rocksdb_readoptions_get_pin_data(ro));
2579
-
2580
- rocksdb_readoptions_set_total_order_seek(ro, 1);
2581
- CheckCondition(1 == rocksdb_readoptions_get_total_order_seek(ro));
2582
-
2583
- rocksdb_readoptions_set_max_skippable_internal_keys(ro, 200);
2584
- CheckCondition(200 ==
2585
- rocksdb_readoptions_get_max_skippable_internal_keys(ro));
2586
-
2587
- rocksdb_readoptions_set_background_purge_on_iterator_cleanup(ro, 1);
2588
- CheckCondition(
2589
- 1 == rocksdb_readoptions_get_background_purge_on_iterator_cleanup(ro));
2590
-
2591
- rocksdb_readoptions_set_ignore_range_deletions(ro, 1);
2592
- CheckCondition(1 == rocksdb_readoptions_get_ignore_range_deletions(ro));
2593
-
2594
- rocksdb_readoptions_set_deadline(ro, 300);
2595
- CheckCondition(300 == rocksdb_readoptions_get_deadline(ro));
2596
-
2597
- rocksdb_readoptions_set_io_timeout(ro, 400);
2598
- CheckCondition(400 == rocksdb_readoptions_get_io_timeout(ro));
2599
-
2600
- rocksdb_readoptions_set_async_io(ro, 1);
2601
- CheckCondition(1 == rocksdb_readoptions_get_async_io(ro));
2602
-
2603
- rocksdb_readoptions_destroy(ro);
2604
- }
2605
-
2606
- StartPhase("write_options");
2607
- {
2608
- rocksdb_writeoptions_t* wo;
2609
- wo = rocksdb_writeoptions_create();
2610
-
2611
- rocksdb_writeoptions_set_sync(wo, 1);
2612
- CheckCondition(1 == rocksdb_writeoptions_get_sync(wo));
2613
-
2614
- rocksdb_writeoptions_disable_WAL(wo, 1);
2615
- CheckCondition(1 == rocksdb_writeoptions_get_disable_WAL(wo));
2616
-
2617
- rocksdb_writeoptions_set_ignore_missing_column_families(wo, 1);
2618
- CheckCondition(1 ==
2619
- rocksdb_writeoptions_get_ignore_missing_column_families(wo));
2620
-
2621
- rocksdb_writeoptions_set_no_slowdown(wo, 1);
2622
- CheckCondition(1 == rocksdb_writeoptions_get_no_slowdown(wo));
2623
-
2624
- rocksdb_writeoptions_set_low_pri(wo, 1);
2625
- CheckCondition(1 == rocksdb_writeoptions_get_low_pri(wo));
2626
-
2627
- rocksdb_writeoptions_set_memtable_insert_hint_per_batch(wo, 1);
2628
- CheckCondition(1 ==
2629
- rocksdb_writeoptions_get_memtable_insert_hint_per_batch(wo));
2630
-
2631
- rocksdb_writeoptions_destroy(wo);
2632
- }
2633
-
2634
- StartPhase("compact_options");
2635
- {
2636
- rocksdb_compactoptions_t* co;
2637
- co = rocksdb_compactoptions_create();
2638
-
2639
- rocksdb_compactoptions_set_exclusive_manual_compaction(co, 1);
2640
- CheckCondition(1 ==
2641
- rocksdb_compactoptions_get_exclusive_manual_compaction(co));
2642
-
2643
- rocksdb_compactoptions_set_bottommost_level_compaction(co, 1);
2644
- CheckCondition(1 ==
2645
- rocksdb_compactoptions_get_bottommost_level_compaction(co));
2646
-
2647
- rocksdb_compactoptions_set_change_level(co, 1);
2648
- CheckCondition(1 == rocksdb_compactoptions_get_change_level(co));
2649
-
2650
- rocksdb_compactoptions_set_target_level(co, 1);
2651
- CheckCondition(1 == rocksdb_compactoptions_get_target_level(co));
2652
-
2653
- rocksdb_compactoptions_destroy(co);
2654
- }
2655
-
2656
- StartPhase("flush_options");
2657
- {
2658
- rocksdb_flushoptions_t* fo;
2659
- fo = rocksdb_flushoptions_create();
2660
-
2661
- rocksdb_flushoptions_set_wait(fo, 1);
2662
- CheckCondition(1 == rocksdb_flushoptions_get_wait(fo));
2663
-
2664
- rocksdb_flushoptions_destroy(fo);
2665
- }
2666
-
2667
- StartPhase("cache_options");
2668
- {
2669
- rocksdb_cache_t* co;
2670
- co = rocksdb_cache_create_lru(100);
2671
- CheckCondition(100 == rocksdb_cache_get_capacity(co));
2672
-
2673
- rocksdb_cache_set_capacity(co, 200);
2674
- CheckCondition(200 == rocksdb_cache_get_capacity(co));
2675
-
2676
- rocksdb_cache_destroy(co);
2677
- }
2678
-
2679
- StartPhase("jemalloc_nodump_allocator");
2680
- {
2681
- rocksdb_memory_allocator_t* allocator;
2682
- allocator = rocksdb_jemalloc_nodump_allocator_create(&err);
2683
- if (err != NULL) {
2684
- // not supported on all platforms, allow unsupported error
2685
- const char* ni = "Not implemented: ";
2686
- size_t ni_len = strlen(ni);
2687
- size_t err_len = strlen(err);
2688
-
2689
- CheckCondition(err_len >= ni_len);
2690
- CheckCondition(memcmp(ni, err, ni_len) == 0);
2691
- Free(&err);
2692
- } else {
2693
- rocksdb_cache_t* co;
2694
- rocksdb_lru_cache_options_t* copts;
2695
-
2696
- copts = rocksdb_lru_cache_options_create();
2697
-
2698
- rocksdb_lru_cache_options_set_capacity(copts, 100);
2699
- rocksdb_lru_cache_options_set_memory_allocator(copts, allocator);
2700
-
2701
- co = rocksdb_cache_create_lru_opts(copts);
2702
- CheckCondition(100 == rocksdb_cache_get_capacity(co));
2703
-
2704
- rocksdb_cache_destroy(co);
2705
- rocksdb_lru_cache_options_destroy(copts);
2706
- }
2707
- rocksdb_memory_allocator_destroy(allocator);
2708
- }
2709
-
2710
- StartPhase("env");
2711
- {
2712
- rocksdb_env_t* e;
2713
- e = rocksdb_create_default_env();
2714
-
2715
- rocksdb_env_set_background_threads(e, 10);
2716
- CheckCondition(10 == rocksdb_env_get_background_threads(e));
2717
-
2718
- rocksdb_env_set_high_priority_background_threads(e, 20);
2719
- CheckCondition(20 == rocksdb_env_get_high_priority_background_threads(e));
2720
-
2721
- rocksdb_env_set_low_priority_background_threads(e, 30);
2722
- CheckCondition(30 == rocksdb_env_get_low_priority_background_threads(e));
2723
-
2724
- rocksdb_env_set_bottom_priority_background_threads(e, 40);
2725
- CheckCondition(40 == rocksdb_env_get_bottom_priority_background_threads(e));
2726
-
2727
- rocksdb_env_destroy(e);
2728
- }
2729
-
2730
- StartPhase("universal_compaction_options");
2731
- {
2732
- rocksdb_universal_compaction_options_t* uco;
2733
- uco = rocksdb_universal_compaction_options_create();
2734
-
2735
- rocksdb_universal_compaction_options_set_size_ratio(uco, 5);
2736
- CheckCondition(5 ==
2737
- rocksdb_universal_compaction_options_get_size_ratio(uco));
2738
-
2739
- rocksdb_universal_compaction_options_set_min_merge_width(uco, 15);
2740
- CheckCondition(
2741
- 15 == rocksdb_universal_compaction_options_get_min_merge_width(uco));
2742
-
2743
- rocksdb_universal_compaction_options_set_max_merge_width(uco, 25);
2744
- CheckCondition(
2745
- 25 == rocksdb_universal_compaction_options_get_max_merge_width(uco));
2746
-
2747
- rocksdb_universal_compaction_options_set_max_size_amplification_percent(uco,
2748
- 35);
2749
- CheckCondition(
2750
- 35 ==
2751
- rocksdb_universal_compaction_options_get_max_size_amplification_percent(
2752
- uco));
2753
-
2754
- rocksdb_universal_compaction_options_set_compression_size_percent(uco, 45);
2755
- CheckCondition(
2756
- 45 ==
2757
- rocksdb_universal_compaction_options_get_compression_size_percent(uco));
2758
-
2759
- rocksdb_universal_compaction_options_set_stop_style(uco, 1);
2760
- CheckCondition(1 ==
2761
- rocksdb_universal_compaction_options_get_stop_style(uco));
2762
-
2763
- rocksdb_universal_compaction_options_destroy(uco);
2764
- }
2765
-
2766
- StartPhase("fifo_compaction_options");
2767
- {
2768
- rocksdb_fifo_compaction_options_t* fco;
2769
- fco = rocksdb_fifo_compaction_options_create();
2770
-
2771
- rocksdb_fifo_compaction_options_set_max_table_files_size(fco, 100000);
2772
- CheckCondition(
2773
- 100000 ==
2774
- rocksdb_fifo_compaction_options_get_max_table_files_size(fco));
2775
-
2776
- rocksdb_fifo_compaction_options_destroy(fco);
2777
- }
2778
-
2779
- StartPhase("backup_engine_option");
2780
- {
2781
- rocksdb_backup_engine_options_t* bdo;
2782
- bdo = rocksdb_backup_engine_options_create("path");
2783
-
2784
- rocksdb_backup_engine_options_set_share_table_files(bdo, 1);
2785
- CheckCondition(1 ==
2786
- rocksdb_backup_engine_options_get_share_table_files(bdo));
2787
-
2788
- rocksdb_backup_engine_options_set_sync(bdo, 1);
2789
- CheckCondition(1 == rocksdb_backup_engine_options_get_sync(bdo));
2790
-
2791
- rocksdb_backup_engine_options_set_destroy_old_data(bdo, 1);
2792
- CheckCondition(1 ==
2793
- rocksdb_backup_engine_options_get_destroy_old_data(bdo));
2794
-
2795
- rocksdb_backup_engine_options_set_backup_log_files(bdo, 1);
2796
- CheckCondition(1 ==
2797
- rocksdb_backup_engine_options_get_backup_log_files(bdo));
2798
-
2799
- rocksdb_backup_engine_options_set_backup_rate_limit(bdo, 123);
2800
- CheckCondition(123 ==
2801
- rocksdb_backup_engine_options_get_backup_rate_limit(bdo));
2802
-
2803
- rocksdb_backup_engine_options_set_restore_rate_limit(bdo, 37);
2804
- CheckCondition(37 ==
2805
- rocksdb_backup_engine_options_get_restore_rate_limit(bdo));
2806
-
2807
- rocksdb_backup_engine_options_set_max_background_operations(bdo, 20);
2808
- CheckCondition(
2809
- 20 == rocksdb_backup_engine_options_get_max_background_operations(bdo));
2810
-
2811
- rocksdb_backup_engine_options_set_callback_trigger_interval_size(bdo, 9000);
2812
- CheckCondition(
2813
- 9000 ==
2814
- rocksdb_backup_engine_options_get_callback_trigger_interval_size(bdo));
2815
-
2816
- rocksdb_backup_engine_options_set_max_valid_backups_to_open(bdo, 40);
2817
- CheckCondition(
2818
- 40 == rocksdb_backup_engine_options_get_max_valid_backups_to_open(bdo));
2819
-
2820
- rocksdb_backup_engine_options_set_share_files_with_checksum_naming(bdo, 2);
2821
- CheckCondition(
2822
- 2 == rocksdb_backup_engine_options_get_share_files_with_checksum_naming(
2823
- bdo));
2824
-
2825
- rocksdb_backup_engine_options_destroy(bdo);
2826
- }
2827
-
2828
- StartPhase("compression_options");
2829
- {
2830
- rocksdb_options_t* co;
2831
- co = rocksdb_options_create();
2832
-
2833
- rocksdb_options_set_compression_options_zstd_max_train_bytes(co, 100);
2834
- CheckCondition(
2835
- 100 ==
2836
- rocksdb_options_get_compression_options_zstd_max_train_bytes(co));
2837
-
2838
- rocksdb_options_set_compression_options_parallel_threads(co, 2);
2839
- CheckCondition(
2840
- 2 == rocksdb_options_get_compression_options_parallel_threads(co));
2841
-
2842
- rocksdb_options_set_compression_options_max_dict_buffer_bytes(co, 200);
2843
- CheckCondition(
2844
- 200 ==
2845
- rocksdb_options_get_compression_options_max_dict_buffer_bytes(co));
2846
-
2847
- rocksdb_options_set_compression_options_use_zstd_dict_trainer(co, 0);
2848
- CheckCondition(
2849
- 0 == rocksdb_options_get_compression_options_use_zstd_dict_trainer(co));
2850
- rocksdb_options_destroy(co);
2851
- }
2852
-
2853
- StartPhase("iterate_upper_bound");
2854
- {
2855
- // Create new empty database
2856
- rocksdb_close(db);
2857
- rocksdb_destroy_db(options, dbname, &err);
2858
- CheckNoError(err);
2859
-
2860
- rocksdb_options_set_prefix_extractor(options, NULL);
2861
- db = rocksdb_open(options, dbname, &err);
2862
- CheckNoError(err);
2863
-
2864
- rocksdb_put(db, woptions, "a", 1, "0", 1, &err);
2865
- CheckNoError(err);
2866
- rocksdb_put(db, woptions, "foo", 3, "bar", 3, &err);
2867
- CheckNoError(err);
2868
- rocksdb_put(db, woptions, "foo1", 4, "bar1", 4, &err);
2869
- CheckNoError(err);
2870
- rocksdb_put(db, woptions, "g1", 2, "0", 1, &err);
2871
- CheckNoError(err);
2872
-
2873
- // testing basic case with no iterate_upper_bound and no prefix_extractor
2874
- {
2875
- rocksdb_readoptions_set_iterate_upper_bound(roptions, NULL, 0);
2876
- rocksdb_iterator_t* iter = rocksdb_create_iterator(db, roptions);
2877
-
2878
- rocksdb_iter_seek(iter, "foo", 3);
2879
- CheckCondition(rocksdb_iter_valid(iter));
2880
- CheckIter(iter, "foo", "bar");
2881
-
2882
- rocksdb_iter_next(iter);
2883
- CheckCondition(rocksdb_iter_valid(iter));
2884
- CheckIter(iter, "foo1", "bar1");
2885
-
2886
- rocksdb_iter_next(iter);
2887
- CheckCondition(rocksdb_iter_valid(iter));
2888
- CheckIter(iter, "g1", "0");
2889
-
2890
- rocksdb_iter_destroy(iter);
2891
- }
2892
-
2893
- // testing iterate_upper_bound and forward iterator
2894
- // to make sure it stops at bound
2895
- {
2896
- // iterate_upper_bound points beyond the last expected entry
2897
- rocksdb_readoptions_set_iterate_upper_bound(roptions, "foo2", 4);
2898
-
2899
- rocksdb_iterator_t* iter = rocksdb_create_iterator(db, roptions);
2900
-
2901
- rocksdb_iter_seek(iter, "foo", 3);
2902
- CheckCondition(rocksdb_iter_valid(iter));
2903
- CheckIter(iter, "foo", "bar");
2904
-
2905
- rocksdb_iter_next(iter);
2906
- CheckCondition(rocksdb_iter_valid(iter));
2907
- CheckIter(iter, "foo1", "bar1");
2908
-
2909
- rocksdb_iter_next(iter);
2910
- // should stop here...
2911
- CheckCondition(!rocksdb_iter_valid(iter));
2912
-
2913
- rocksdb_iter_destroy(iter);
2914
- rocksdb_readoptions_set_iterate_upper_bound(roptions, NULL, 0);
2915
- }
2916
- }
2917
-
2918
- StartPhase("transactions");
2919
- {
2920
- rocksdb_close(db);
2921
- rocksdb_destroy_db(options, dbname, &err);
2922
- CheckNoError(err);
2923
-
2924
- // open a TransactionDB
2925
- txn_db_options = rocksdb_transactiondb_options_create();
2926
- txn_options = rocksdb_transaction_options_create();
2927
- rocksdb_options_set_create_if_missing(options, 1);
2928
- txn_db = rocksdb_transactiondb_open(options, txn_db_options, dbname, &err);
2929
- CheckNoError(err);
2930
-
2931
- // put outside a transaction
2932
- rocksdb_transactiondb_put(txn_db, woptions, "foo", 3, "hello", 5, &err);
2933
- CheckNoError(err);
2934
- CheckTxnDBGet(txn_db, roptions, "foo", "hello");
2935
- CheckTxnDBPinGet(txn_db, roptions, "foo", "hello");
2936
-
2937
- // delete from outside transaction
2938
- rocksdb_transactiondb_delete(txn_db, woptions, "foo", 3, &err);
2939
- CheckNoError(err);
2940
- CheckTxnDBGet(txn_db, roptions, "foo", NULL);
2941
- CheckTxnDBPinGet(txn_db, roptions, "foo", NULL);
2942
-
2943
- // write batch into TransactionDB
2944
- rocksdb_writebatch_t* wb = rocksdb_writebatch_create();
2945
- rocksdb_writebatch_put(wb, "foo", 3, "a", 1);
2946
- rocksdb_writebatch_clear(wb);
2947
- rocksdb_writebatch_put(wb, "bar", 3, "b", 1);
2948
- rocksdb_writebatch_put(wb, "box", 3, "c", 1);
2949
- rocksdb_writebatch_delete(wb, "bar", 3);
2950
- rocksdb_transactiondb_write(txn_db, woptions, wb, &err);
2951
- rocksdb_writebatch_destroy(wb);
2952
- CheckTxnDBGet(txn_db, roptions, "box", "c");
2953
- CheckTxnDBPinGet(txn_db, roptions, "box", "c");
2954
- CheckNoError(err);
2955
-
2956
- // multi get
2957
- {
2958
- const char* keys[3] = {"box", "foo", "notfound"};
2959
- const size_t keys_sizes[3] = {3, 3, 8};
2960
- char* vals[3];
2961
- size_t vals_sizes[3];
2962
- char* errs[3];
2963
- const char* expected[3] = {"c", NULL, NULL};
2964
- rocksdb_transactiondb_multi_get(txn_db, roptions, 3, keys, keys_sizes,
2965
- vals, vals_sizes, errs);
2966
- CheckMultiGetValues(3, vals, vals_sizes, errs, expected);
2967
- }
2968
-
2969
- // begin a transaction
2970
- txn = rocksdb_transaction_begin(txn_db, woptions, txn_options, NULL);
2971
- // put
2972
- rocksdb_transaction_put(txn, "foo", 3, "hello", 5, &err);
2973
- CheckNoError(err);
2974
- CheckTxnGet(txn, roptions, "foo", "hello");
2975
- CheckTxnPinGet(txn, roptions, "foo", "hello");
2976
- {
2977
- const char* keys[3] = {"box", "foo", "notfound"};
2978
- const size_t keys_sizes[3] = {3, 3, 8};
2979
- char* vals[3];
2980
- size_t vals_sizes[3];
2981
- char* errs[3];
2982
- const char* expected[3] = {"c", "hello", NULL};
2983
- rocksdb_transaction_multi_get(txn, roptions, 3, keys, keys_sizes, vals,
2984
- vals_sizes, errs);
2985
- CheckMultiGetValues(3, vals, vals_sizes, errs, expected);
2986
- }
2987
- // delete
2988
- rocksdb_transaction_delete(txn, "foo", 3, &err);
2989
- CheckNoError(err);
2990
- CheckTxnGet(txn, roptions, "foo", NULL);
2991
- CheckTxnPinGet(txn, roptions, "foo", NULL);
2992
-
2993
- rocksdb_transaction_put(txn, "foo", 3, "hello", 5, &err);
2994
- CheckNoError(err);
2995
-
2996
- // read from outside transaction, before commit
2997
- CheckTxnDBGet(txn_db, roptions, "foo", NULL);
2998
- CheckTxnDBPinGet(txn_db, roptions, "foo", NULL);
2999
- {
3000
- const char* keys[3] = {"box", "foo", "notfound"};
3001
- const size_t keys_sizes[3] = {3, 3, 8};
3002
- char* vals[3];
3003
- size_t vals_sizes[3];
3004
- char* errs[3];
3005
- const char* expected[3] = {"c", NULL, NULL};
3006
- rocksdb_transactiondb_multi_get(txn_db, roptions, 3, keys, keys_sizes,
3007
- vals, vals_sizes, errs);
3008
- CheckMultiGetValues(3, vals, vals_sizes, errs, expected);
3009
- }
3010
-
3011
- // commit
3012
- rocksdb_transaction_commit(txn, &err);
3013
- CheckNoError(err);
3014
-
3015
- // read from outside transaction, after commit
3016
- CheckTxnDBGet(txn_db, roptions, "foo", "hello");
3017
- CheckTxnDBPinGet(txn_db, roptions, "foo", "hello");
3018
- {
3019
- const char* keys[3] = {"box", "foo", "notfound"};
3020
- const size_t keys_sizes[3] = {3, 3, 8};
3021
- char* vals[3];
3022
- size_t vals_sizes[3];
3023
- char* errs[3];
3024
- const char* expected[3] = {"c", "hello", NULL};
3025
- rocksdb_transactiondb_multi_get(txn_db, roptions, 3, keys, keys_sizes,
3026
- vals, vals_sizes, errs);
3027
- CheckMultiGetValues(3, vals, vals_sizes, errs, expected);
3028
- }
3029
-
3030
- // reuse old transaction
3031
- txn = rocksdb_transaction_begin(txn_db, woptions, txn_options, txn);
3032
-
3033
- // snapshot
3034
- const rocksdb_snapshot_t* snapshot;
3035
- snapshot = rocksdb_transactiondb_create_snapshot(txn_db);
3036
- rocksdb_readoptions_set_snapshot(roptions, snapshot);
3037
-
3038
- rocksdb_transactiondb_put(txn_db, woptions, "foo", 3, "hey", 3, &err);
3039
- CheckNoError(err);
3040
-
3041
- CheckTxnDBGet(txn_db, roptions, "foo", "hello");
3042
- CheckTxnDBPinGet(txn_db, roptions, "foo", "hello");
3043
- rocksdb_readoptions_set_snapshot(roptions, NULL);
3044
- rocksdb_transactiondb_release_snapshot(txn_db, snapshot);
3045
- CheckTxnDBGet(txn_db, roptions, "foo", "hey");
3046
- CheckTxnDBPinGet(txn_db, roptions, "foo", "hey");
3047
-
3048
- // iterate
3049
- rocksdb_transaction_put(txn, "bar", 3, "hi", 2, &err);
3050
- rocksdb_iterator_t* iter =
3051
- rocksdb_transaction_create_iterator(txn, roptions);
3052
- CheckCondition(!rocksdb_iter_valid(iter));
3053
- rocksdb_iter_seek_to_first(iter);
3054
- CheckCondition(rocksdb_iter_valid(iter));
3055
- CheckIter(iter, "bar", "hi");
3056
- rocksdb_iter_get_error(iter, &err);
3057
- CheckNoError(err);
3058
- rocksdb_iter_destroy(iter);
3059
-
3060
- // rollback
3061
- rocksdb_transaction_rollback(txn, &err);
3062
- CheckNoError(err);
3063
- CheckTxnDBGet(txn_db, roptions, "bar", NULL);
3064
- CheckTxnDBPinGet(txn_db, roptions, "bar", NULL);
3065
-
3066
- // save point
3067
- rocksdb_transaction_put(txn, "foo1", 4, "hi1", 3, &err);
3068
- rocksdb_transaction_set_savepoint(txn);
3069
- CheckTxnGet(txn, roptions, "foo1", "hi1");
3070
- CheckTxnPinGet(txn, roptions, "foo1", "hi1");
3071
- rocksdb_transaction_put(txn, "foo2", 4, "hi2", 3, &err);
3072
- CheckTxnGet(txn, roptions, "foo2", "hi2");
3073
- CheckTxnPinGet(txn, roptions, "foo2", "hi2");
3074
-
3075
- // rollback to savepoint
3076
- rocksdb_transaction_rollback_to_savepoint(txn, &err);
3077
- CheckNoError(err);
3078
- CheckTxnGet(txn, roptions, "foo2", NULL);
3079
- CheckTxnGet(txn, roptions, "foo1", "hi1");
3080
- CheckTxnPinGet(txn, roptions, "foo2", NULL);
3081
- CheckTxnPinGet(txn, roptions, "foo1", "hi1");
3082
- CheckTxnDBGet(txn_db, roptions, "foo1", NULL);
3083
- CheckTxnDBGet(txn_db, roptions, "foo2", NULL);
3084
- CheckTxnDBPinGet(txn_db, roptions, "foo1", NULL);
3085
- CheckTxnDBPinGet(txn_db, roptions, "foo2", NULL);
3086
- rocksdb_transaction_commit(txn, &err);
3087
- CheckNoError(err);
3088
- CheckTxnDBGet(txn_db, roptions, "foo1", "hi1");
3089
- CheckTxnDBGet(txn_db, roptions, "foo2", NULL);
3090
- CheckTxnDBPinGet(txn_db, roptions, "foo1", "hi1");
3091
- CheckTxnDBPinGet(txn_db, roptions, "foo2", NULL);
3092
-
3093
- // Column families.
3094
- rocksdb_column_family_handle_t* cfh;
3095
- cfh = rocksdb_transactiondb_create_column_family(txn_db, options,
3096
- "txn_db_cf", &err);
3097
- CheckNoError(err);
3098
-
3099
- rocksdb_transactiondb_put_cf(txn_db, woptions, cfh, "cf_foo", 6, "cf_hello",
3100
- 8, &err);
3101
- CheckNoError(err);
3102
- CheckTxnDBGetCF(txn_db, roptions, cfh, "cf_foo", "cf_hello");
3103
- CheckTxnDBPinGetCF(txn_db, roptions, cfh, "cf_foo", "cf_hello");
3104
- {
3105
- const rocksdb_column_family_handle_t* get_handles[2] = {cfh, cfh};
3106
- const char* keys[2] = {"cf_foo", "notfound"};
3107
- const size_t keys_sizes[2] = {6, 8};
3108
- char* vals[2];
3109
- size_t vals_sizes[2];
3110
- char* errs[2];
3111
- const char* expected[2] = {"cf_hello", NULL};
3112
- rocksdb_transactiondb_multi_get_cf(txn_db, roptions, get_handles, 2, keys,
3113
- keys_sizes, vals, vals_sizes, errs);
3114
- CheckMultiGetValues(2, vals, vals_sizes, errs, expected);
3115
- }
3116
-
3117
- rocksdb_transactiondb_delete_cf(txn_db, woptions, cfh, "cf_foo", 6, &err);
3118
- CheckNoError(err);
3119
- CheckTxnDBGetCF(txn_db, roptions, cfh, "cf_foo", NULL);
3120
- CheckTxnDBPinGetCF(txn_db, roptions, cfh, "cf_foo", NULL);
3121
-
3122
- // flush
3123
- rocksdb_flushoptions_t* flush_options = rocksdb_flushoptions_create();
3124
- rocksdb_flushoptions_set_wait(flush_options, 1);
3125
- rocksdb_transactiondb_flush_wal(txn_db, 1, &err);
3126
- CheckNoError(err);
3127
- rocksdb_transactiondb_flush_cf(txn_db, flush_options, cfh, &err);
3128
- CheckNoError(err);
3129
- rocksdb_transactiondb_flush(txn_db, flush_options, &err);
3130
- CheckNoError(err);
3131
- rocksdb_flushoptions_destroy(flush_options);
3132
-
3133
- // close and destroy
3134
- rocksdb_column_family_handle_destroy(cfh);
3135
- rocksdb_transaction_destroy(txn);
3136
- rocksdb_transactiondb_close(txn_db);
3137
- rocksdb_destroy_db(options, dbname, &err);
3138
- CheckNoError(err);
3139
- rocksdb_transaction_options_destroy(txn_options);
3140
- rocksdb_transactiondb_options_destroy(txn_db_options);
3141
- }
3142
-
3143
- StartPhase("two-phase commit");
3144
- {
3145
- // open a TransactionDB
3146
- txn_db_options = rocksdb_transactiondb_options_create();
3147
- txn_options = rocksdb_transaction_options_create();
3148
- rocksdb_options_set_create_if_missing(options, 1);
3149
- txn_db = rocksdb_transactiondb_open(options, txn_db_options, dbname, &err);
3150
- CheckNoError(err);
3151
-
3152
- rocksdb_transaction_options_set_skip_prepare(txn_options, 0);
3153
- txn = rocksdb_transaction_begin(txn_db, woptions, txn_options, NULL);
3154
- rocksdb_transaction_commit(txn, &err);
3155
- CheckCondition(err != NULL);
3156
- Free(&err);
3157
- err = NULL;
3158
- rocksdb_transaction_prepare(txn, &err);
3159
- CheckCondition(err != NULL);
3160
- Free(&err);
3161
- err = NULL;
3162
- rocksdb_transaction_set_name(txn, "txn1", 4, &err);
3163
- CheckNoError(err);
3164
- rocksdb_transaction_prepare(txn, &err);
3165
- CheckNoError(err);
3166
- rocksdb_transaction_commit(txn, &err);
3167
- CheckNoError(err);
3168
- rocksdb_transaction_destroy(txn);
3169
-
3170
- // prepare 2 transactions and close db.
3171
- rocksdb_transaction_t* txn1 =
3172
- rocksdb_transaction_begin(txn_db, woptions, txn_options, NULL);
3173
- rocksdb_transaction_put(txn1, "bar1", 4, "1", 1, &err);
3174
- CheckNoError(err);
3175
- rocksdb_transaction_set_name(txn1, "txn1", 4, &err);
3176
- CheckNoError(err);
3177
- rocksdb_transaction_prepare(txn1, &err);
3178
- CheckNoError(err);
3179
- rocksdb_transaction_t* txn2 =
3180
- rocksdb_transaction_begin(txn_db, woptions, txn_options, NULL);
3181
- rocksdb_transaction_put(txn2, "bar2", 4, "2", 1, &err);
3182
- CheckNoError(err);
3183
- rocksdb_transaction_set_name(txn2, "txn2", 4, &err);
3184
- CheckNoError(err);
3185
- rocksdb_transaction_prepare(txn2, &err);
3186
- CheckNoError(err);
3187
- rocksdb_transaction_destroy(txn1);
3188
- rocksdb_transaction_destroy(txn2);
3189
- rocksdb_transactiondb_close(txn_db);
3190
- rocksdb_transaction_options_destroy(txn_options);
3191
- rocksdb_transactiondb_options_destroy(txn_db_options);
3192
-
3193
- // reopen db and get all prepared.
3194
- txn_db_options = rocksdb_transactiondb_options_create();
3195
- txn_options = rocksdb_transaction_options_create();
3196
- rocksdb_options_set_error_if_exists(options, 0);
3197
- txn_db = rocksdb_transactiondb_open(options, txn_db_options, dbname, &err);
3198
- CheckNoError(err);
3199
- CheckTxnDBPinGet(txn_db, roptions, "bar1", NULL);
3200
- CheckTxnDBPinGet(txn_db, roptions, "bar2", NULL);
3201
- size_t cnt;
3202
- rocksdb_transaction_t** txns =
3203
- rocksdb_transactiondb_get_prepared_transactions(txn_db, &cnt);
3204
- CheckCondition(cnt == 2);
3205
- size_t i;
3206
- for (i = 0; i < cnt; i++) {
3207
- txn = txns[i];
3208
- size_t name_len = 0;
3209
- char* name = rocksdb_transaction_get_name(txn, &name_len);
3210
- CheckCondition(name_len == 4);
3211
- if (strncmp(name, "txn1", name_len) == 0) {
3212
- rocksdb_transaction_commit(txn, &err);
3213
- } else if (strncmp(name, "txn2", name_len) == 0) {
3214
- rocksdb_transaction_rollback(txn, &err);
3215
- }
3216
- rocksdb_free(name);
3217
- CheckNoError(err);
3218
- rocksdb_transaction_destroy(txn);
3219
- }
3220
- rocksdb_free(txns);
3221
- CheckTxnDBGet(txn_db, roptions, "bar1", "1");
3222
- CheckTxnDBGet(txn_db, roptions, "bar2", NULL);
3223
- rocksdb_transactiondb_put(txn_db, woptions, "bar2", 4, "2", 1, &err);
3224
- CheckNoError(err);
3225
-
3226
- // close and destroy
3227
- rocksdb_transactiondb_close(txn_db);
3228
- rocksdb_destroy_db(options, dbname, &err);
3229
- CheckNoError(err);
3230
- rocksdb_transaction_options_destroy(txn_options);
3231
- rocksdb_transactiondb_options_destroy(txn_db_options);
3232
- }
3233
-
3234
- StartPhase("transactions_multi_get_for_update");
3235
- {
3236
- // open a TransactionDB
3237
- txn_db_options = rocksdb_transactiondb_options_create();
3238
- rocksdb_transactiondb_options_set_transaction_lock_timeout(txn_db_options,
3239
- 0);
3240
- txn_options = rocksdb_transaction_options_create();
3241
- rocksdb_options_set_create_if_missing(options, 1);
3242
- txn_db = rocksdb_transactiondb_open(options, txn_db_options, dbname, &err);
3243
- CheckNoError(err);
3244
-
3245
- rocksdb_transactiondb_put(txn_db, woptions, "foo", 3, "hey", 3, &err);
3246
- CheckNoError(err);
3247
- rocksdb_transactiondb_put(txn_db, woptions, "bar", 3, "hello", 5, &err);
3248
- CheckNoError(err);
3249
-
3250
- // begin transactions
3251
- txn = rocksdb_transaction_begin(txn_db, woptions, txn_options, NULL);
3252
- rocksdb_transaction_t* txn2 =
3253
- rocksdb_transaction_begin(txn_db, woptions, txn_options, NULL);
3254
-
3255
- // multi get
3256
- {
3257
- const char* keys[2] = {"foo", "bar"};
3258
- const size_t keys_sizes[2] = {3, 3};
3259
- char* vals[2];
3260
- size_t vals_sizes[2];
3261
- char* errs[2];
3262
- const char* expected[2] = {"hey", "hello"};
3263
- rocksdb_transaction_multi_get_for_update(
3264
- txn, roptions, 2, keys, keys_sizes, vals, vals_sizes, errs);
3265
- CheckMultiGetValues(2, vals, vals_sizes, errs, expected);
3266
- }
3267
-
3268
- char* conflict_err = NULL;
3269
- size_t val_len;
3270
- rocksdb_transaction_get_for_update(txn2, roptions, "foo", 3, &val_len, true,
3271
- &conflict_err);
3272
- // get-for-update conflict
3273
- CheckCondition(conflict_err != NULL);
3274
- Free(&conflict_err);
3275
-
3276
- // commit
3277
- rocksdb_transaction_commit(txn, &err);
3278
- CheckNoError(err);
3279
-
3280
- // should work after first tx is commited
3281
- CheckTxnGetForUpdate(txn2, roptions, "foo", "hey");
3282
-
3283
- // commit the second one
3284
- rocksdb_transaction_commit(txn2, &err);
3285
- CheckNoError(err);
3286
-
3287
- // destroy txns
3288
- rocksdb_transaction_destroy(txn);
3289
- rocksdb_transaction_destroy(txn2);
3290
-
3291
- // same for column families
3292
-
3293
- rocksdb_column_family_handle_t* cfh;
3294
- cfh = rocksdb_transactiondb_create_column_family(txn_db, options,
3295
- "txn_db_cf", &err);
3296
- CheckNoError(err);
3297
-
3298
- rocksdb_transactiondb_put_cf(txn_db, woptions, cfh, "cf_foo", 6, "cf_hello",
3299
- 8, &err);
3300
- CheckNoError(err);
3301
- rocksdb_transactiondb_put_cf(txn_db, woptions, cfh, "cf_bar", 6, "cf_hey",
3302
- 6, &err);
3303
- CheckNoError(err);
3304
-
3305
- txn = rocksdb_transaction_begin(txn_db, woptions, txn_options, NULL);
3306
- txn2 = rocksdb_transaction_begin(txn_db, woptions, txn_options, NULL);
3307
-
3308
- {
3309
- const rocksdb_column_family_handle_t* get_handles[2] = {cfh, cfh};
3310
- const char* keys[2] = {"cf_foo", "cf_bar"};
3311
- const size_t keys_sizes[2] = {6, 6};
3312
- char* vals[2];
3313
- size_t vals_sizes[2];
3314
- char* errs[2];
3315
- const char* expected[2] = {"cf_hello", "cf_hey"};
3316
- rocksdb_transaction_multi_get_for_update_cf(txn, roptions, get_handles, 2,
3317
- keys, keys_sizes, vals,
3318
- vals_sizes, errs);
3319
- CheckMultiGetValues(2, vals, vals_sizes, errs, expected);
3320
- }
3321
-
3322
- char* conflict_err_cf = NULL;
3323
- size_t val_len_cf;
3324
- rocksdb_transaction_get_for_update_cf(txn2, roptions, cfh, "cf_foo", 6,
3325
- &val_len_cf, true, &conflict_err_cf);
3326
- CheckCondition(conflict_err_cf != NULL);
3327
- Free(&conflict_err_cf);
3328
-
3329
- rocksdb_transaction_commit(txn, &err);
3330
- CheckNoError(err);
3331
-
3332
- CheckTxnGetForUpdateCF(txn2, roptions, cfh, "cf_foo", "cf_hello");
3333
-
3334
- rocksdb_transaction_commit(txn2, &err);
3335
- CheckNoError(err);
3336
-
3337
- // close and destroy
3338
- rocksdb_column_family_handle_destroy(cfh);
3339
- rocksdb_transaction_destroy(txn);
3340
- rocksdb_transaction_destroy(txn2);
3341
- rocksdb_transactiondb_close(txn_db);
3342
- rocksdb_destroy_db(options, dbname, &err);
3343
- CheckNoError(err);
3344
- rocksdb_transaction_options_destroy(txn_options);
3345
- rocksdb_transactiondb_options_destroy(txn_db_options);
3346
- }
3347
-
3348
- StartPhase("optimistic_transactions");
3349
- {
3350
- rocksdb_options_t* db_options = rocksdb_options_create();
3351
- rocksdb_options_set_create_if_missing(db_options, 1);
3352
- rocksdb_options_set_allow_concurrent_memtable_write(db_options, 1);
3353
- otxn_db = rocksdb_optimistictransactiondb_open(db_options, dbname, &err);
3354
- otxn_options = rocksdb_optimistictransaction_options_create();
3355
- rocksdb_transaction_t* txn1 = rocksdb_optimistictransaction_begin(
3356
- otxn_db, woptions, otxn_options, NULL);
3357
- rocksdb_transaction_t* txn2 = rocksdb_optimistictransaction_begin(
3358
- otxn_db, woptions, otxn_options, NULL);
3359
- rocksdb_transaction_put(txn1, "key", 3, "value", 5, &err);
3360
- CheckNoError(err);
3361
- rocksdb_transaction_put(txn2, "key1", 4, "value1", 6, &err);
3362
- CheckNoError(err);
3363
- CheckTxnGet(txn1, roptions, "key", "value");
3364
- CheckTxnPinGet(txn1, roptions, "key", "value");
3365
- rocksdb_transaction_commit(txn1, &err);
3366
- CheckNoError(err);
3367
- rocksdb_transaction_commit(txn2, &err);
3368
- CheckNoError(err);
3369
- rocksdb_transaction_destroy(txn1);
3370
- rocksdb_transaction_destroy(txn2);
3371
-
3372
- // Check column family
3373
- db = rocksdb_optimistictransactiondb_get_base_db(otxn_db);
3374
- rocksdb_put(db, woptions, "key", 3, "value", 5, &err);
3375
- CheckNoError(err);
3376
- rocksdb_column_family_handle_t *cfh1, *cfh2;
3377
- cfh1 = rocksdb_create_column_family(db, db_options, "txn_db_cf1", &err);
3378
- cfh2 = rocksdb_create_column_family(db, db_options, "txn_db_cf2", &err);
3379
- txn = rocksdb_optimistictransaction_begin(otxn_db, woptions, otxn_options,
3380
- NULL);
3381
- rocksdb_transaction_put_cf(txn, cfh1, "key_cf1", 7, "val_cf1", 7, &err);
3382
- CheckNoError(err);
3383
- rocksdb_transaction_put_cf(txn, cfh2, "key_cf2", 7, "val_cf2", 7, &err);
3384
- CheckNoError(err);
3385
- rocksdb_transaction_commit(txn, &err);
3386
- CheckNoError(err);
3387
- txn = rocksdb_optimistictransaction_begin(otxn_db, woptions, otxn_options,
3388
- txn);
3389
- CheckGetCF(db, roptions, cfh1, "key_cf1", "val_cf1");
3390
- CheckTxnGetCF(txn, roptions, cfh1, "key_cf1", "val_cf1");
3391
- CheckTxnPinGetCF(txn, roptions, cfh1, "key_cf1", "val_cf1");
3392
- {
3393
- const rocksdb_column_family_handle_t* get_handles[3] = {cfh1, cfh2, cfh2};
3394
- const char* keys[3] = {"key_cf1", "key_cf2", "notfound"};
3395
- const size_t keys_sizes[3] = {7, 7, 8};
3396
- char* vals[3];
3397
- size_t vals_sizes[3];
3398
- char* errs[3];
3399
- const char* expected[3] = {"val_cf1", "val_cf2", NULL};
3400
- rocksdb_transaction_multi_get_cf(txn, roptions, get_handles, 3, keys,
3401
- keys_sizes, vals, vals_sizes, errs);
3402
- CheckMultiGetValues(3, vals, vals_sizes, errs, expected);
3403
- }
3404
-
3405
- // Check iterator with column family
3406
- rocksdb_transaction_put_cf(txn, cfh1, "key1_cf", 7, "val1_cf", 7, &err);
3407
- CheckNoError(err);
3408
- rocksdb_iterator_t* iter =
3409
- rocksdb_transaction_create_iterator_cf(txn, roptions, cfh1);
3410
- CheckCondition(!rocksdb_iter_valid(iter));
3411
- rocksdb_iter_seek_to_first(iter);
3412
- CheckCondition(rocksdb_iter_valid(iter));
3413
- CheckIter(iter, "key1_cf", "val1_cf");
3414
- rocksdb_iter_get_error(iter, &err);
3415
- CheckNoError(err);
3416
- rocksdb_iter_destroy(iter);
3417
-
3418
- rocksdb_transaction_destroy(txn);
3419
- rocksdb_column_family_handle_destroy(cfh1);
3420
- rocksdb_column_family_handle_destroy(cfh2);
3421
- rocksdb_optimistictransactiondb_close_base_db(db);
3422
- rocksdb_optimistictransactiondb_close(otxn_db);
3423
-
3424
- // Check open optimistic transaction db with column families
3425
- size_t cf_len;
3426
- char** column_fams =
3427
- rocksdb_list_column_families(db_options, dbname, &cf_len, &err);
3428
- CheckNoError(err);
3429
- CheckEqual("default", column_fams[0], 7);
3430
- CheckEqual("txn_db_cf1", column_fams[1], 10);
3431
- CheckEqual("txn_db_cf2", column_fams[2], 10);
3432
- CheckCondition(cf_len == 3);
3433
- rocksdb_list_column_families_destroy(column_fams, cf_len);
3434
-
3435
- const char* cf_names[3] = {"default", "txn_db_cf1", "txn_db_cf2"};
3436
- rocksdb_options_t* cf_options = rocksdb_options_create();
3437
- const rocksdb_options_t* cf_opts[3] = {cf_options, cf_options, cf_options};
3438
-
3439
- rocksdb_options_set_error_if_exists(cf_options, 0);
3440
- rocksdb_column_family_handle_t* cf_handles[3];
3441
- otxn_db = rocksdb_optimistictransactiondb_open_column_families(
3442
- db_options, dbname, 3, cf_names, cf_opts, cf_handles, &err);
3443
- CheckNoError(err);
3444
- rocksdb_transaction_t* txn_cf = rocksdb_optimistictransaction_begin(
3445
- otxn_db, woptions, otxn_options, NULL);
3446
- CheckTxnGetCF(txn_cf, roptions, cf_handles[0], "key", "value");
3447
- CheckTxnGetCF(txn_cf, roptions, cf_handles[1], "key_cf1", "val_cf1");
3448
- CheckTxnGetCF(txn_cf, roptions, cf_handles[2], "key_cf2", "val_cf2");
3449
- CheckTxnPinGetCF(txn_cf, roptions, cf_handles[0], "key", "value");
3450
- CheckTxnPinGetCF(txn_cf, roptions, cf_handles[1], "key_cf1", "val_cf1");
3451
- CheckTxnPinGetCF(txn_cf, roptions, cf_handles[2], "key_cf2", "val_cf2");
3452
- rocksdb_transaction_destroy(txn_cf);
3453
- rocksdb_options_destroy(cf_options);
3454
- rocksdb_column_family_handle_destroy(cf_handles[0]);
3455
- rocksdb_column_family_handle_destroy(cf_handles[1]);
3456
- rocksdb_column_family_handle_destroy(cf_handles[2]);
3457
- rocksdb_optimistictransactiondb_close(otxn_db);
3458
- rocksdb_destroy_db(db_options, dbname, &err);
3459
- rocksdb_options_destroy(db_options);
3460
- rocksdb_optimistictransaction_options_destroy(otxn_options);
3461
- CheckNoError(err);
3462
- }
3463
-
3464
- // Simple sanity check that setting memtable rep works.
3465
- StartPhase("memtable_reps");
3466
- {
3467
- // Create database with vector memtable.
3468
- rocksdb_options_set_memtable_vector_rep(options);
3469
- db = rocksdb_open(options, dbname, &err);
3470
- CheckNoError(err);
3471
-
3472
- // Create database with hash skiplist memtable.
3473
- rocksdb_close(db);
3474
- rocksdb_destroy_db(options, dbname, &err);
3475
- CheckNoError(err);
3476
-
3477
- rocksdb_options_set_hash_skip_list_rep(options, 5000, 4, 4);
3478
- db = rocksdb_open(options, dbname, &err);
3479
- CheckNoError(err);
3480
- }
3481
-
3482
- // Check that secondary instance works.
3483
- StartPhase("open_as_secondary");
3484
- {
3485
- rocksdb_close(db);
3486
- rocksdb_destroy_db(options, dbname, &err);
3487
-
3488
- rocksdb_options_t* db_options = rocksdb_options_create();
3489
- rocksdb_options_set_create_if_missing(db_options, 1);
3490
- db = rocksdb_open(db_options, dbname, &err);
3491
- CheckNoError(err);
3492
- rocksdb_t* db1;
3493
- rocksdb_options_t* opts = rocksdb_options_create();
3494
- rocksdb_options_set_max_open_files(opts, -1);
3495
- rocksdb_options_set_create_if_missing(opts, 1);
3496
- snprintf(secondary_path, sizeof(secondary_path),
3497
- "%s/rocksdb_c_test_secondary-%d", GetTempDir(), ((int)geteuid()));
3498
- db1 = rocksdb_open_as_secondary(opts, dbname, secondary_path, &err);
3499
- CheckNoError(err);
3500
-
3501
- rocksdb_writeoptions_set_sync(woptions, 0);
3502
- rocksdb_writeoptions_disable_WAL(woptions, 1);
3503
- rocksdb_put(db, woptions, "key0", 4, "value0", 6, &err);
3504
- CheckNoError(err);
3505
- rocksdb_flushoptions_t* flush_opts = rocksdb_flushoptions_create();
3506
- rocksdb_flushoptions_set_wait(flush_opts, 1);
3507
- rocksdb_flush(db, flush_opts, &err);
3508
- CheckNoError(err);
3509
- rocksdb_try_catch_up_with_primary(db1, &err);
3510
- CheckNoError(err);
3511
- rocksdb_readoptions_t* ropts = rocksdb_readoptions_create();
3512
- rocksdb_readoptions_set_verify_checksums(ropts, 1);
3513
- rocksdb_readoptions_set_snapshot(ropts, NULL);
3514
- CheckGet(db, ropts, "key0", "value0");
3515
- CheckGet(db1, ropts, "key0", "value0");
3516
-
3517
- rocksdb_writeoptions_disable_WAL(woptions, 0);
3518
- rocksdb_put(db, woptions, "key1", 4, "value1", 6, &err);
3519
- CheckNoError(err);
3520
- rocksdb_try_catch_up_with_primary(db1, &err);
3521
- CheckNoError(err);
3522
- CheckGet(db1, ropts, "key0", "value0");
3523
- CheckGet(db1, ropts, "key1", "value1");
3524
-
3525
- rocksdb_close(db1);
3526
- rocksdb_destroy_db(opts, secondary_path, &err);
3527
- CheckNoError(err);
3528
-
3529
- rocksdb_options_destroy(db_options);
3530
- rocksdb_options_destroy(opts);
3531
- rocksdb_readoptions_destroy(ropts);
3532
- rocksdb_flushoptions_destroy(flush_opts);
3533
- }
3534
-
3535
- // Simple sanity check that options setting db_paths work.
3536
- StartPhase("open_db_paths");
3537
- {
3538
- rocksdb_close(db);
3539
- rocksdb_destroy_db(options, dbname, &err);
3540
-
3541
- const rocksdb_dbpath_t* paths[1] = {dbpath};
3542
- rocksdb_options_set_db_paths(options, paths, 1);
3543
- db = rocksdb_open(options, dbname, &err);
3544
- CheckNoError(err);
3545
- }
3546
-
3547
- StartPhase("filter_with_prefix_seek");
3548
- {
3549
- rocksdb_close(db);
3550
- rocksdb_destroy_db(options, dbname, &err);
3551
- CheckNoError(err);
3552
-
3553
- rocksdb_options_set_prefix_extractor(
3554
- options, rocksdb_slicetransform_create_fixed_prefix(1));
3555
- rocksdb_filterpolicy_t* filter_policy =
3556
- rocksdb_filterpolicy_create_bloom_full(8.0);
3557
- rocksdb_block_based_options_set_filter_policy(table_options, filter_policy);
3558
- rocksdb_options_set_block_based_table_factory(options, table_options);
3559
-
3560
- db = rocksdb_open(options, dbname, &err);
3561
- CheckNoError(err);
3562
-
3563
- int i;
3564
- for (i = 0; i < 10; ++i) {
3565
- char key = '0' + (char)i;
3566
- rocksdb_put(db, woptions, &key, 1, "", 1, &err);
3567
- CheckNoError(err);
3568
- }
3569
-
3570
- // Flush to generate an L0 so that filter will be used later.
3571
- rocksdb_flushoptions_t* flush_options = rocksdb_flushoptions_create();
3572
- rocksdb_flushoptions_set_wait(flush_options, 1);
3573
- rocksdb_flush(db, flush_options, &err);
3574
- rocksdb_flushoptions_destroy(flush_options);
3575
- CheckNoError(err);
3576
-
3577
- rocksdb_readoptions_t* ropts = rocksdb_readoptions_create();
3578
- rocksdb_iterator_t* iter = rocksdb_create_iterator(db, ropts);
3579
-
3580
- rocksdb_iter_seek(iter, "0", 1);
3581
- int cnt = 0;
3582
- while (rocksdb_iter_valid(iter)) {
3583
- ++cnt;
3584
- rocksdb_iter_next(iter);
3585
- }
3586
- CheckCondition(10 == cnt);
3587
-
3588
- rocksdb_iter_destroy(iter);
3589
- rocksdb_readoptions_destroy(ropts);
3590
- }
3591
-
3592
- StartPhase("cancel_all_background_work");
3593
- rocksdb_cancel_all_background_work(db, 1);
3594
-
3595
- StartPhase("cleanup");
3596
- rocksdb_close(db);
3597
- rocksdb_options_destroy(options);
3598
- rocksdb_block_based_options_destroy(table_options);
3599
- rocksdb_readoptions_destroy(roptions);
3600
- rocksdb_writeoptions_destroy(woptions);
3601
- rocksdb_compactoptions_destroy(coptions);
3602
- rocksdb_cache_destroy(cache);
3603
- rocksdb_comparator_destroy(cmp);
3604
- rocksdb_dbpath_destroy(dbpath);
3605
- rocksdb_env_destroy(env);
3606
-
3607
- fprintf(stderr, "PASS\n");
3608
- return 0;
3609
- }