@nxtedition/rocksdb 10.0.13 → 10.0.15

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 (700) hide show
  1. package/.tap/coverage/213879bb-47ae-470e-bb54-f4157d9f60e2.json +162898 -0
  2. package/.tap/processinfo/{4c642b53-6895-4ef0-9391-7c6b8d484262.json → 213879bb-47ae-470e-bb54-f4157d9f60e2.json} +117 -121
  3. package/.tap/test-results/node_modules/abstract-level/test/get-test.js.tap +0 -0
  4. package/.tap/test-results/test/abstract-level-test.js.tap +1705 -0
  5. package/.tap/test-results/test/batch-test.js.tap +12 -0
  6. package/.tap/test-results/test/chained-batch-gc-test.js.tap +11 -0
  7. package/.tap/test-results/test/cleanup-hanging-iterators-test.js.tap +58 -0
  8. package/.tap/test-results/test/clear-gc-test.js.tap +13 -0
  9. package/.tap/test-results/test/column-test.js.tap +55 -0
  10. package/.tap/test-results/test/common.js.tap +0 -0
  11. package/.tap/test-results/test/compression-test.js.tap +30 -0
  12. package/.tap/test-results/test/db-identity.js.tap +12 -0
  13. package/.tap/test-results/test/electron.js.tap +0 -0
  14. package/.tap/test-results/test/env-cleanup-hook-test.js.tap +2 -0
  15. package/.tap/test-results/test/env-cleanup-hook.js.tap +0 -0
  16. package/.tap/test-results/test/gc.js.tap +0 -0
  17. package/.tap/test-results/test/getproperty-test.js.tap +29 -0
  18. package/.tap/test-results/test/iterator-gc-test.js.tap +4 -0
  19. package/.tap/test-results/test/iterator-hwm-test.js.tap +24 -0
  20. package/.tap/test-results/test/iterator-recursion-test.js.tap +12 -0
  21. package/.tap/test-results/test/iterator-starvation-test.js.tap +2 -0
  22. package/.tap/test-results/test/iterator-test.js.tap +0 -0
  23. package/.tap/test-results/test/leak-tester-batch.js.tap +0 -0
  24. package/.tap/test-results/test/leak-tester-iterator.js.tap +0 -0
  25. package/.tap/test-results/test/leak-tester.js.tap +0 -0
  26. package/.tap/test-results/test/lock-test.js.tap +0 -0
  27. package/.tap/test-results/test/lock.js.tap +0 -0
  28. package/.tap/test-results/test/make.js.tap +0 -0
  29. package/.tap/test-results/test/max-rev-merge.js.tap +0 -12
  30. package/.tap/test-results/test/merge-operator-test.js.tap +0 -0
  31. package/.tap/test-results/test/mkdir-test.js.tap +0 -0
  32. package/.tap/test-results/test/segfault-test.js.tap +0 -0
  33. package/.tap/test-results/test/stack-blower.js.tap +0 -0
  34. package/binding.cc +42 -34
  35. package/deps/rocksdb/rocksdb/CMakeLists.txt +44 -14
  36. package/deps/rocksdb/rocksdb/Makefile +34 -17
  37. package/deps/rocksdb/rocksdb/TARGETS +27 -0
  38. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +95 -42
  39. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager_test.cc +0 -1
  40. package/deps/rocksdb/rocksdb/cache/cache_test.cc +5 -3
  41. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +381 -393
  42. package/deps/rocksdb/rocksdb/cache/clock_cache.h +88 -51
  43. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +14 -7
  44. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +1 -1
  45. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +21 -19
  46. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +8 -7
  47. package/deps/rocksdb/rocksdb/cache/lru_cache.h +1 -1
  48. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +89 -13
  49. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +16 -8
  50. package/deps/rocksdb/rocksdb/cache/sharded_cache.h +6 -6
  51. package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.cc +15 -9
  52. package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.h +16 -13
  53. package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache_test.cc +306 -23
  54. package/deps/rocksdb/rocksdb/cache/typed_cache.h +3 -4
  55. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +30 -27
  56. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +8 -10
  57. package/deps/rocksdb/rocksdb/db/attribute_group_iterator_impl.cc +20 -0
  58. package/deps/rocksdb/rocksdb/db/attribute_group_iterator_impl.h +83 -0
  59. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +19 -16
  60. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +6 -5
  61. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +18 -21
  62. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +5 -4
  63. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +7 -6
  64. package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.cc +56 -27
  65. package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.h +11 -7
  66. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +20 -19
  67. package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +106 -31
  68. package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +5 -8
  69. package/deps/rocksdb/rocksdb/db/blob/prefetch_buffer_collection.cc +4 -2
  70. package/deps/rocksdb/rocksdb/db/builder.cc +89 -44
  71. package/deps/rocksdb/rocksdb/db/builder.h +4 -6
  72. package/deps/rocksdb/rocksdb/db/c.cc +205 -57
  73. package/deps/rocksdb/rocksdb/db/c_test.c +141 -20
  74. package/deps/rocksdb/rocksdb/db/coalescing_iterator.cc +47 -0
  75. package/deps/rocksdb/rocksdb/db/coalescing_iterator.h +79 -0
  76. package/deps/rocksdb/rocksdb/db/column_family.cc +100 -36
  77. package/deps/rocksdb/rocksdb/db/column_family.h +46 -28
  78. package/deps/rocksdb/rocksdb/db/column_family_test.cc +168 -46
  79. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +51 -6
  80. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +72 -24
  81. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +11 -14
  82. package/deps/rocksdb/rocksdb/db/compaction/compaction_iteration_stats.h +7 -0
  83. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +87 -8
  84. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +17 -3
  85. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +310 -70
  86. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +78 -62
  87. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +0 -1
  88. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -3
  89. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +33 -96
  90. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +18 -10
  91. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +7 -8
  92. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +42 -22
  93. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +20 -16
  94. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +7 -3
  95. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +18 -17
  96. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +95 -10
  97. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +6 -7
  98. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +213 -34
  99. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +4 -4
  100. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +7 -8
  101. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +16 -16
  102. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +75 -142
  103. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +577 -34
  104. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +4 -4
  105. package/deps/rocksdb/rocksdb/db/convenience.cc +1 -1
  106. package/deps/rocksdb/rocksdb/db/corruption_test.cc +7 -38
  107. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +5 -5
  108. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +366 -136
  109. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +9 -10
  110. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +282 -6
  111. package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +6 -6
  112. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +551 -150
  113. package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +1 -1
  114. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +41 -13
  115. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +54 -17
  116. package/deps/rocksdb/rocksdb/db/db_follower_test.cc +527 -0
  117. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +40 -58
  118. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +34 -45
  119. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +699 -580
  120. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +308 -230
  121. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +180 -107
  122. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +6 -2
  123. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +10 -6
  124. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +36 -61
  125. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +347 -0
  126. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.h +54 -0
  127. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +206 -155
  128. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +5 -8
  129. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +41 -39
  130. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +26 -22
  131. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +14 -9
  132. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +126 -46
  133. package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +21 -9
  134. package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +294 -0
  135. package/deps/rocksdb/rocksdb/db/db_iter.cc +116 -78
  136. package/deps/rocksdb/rocksdb/db/db_iter.h +31 -7
  137. package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +34 -14
  138. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +69 -8
  139. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +153 -18
  140. package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +9 -11
  141. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +9 -1
  142. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +6 -2
  143. package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +105 -0
  144. package/deps/rocksdb/rocksdb/db/db_options_test.cc +97 -111
  145. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +12 -3
  146. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +82 -30
  147. package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +5 -7
  148. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +64 -22
  149. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +74 -0
  150. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +175 -47
  151. package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +4 -3
  152. package/deps/rocksdb/rocksdb/db/db_test.cc +133 -109
  153. package/deps/rocksdb/rocksdb/db/db_test2.cc +227 -139
  154. package/deps/rocksdb/rocksdb/db/db_test_util.cc +42 -19
  155. package/deps/rocksdb/rocksdb/db/db_test_util.h +67 -24
  156. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +140 -2
  157. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +17 -19
  158. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +332 -87
  159. package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +4 -4
  160. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +4 -4
  161. package/deps/rocksdb/rocksdb/db/db_write_test.cc +250 -30
  162. package/deps/rocksdb/rocksdb/db/dbformat.cc +41 -8
  163. package/deps/rocksdb/rocksdb/db/dbformat.h +100 -17
  164. package/deps/rocksdb/rocksdb/db/deletefile_test.cc +48 -8
  165. package/deps/rocksdb/rocksdb/db/error_handler.cc +102 -116
  166. package/deps/rocksdb/rocksdb/db/error_handler.h +28 -6
  167. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +263 -99
  168. package/deps/rocksdb/rocksdb/db/event_helpers.cc +3 -1
  169. package/deps/rocksdb/rocksdb/db/experimental.cc +1073 -7
  170. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +261 -111
  171. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +263 -183
  172. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +31 -12
  173. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +698 -7
  174. package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +5 -3
  175. package/deps/rocksdb/rocksdb/db/flush_job.cc +41 -41
  176. package/deps/rocksdb/rocksdb/db/flush_job.h +11 -8
  177. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +90 -13
  178. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +19 -6
  179. package/deps/rocksdb/rocksdb/db/forward_iterator.h +12 -12
  180. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +83 -52
  181. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +169 -2
  182. package/deps/rocksdb/rocksdb/db/internal_stats.cc +12 -6
  183. package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -2
  184. package/deps/rocksdb/rocksdb/db/job_context.h +17 -0
  185. package/deps/rocksdb/rocksdb/db/listener_test.cc +4 -4
  186. package/deps/rocksdb/rocksdb/db/log_reader.cc +44 -20
  187. package/deps/rocksdb/rocksdb/db/log_reader.h +3 -0
  188. package/deps/rocksdb/rocksdb/db/log_test.cc +81 -17
  189. package/deps/rocksdb/rocksdb/db/log_writer.cc +135 -92
  190. package/deps/rocksdb/rocksdb/db/log_writer.h +11 -10
  191. package/deps/rocksdb/rocksdb/db/malloc_stats.cc +2 -3
  192. package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +1 -1
  193. package/deps/rocksdb/rocksdb/db/memtable.cc +82 -62
  194. package/deps/rocksdb/rocksdb/db/memtable.h +17 -9
  195. package/deps/rocksdb/rocksdb/db/memtable_list.cc +19 -13
  196. package/deps/rocksdb/rocksdb/db/memtable_list.h +3 -1
  197. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +38 -5
  198. package/deps/rocksdb/rocksdb/db/merge_context.h +3 -0
  199. package/deps/rocksdb/rocksdb/db/merge_helper.cc +34 -156
  200. package/deps/rocksdb/rocksdb/db/merge_helper.h +52 -46
  201. package/deps/rocksdb/rocksdb/db/merge_test.cc +16 -11
  202. package/deps/rocksdb/rocksdb/db/multi_cf_iterator_impl.h +289 -0
  203. package/deps/rocksdb/rocksdb/db/multi_cf_iterator_test.cc +918 -0
  204. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +4 -6
  205. package/deps/rocksdb/rocksdb/db/options_file_test.cc +4 -4
  206. package/deps/rocksdb/rocksdb/db/output_validator.cc +8 -12
  207. package/deps/rocksdb/rocksdb/db/output_validator.h +1 -4
  208. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +23 -4
  209. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +2 -3
  210. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +1 -1
  211. package/deps/rocksdb/rocksdb/db/pinned_iterators_manager.h +2 -2
  212. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +3 -6
  213. package/deps/rocksdb/rocksdb/db/prefix_test.cc +21 -8
  214. package/deps/rocksdb/rocksdb/db/range_del_aggregator.cc +0 -2
  215. package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +0 -1
  216. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +17 -4
  217. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +6 -3
  218. package/deps/rocksdb/rocksdb/db/repair.cc +35 -29
  219. package/deps/rocksdb/rocksdb/db/repair_test.cc +1 -2
  220. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +428 -156
  221. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +393 -227
  222. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +154 -82
  223. package/deps/rocksdb/rocksdb/db/snapshot_checker.h +2 -2
  224. package/deps/rocksdb/rocksdb/db/table_cache.cc +9 -11
  225. package/deps/rocksdb/rocksdb/db/table_cache.h +2 -1
  226. package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +8 -3
  227. package/deps/rocksdb/rocksdb/db/table_properties_collector.h +27 -26
  228. package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +23 -23
  229. package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +5 -5
  230. package/deps/rocksdb/rocksdb/db/version_builder.cc +6 -0
  231. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +62 -29
  232. package/deps/rocksdb/rocksdb/db/version_edit.cc +1 -2
  233. package/deps/rocksdb/rocksdb/db/version_edit.h +30 -11
  234. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +291 -116
  235. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +54 -11
  236. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +3 -1
  237. package/deps/rocksdb/rocksdb/db/version_set.cc +301 -141
  238. package/deps/rocksdb/rocksdb/db/version_set.h +90 -33
  239. package/deps/rocksdb/rocksdb/db/version_set_test.cc +817 -193
  240. package/deps/rocksdb/rocksdb/db/version_util.h +10 -5
  241. package/deps/rocksdb/rocksdb/db/wal_manager.cc +15 -11
  242. package/deps/rocksdb/rocksdb/db/wal_manager.h +2 -1
  243. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +10 -9
  244. package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +403 -28
  245. package/deps/rocksdb/rocksdb/db/wide/wide_columns.cc +2 -2
  246. package/deps/rocksdb/rocksdb/db/write_batch.cc +204 -18
  247. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +4 -0
  248. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +149 -5
  249. package/deps/rocksdb/rocksdb/db/write_callback_test.cc +7 -7
  250. package/deps/rocksdb/rocksdb/db/write_stall_stats.h +7 -7
  251. package/deps/rocksdb/rocksdb/db/write_thread.cc +86 -47
  252. package/deps/rocksdb/rocksdb/db/write_thread.h +2 -0
  253. package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +176 -68
  254. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +337 -125
  255. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +38 -9
  256. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +126 -34
  257. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +1 -1
  258. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.h +2 -2
  259. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +161 -1
  260. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +267 -9
  261. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.cc +13 -7
  262. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +9 -9
  263. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +535 -86
  264. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +27 -5
  265. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +8 -15
  266. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +46 -21
  267. package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.h +74 -4
  268. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +28 -11
  269. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +426 -151
  270. package/deps/rocksdb/rocksdb/env/composite_env.cc +1 -1
  271. package/deps/rocksdb/rocksdb/env/emulated_clock.h +6 -6
  272. package/deps/rocksdb/rocksdb/env/env.cc +21 -11
  273. package/deps/rocksdb/rocksdb/env/env_basic_test.cc +9 -9
  274. package/deps/rocksdb/rocksdb/env/env_chroot.cc +3 -2
  275. package/deps/rocksdb/rocksdb/env/env_encryption.cc +3 -3
  276. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +2 -2
  277. package/deps/rocksdb/rocksdb/env/env_posix.cc +12 -10
  278. package/deps/rocksdb/rocksdb/env/env_test.cc +24 -18
  279. package/deps/rocksdb/rocksdb/env/file_system.cc +7 -6
  280. package/deps/rocksdb/rocksdb/env/file_system_tracer.cc +3 -3
  281. package/deps/rocksdb/rocksdb/env/file_system_tracer.h +3 -3
  282. package/deps/rocksdb/rocksdb/env/fs_on_demand.cc +331 -0
  283. package/deps/rocksdb/rocksdb/env/fs_on_demand.h +139 -0
  284. package/deps/rocksdb/rocksdb/env/fs_posix.cc +14 -15
  285. package/deps/rocksdb/rocksdb/env/io_posix.cc +15 -10
  286. package/deps/rocksdb/rocksdb/env/io_posix.h +86 -92
  287. package/deps/rocksdb/rocksdb/env/mock_env.cc +1 -1
  288. package/deps/rocksdb/rocksdb/env/mock_env_test.cc +6 -6
  289. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +8 -6
  290. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +1 -1
  291. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +599 -592
  292. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +312 -200
  293. package/deps/rocksdb/rocksdb/file/file_util.cc +19 -14
  294. package/deps/rocksdb/rocksdb/file/file_util.h +34 -24
  295. package/deps/rocksdb/rocksdb/file/filename.cc +32 -17
  296. package/deps/rocksdb/rocksdb/file/filename.h +51 -53
  297. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +82 -441
  298. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +7 -6
  299. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +5 -5
  300. package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +9 -3
  301. package/deps/rocksdb/rocksdb/file/read_write_util.h +3 -3
  302. package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +6 -2
  303. package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +9 -4
  304. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +8 -4
  305. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +110 -89
  306. package/deps/rocksdb/rocksdb/file/writable_file_writer.h +34 -17
  307. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +16 -0
  308. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +39 -189
  309. package/deps/rocksdb/rocksdb/include/rocksdb/attribute_groups.h +114 -0
  310. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +91 -6
  311. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +52 -7
  312. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +1 -1
  313. package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +27 -0
  314. package/deps/rocksdb/rocksdb/include/rocksdb/compression_type.h +146 -0
  315. package/deps/rocksdb/rocksdb/include/rocksdb/concurrent_task_limiter.h +2 -2
  316. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +254 -151
  317. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +39 -36
  318. package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +1 -1
  319. package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +431 -0
  320. package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +1 -1
  321. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +57 -23
  322. package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +27 -57
  323. package/deps/rocksdb/rocksdb/include/rocksdb/iterator_base.h +74 -0
  324. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +2 -1
  325. package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +1 -1
  326. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +11 -11
  327. package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +1 -1
  328. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +146 -71
  329. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +6 -1
  330. package/deps/rocksdb/rocksdb/include/rocksdb/perf_level.h +7 -4
  331. package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +17 -13
  332. package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +17 -19
  333. package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +5 -5
  334. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +10 -8
  335. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +18 -2
  336. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +12 -2
  337. package/deps/rocksdb/rocksdb/include/rocksdb/sst_partitioner.h +3 -3
  338. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +118 -116
  339. package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +4 -4
  340. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +26 -21
  341. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +18 -6
  342. package/deps/rocksdb/rocksdb/include/rocksdb/threadpool.h +1 -1
  343. package/deps/rocksdb/rocksdb/include/rocksdb/trace_record.h +5 -5
  344. package/deps/rocksdb/rocksdb/include/rocksdb/trace_record_result.h +8 -8
  345. package/deps/rocksdb/rocksdb/include/rocksdb/types.h +12 -0
  346. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/cache_dump_load.h +4 -0
  347. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_mirror.h +3 -3
  348. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +8 -0
  349. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +1 -1
  350. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/option_change_migration.h +4 -4
  351. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +3 -3
  352. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/sim_cache.h +5 -6
  353. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +159 -167
  354. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +1 -2
  355. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +52 -17
  356. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +3 -4
  357. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/types_util.h +36 -0
  358. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +118 -20
  359. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  360. package/deps/rocksdb/rocksdb/include/rocksdb/wal_filter.h +1 -1
  361. package/deps/rocksdb/rocksdb/include/rocksdb/wide_columns.h +87 -45
  362. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +26 -3
  363. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch_base.h +22 -1
  364. package/deps/rocksdb/rocksdb/logging/auto_roll_logger.cc +7 -9
  365. package/deps/rocksdb/rocksdb/logging/auto_roll_logger.h +5 -6
  366. package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +2 -2
  367. package/deps/rocksdb/rocksdb/logging/env_logger.h +3 -3
  368. package/deps/rocksdb/rocksdb/logging/env_logger_test.cc +1 -1
  369. package/deps/rocksdb/rocksdb/logging/log_buffer.h +3 -3
  370. package/deps/rocksdb/rocksdb/memory/arena.h +11 -0
  371. package/deps/rocksdb/rocksdb/memory/arena_test.cc +17 -2
  372. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +1 -1
  373. package/deps/rocksdb/rocksdb/memory/memory_allocator.cc +1 -0
  374. package/deps/rocksdb/rocksdb/memory/memory_allocator_impl.h +1 -1
  375. package/deps/rocksdb/rocksdb/memtable/alloc_tracker.cc +1 -1
  376. package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +11 -10
  377. package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.cc +8 -7
  378. package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +2 -2
  379. package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +2 -2
  380. package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +1 -1
  381. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +3 -3
  382. package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +2 -2
  383. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +3 -1
  384. package/deps/rocksdb/rocksdb/monitoring/file_read_sample.h +2 -2
  385. package/deps/rocksdb/rocksdb/monitoring/histogram.cc +20 -10
  386. package/deps/rocksdb/rocksdb/monitoring/histogram.h +15 -15
  387. package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.cc +7 -3
  388. package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.h +14 -14
  389. package/deps/rocksdb/rocksdb/monitoring/in_memory_stats_history.cc +1 -1
  390. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +4 -0
  391. package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +8 -1
  392. package/deps/rocksdb/rocksdb/monitoring/perf_level.cc +1 -1
  393. package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.cc +5 -2
  394. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +64 -58
  395. package/deps/rocksdb/rocksdb/monitoring/statistics_impl.h +11 -12
  396. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +1 -1
  397. package/deps/rocksdb/rocksdb/monitoring/thread_status_impl.cc +1 -1
  398. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +7 -1
  399. package/deps/rocksdb/rocksdb/options/cf_options.cc +20 -28
  400. package/deps/rocksdb/rocksdb/options/cf_options.h +7 -14
  401. package/deps/rocksdb/rocksdb/options/configurable.cc +20 -12
  402. package/deps/rocksdb/rocksdb/options/configurable_test.cc +4 -6
  403. package/deps/rocksdb/rocksdb/options/configurable_test.h +2 -2
  404. package/deps/rocksdb/rocksdb/options/customizable.cc +1 -1
  405. package/deps/rocksdb/rocksdb/options/customizable_test.cc +3 -2
  406. package/deps/rocksdb/rocksdb/options/db_options.cc +22 -48
  407. package/deps/rocksdb/rocksdb/options/db_options.h +3 -3
  408. package/deps/rocksdb/rocksdb/options/offpeak_time_info.cc +59 -0
  409. package/deps/rocksdb/rocksdb/options/offpeak_time_info.h +37 -0
  410. package/deps/rocksdb/rocksdb/options/options.cc +14 -6
  411. package/deps/rocksdb/rocksdb/options/options_helper.cc +8 -13
  412. package/deps/rocksdb/rocksdb/options/options_helper.h +2 -3
  413. package/deps/rocksdb/rocksdb/options/options_parser.cc +35 -26
  414. package/deps/rocksdb/rocksdb/options/options_parser.h +4 -2
  415. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +3 -3
  416. package/deps/rocksdb/rocksdb/options/options_test.cc +30 -23
  417. package/deps/rocksdb/rocksdb/port/lang.h +1 -1
  418. package/deps/rocksdb/rocksdb/port/port_example.h +7 -7
  419. package/deps/rocksdb/rocksdb/port/port_posix.cc +7 -7
  420. package/deps/rocksdb/rocksdb/port/port_posix.h +7 -7
  421. package/deps/rocksdb/rocksdb/port/stack_trace.cc +85 -24
  422. package/deps/rocksdb/rocksdb/port/win/env_win.cc +1 -2
  423. package/deps/rocksdb/rocksdb/port/win/io_win.cc +4 -4
  424. package/deps/rocksdb/rocksdb/port/win/io_win.h +13 -17
  425. package/deps/rocksdb/rocksdb/port/win/port_win.cc +3 -2
  426. package/deps/rocksdb/rocksdb/port/win/port_win.h +4 -4
  427. package/deps/rocksdb/rocksdb/src.mk +16 -1
  428. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +1 -7
  429. package/deps/rocksdb/rocksdb/table/block_based/block.cc +39 -15
  430. package/deps/rocksdb/rocksdb/table/block_based/block.h +7 -7
  431. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +80 -40
  432. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +2 -3
  433. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +20 -5
  434. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +228 -122
  435. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +50 -9
  436. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +82 -25
  437. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +17 -20
  438. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +47 -13
  439. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +163 -50
  440. package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +1 -2
  441. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +23 -23
  442. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +2 -12
  443. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +1 -2
  444. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +6 -4
  445. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +32 -27
  446. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +1 -1
  447. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +7 -10
  448. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +2 -2
  449. package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +1 -2
  450. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +25 -7
  451. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +3 -5
  452. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +4 -6
  453. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +6 -6
  454. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +1 -1
  455. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +3 -5
  456. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +2 -2
  457. package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +4 -5
  458. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +138 -86
  459. package/deps/rocksdb/rocksdb/table/block_fetcher.h +22 -0
  460. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +26 -13
  461. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +11 -11
  462. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +11 -11
  463. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +10 -5
  464. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +6 -7
  465. package/deps/rocksdb/rocksdb/table/format.cc +15 -21
  466. package/deps/rocksdb/rocksdb/table/format.h +8 -0
  467. package/deps/rocksdb/rocksdb/table/get_context.cc +121 -78
  468. package/deps/rocksdb/rocksdb/table/get_context.h +11 -6
  469. package/deps/rocksdb/rocksdb/table/internal_iterator.h +12 -5
  470. package/deps/rocksdb/rocksdb/table/iterator.cc +4 -0
  471. package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +8 -1
  472. package/deps/rocksdb/rocksdb/table/merger_test.cc +1 -1
  473. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +5 -0
  474. package/deps/rocksdb/rocksdb/table/merging_iterator.h +4 -3
  475. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +15 -11
  476. package/deps/rocksdb/rocksdb/table/meta_blocks.h +8 -4
  477. package/deps/rocksdb/rocksdb/table/mock_table.cc +12 -8
  478. package/deps/rocksdb/rocksdb/table/mock_table.h +1 -3
  479. package/deps/rocksdb/rocksdb/table/persistent_cache_helper.cc +0 -1
  480. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +29 -21
  481. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +4 -14
  482. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +7 -8
  483. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +7 -5
  484. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +15 -8
  485. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +1 -1
  486. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +75 -30
  487. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +7 -2
  488. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +76 -11
  489. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +358 -2
  490. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +93 -16
  491. package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +12 -12
  492. package/deps/rocksdb/rocksdb/table/table_builder.h +12 -6
  493. package/deps/rocksdb/rocksdb/table/table_iterator.h +69 -0
  494. package/deps/rocksdb/rocksdb/table/table_properties.cc +1 -1
  495. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +8 -6
  496. package/deps/rocksdb/rocksdb/table/table_test.cc +732 -121
  497. package/deps/rocksdb/rocksdb/table/two_level_iterator.cc +3 -1
  498. package/deps/rocksdb/rocksdb/table/two_level_iterator.h +1 -1
  499. package/deps/rocksdb/rocksdb/table/unique_id.cc +2 -2
  500. package/deps/rocksdb/rocksdb/test_util/mock_time_env.cc +2 -2
  501. package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +5 -5
  502. package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.cc +2 -6
  503. package/deps/rocksdb/rocksdb/test_util/testharness.cc +2 -4
  504. package/deps/rocksdb/rocksdb/test_util/testutil.cc +56 -32
  505. package/deps/rocksdb/rocksdb/test_util/testutil.h +57 -34
  506. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +18 -1
  507. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.h +1 -0
  508. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +3 -3
  509. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +210 -112
  510. package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +3 -3
  511. package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +1 -1
  512. package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +22 -27
  513. package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +10 -4
  514. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +328 -59
  515. package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +34 -2
  516. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +64 -17
  517. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +8 -1
  518. package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.cc +3 -2
  519. package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +136 -10
  520. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +4 -2
  521. package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +50 -8
  522. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +51 -45
  523. package/deps/rocksdb/rocksdb/trace_replay/trace_record.cc +1 -1
  524. package/deps/rocksdb/rocksdb/trace_replay/trace_record_handler.h +10 -10
  525. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +14 -4
  526. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.h +2 -1
  527. package/deps/rocksdb/rocksdb/unreleased_history/README.txt +2 -2
  528. package/deps/rocksdb/rocksdb/util/async_file_reader.cc +2 -4
  529. package/deps/rocksdb/rocksdb/util/atomic.h +111 -0
  530. package/deps/rocksdb/rocksdb/util/autovector.h +5 -1
  531. package/deps/rocksdb/rocksdb/util/bloom_test.cc +12 -2
  532. package/deps/rocksdb/rocksdb/util/cast_util.h +22 -0
  533. package/deps/rocksdb/rocksdb/util/coding.h +34 -38
  534. package/deps/rocksdb/rocksdb/util/coding_test.cc +1 -1
  535. package/deps/rocksdb/rocksdb/util/comparator.cc +18 -5
  536. package/deps/rocksdb/rocksdb/util/compression_context_cache.cc +1 -1
  537. package/deps/rocksdb/rocksdb/util/concurrent_task_limiter_impl.h +4 -4
  538. package/deps/rocksdb/rocksdb/util/crc32c.cc +3 -6
  539. package/deps/rocksdb/rocksdb/util/crc32c.h +3 -3
  540. package/deps/rocksdb/rocksdb/util/crc32c_arm64.h +3 -4
  541. package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +1 -2
  542. package/deps/rocksdb/rocksdb/util/crc32c_test.cc +2 -4
  543. package/deps/rocksdb/rocksdb/util/data_structure.cc +2 -4
  544. package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +3 -2
  545. package/deps/rocksdb/rocksdb/util/file_checksum_helper.cc +3 -3
  546. package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +83 -59
  547. package/deps/rocksdb/rocksdb/util/filelock_test.cc +3 -3
  548. package/deps/rocksdb/rocksdb/util/hash.h +4 -4
  549. package/deps/rocksdb/rocksdb/util/log_write_bench.cc +3 -3
  550. package/deps/rocksdb/rocksdb/util/murmurhash.cc +1 -1
  551. package/deps/rocksdb/rocksdb/util/random.cc +3 -4
  552. package/deps/rocksdb/rocksdb/util/rate_limiter.cc +23 -43
  553. package/deps/rocksdb/rocksdb/util/rate_limiter_impl.h +21 -16
  554. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +44 -24
  555. package/deps/rocksdb/rocksdb/util/repeatable_thread_test.cc +2 -3
  556. package/deps/rocksdb/rocksdb/util/ribbon_config.cc +2 -10
  557. package/deps/rocksdb/rocksdb/util/ribbon_impl.h +2 -2
  558. package/deps/rocksdb/rocksdb/util/slice.cc +4 -5
  559. package/deps/rocksdb/rocksdb/util/slice_test.cc +70 -4
  560. package/deps/rocksdb/rocksdb/util/status.cc +1 -1
  561. package/deps/rocksdb/rocksdb/util/stderr_logger.cc +39 -7
  562. package/deps/rocksdb/rocksdb/util/stderr_logger.h +12 -2
  563. package/deps/rocksdb/rocksdb/util/string_util.cc +31 -18
  564. package/deps/rocksdb/rocksdb/util/string_util.h +9 -9
  565. package/deps/rocksdb/rocksdb/util/string_util_test.cc +36 -0
  566. package/deps/rocksdb/rocksdb/util/thread_list_test.cc +5 -5
  567. package/deps/rocksdb/rocksdb/util/thread_local.cc +1 -1
  568. package/deps/rocksdb/rocksdb/util/threadpool_imp.cc +3 -4
  569. package/deps/rocksdb/rocksdb/util/threadpool_imp.h +1 -1
  570. package/deps/rocksdb/rocksdb/util/udt_util_test.cc +4 -4
  571. package/deps/rocksdb/rocksdb/util/vector_iterator.h +12 -16
  572. package/deps/rocksdb/rocksdb/util/write_batch_util.h +5 -0
  573. package/deps/rocksdb/rocksdb/util/xxhash.h +116 -116
  574. package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.cc +4 -5
  575. package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge_impl.h +2 -2
  576. package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.cc +1 -2
  577. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +33 -31
  578. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +123 -22
  579. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +9 -7
  580. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +3 -6
  581. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +22 -55
  582. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +113 -74
  583. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +36 -24
  584. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +27 -11
  585. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +5 -3
  586. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +68 -54
  587. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +3 -6
  588. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +16 -16
  589. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +3 -2
  590. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +29 -9
  591. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +27 -14
  592. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.cc +2 -4
  593. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.h +3 -3
  594. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_format_test.cc +2 -4
  595. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +2 -4
  596. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_row_merge_test.cc +2 -4
  597. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_serialize_test.cc +2 -4
  598. package/deps/rocksdb/rocksdb/utilities/cassandra/format.cc +2 -4
  599. package/deps/rocksdb/rocksdb/utilities/cassandra/format.h +8 -8
  600. package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.cc +3 -7
  601. package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.h +7 -8
  602. package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.cc +2 -4
  603. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +9 -7
  604. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +7 -10
  605. package/deps/rocksdb/rocksdb/utilities/debug.cc +6 -2
  606. package/deps/rocksdb/rocksdb/utilities/env_mirror.cc +18 -11
  607. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.cc +2 -2
  608. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +18 -25
  609. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +32 -23
  610. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +51 -48
  611. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +5 -3
  612. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +2 -2
  613. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +1 -1
  614. package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.h +2 -3
  615. package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.cc +3 -1
  616. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.cc +7 -7
  617. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.h +10 -10
  618. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.cc +5 -6
  619. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.h +5 -6
  620. package/deps/rocksdb/rocksdb/utilities/object_registry.cc +1 -1
  621. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +1 -8
  622. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +29 -21
  623. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +14 -15
  624. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +2 -2
  625. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +1 -1
  626. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_bench.cc +3 -3
  627. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_test.cc +3 -5
  628. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +1 -1
  629. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.cc +2 -2
  630. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +8 -8
  631. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +4 -4
  632. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +1 -1
  633. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.h +6 -9
  634. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector_test.cc +2 -2
  635. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +1 -1
  636. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.h +6 -6
  637. package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.cc +1 -2
  638. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +2 -3
  639. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +1 -1
  640. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.h +1 -1
  641. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +1 -1
  642. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/db.h +5 -0
  643. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/manager.cc +1 -1
  644. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/range_buffer.cc +3 -3
  645. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/wfg.cc +1 -1
  646. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_assert_subst.h +4 -0
  647. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_external_pthread.h +4 -0
  648. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +1 -1
  649. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/txn_subst.h +4 -0
  650. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/standalone_port.cc +12 -3
  651. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc +17 -3
  652. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/growable_array.h +3 -3
  653. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/partitioned_counter.h +1 -1
  654. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +3 -3
  655. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.cc +4 -2
  656. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.h +1 -1
  657. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +1 -2
  658. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +2 -3
  659. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +3 -4
  660. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +442 -10
  661. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +27 -9
  662. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +28 -7
  663. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +70 -12
  664. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.h +50 -22
  665. package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +1 -1
  666. package/deps/rocksdb/rocksdb/utilities/transactions/timestamped_snapshot_test.cc +1 -1
  667. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +64 -3
  668. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +76 -17
  669. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.cc +6 -6
  670. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +573 -77
  671. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +6 -2
  672. package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +65 -3
  673. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +13 -11
  674. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +1 -0
  675. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +14 -16
  676. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +37 -24
  677. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +23 -29
  678. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +4 -2
  679. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +31 -40
  680. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +8 -6
  681. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.h +3 -4
  682. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +34 -18
  683. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +21 -25
  684. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +26 -5
  685. package/deps/rocksdb/rocksdb/utilities/types_util.cc +88 -0
  686. package/deps/rocksdb/rocksdb/utilities/types_util_test.cc +98 -0
  687. package/deps/rocksdb/rocksdb/utilities/util_merge_operators_test.cc +1 -1
  688. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +463 -90
  689. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +259 -76
  690. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +70 -14
  691. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +609 -10
  692. package/deps/rocksdb/rocksdb.gyp +8 -4
  693. package/index.js +18 -4
  694. package/max_rev_operator.h +2 -0
  695. package/package.json +2 -2
  696. package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
  697. package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
  698. package/util.h +29 -5
  699. package/.tap/coverage/4c642b53-6895-4ef0-9391-7c6b8d484262.json +0 -14334
  700. package/deps/rocksdb/rocksdb/table/scoped_arena_iterator.h +0 -57
@@ -25,7 +25,10 @@ class OfflineManifestWriter {
25
25
  options.table_cache_numshardbits)),
26
26
  versions_(db_path, &immutable_db_options_, sopt_, tc_.get(), &wb_, &wc_,
27
27
  /*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
28
- /*db_id*/ "", /*db_session_id*/ "") {}
28
+ /*db_id=*/"", /*db_session_id=*/"",
29
+ options.daily_offpeak_time_utc,
30
+ /*error_handler=*/nullptr,
31
+ /*read_only=*/false) {}
29
32
 
30
33
  Status Recover(const std::vector<ColumnFamilyDescriptor>& column_families) {
31
34
  return versions_.Recover(column_families, /*read_only*/ false,
@@ -33,15 +36,17 @@ class OfflineManifestWriter {
33
36
  /*no_error_if_files_missing*/ true);
34
37
  }
35
38
 
36
- Status LogAndApply(const ReadOptions& read_options, ColumnFamilyData* cfd,
39
+ Status LogAndApply(const ReadOptions& read_options,
40
+ const WriteOptions& write_options, ColumnFamilyData* cfd,
37
41
  VersionEdit* edit,
38
42
  FSDirectory* dir_contains_current_file) {
39
43
  // Use `mutex` to imitate a locked DB mutex when calling `LogAndApply()`.
40
44
  InstrumentedMutex mutex;
41
45
  mutex.Lock();
42
- Status s = versions_.LogAndApply(
43
- cfd, *cfd->GetLatestMutableCFOptions(), read_options, edit, &mutex,
44
- dir_contains_current_file, false /* new_descriptor_log */);
46
+ Status s = versions_.LogAndApply(cfd, *cfd->GetLatestMutableCFOptions(),
47
+ read_options, write_options, edit, &mutex,
48
+ dir_contains_current_file,
49
+ false /* new_descriptor_log */);
45
50
  mutex.Unlock();
46
51
  return s;
47
52
  }
@@ -153,15 +153,19 @@ void WalManager::PurgeObsoleteWALFiles() {
153
153
  return;
154
154
  }
155
155
  uint64_t const now_seconds = static_cast<uint64_t>(current_time);
156
- uint64_t const time_to_check = (ttl_enabled && !size_limit_enabled)
157
- ? db_options_.WAL_ttl_seconds / 2
158
- : kDefaultIntervalToDeleteObsoleteWAL;
159
-
160
- if (purge_wal_files_last_run_ + time_to_check > now_seconds) {
161
- return;
162
- }
163
-
164
- purge_wal_files_last_run_ = now_seconds;
156
+ uint64_t const time_to_check =
157
+ ttl_enabled
158
+ ? std::min(kDefaultIntervalToDeleteObsoleteWAL,
159
+ std::max(uint64_t{1}, db_options_.WAL_ttl_seconds / 2))
160
+ : kDefaultIntervalToDeleteObsoleteWAL;
161
+ uint64_t old_last_run_time = purge_wal_files_last_run_.LoadRelaxed();
162
+ do {
163
+ if (old_last_run_time + time_to_check > now_seconds) {
164
+ // last run is recent enough, no need to purge
165
+ return;
166
+ }
167
+ } while (!purge_wal_files_last_run_.CasWeakRelaxed(
168
+ /*expected=*/old_last_run_time, /*desired=*/now_seconds));
165
169
 
166
170
  std::string archival_dir = ArchivalDirectory(wal_dir_);
167
171
  std::vector<std::string> files;
@@ -333,8 +337,8 @@ Status WalManager::GetSortedWalsOfType(const std::string& path,
333
337
  return s;
334
338
  }
335
339
 
336
- log_files.push_back(std::unique_ptr<LogFile>(
337
- new LogFileImpl(number, log_type, sequence, size_bytes)));
340
+ log_files.emplace_back(
341
+ new LogFileImpl(number, log_type, sequence, size_bytes));
338
342
  }
339
343
  }
340
344
  std::sort(
@@ -25,6 +25,7 @@
25
25
  #include "rocksdb/status.h"
26
26
  #include "rocksdb/transaction_log.h"
27
27
  #include "rocksdb/types.h"
28
+ #include "util/atomic.h"
28
29
 
29
30
  namespace ROCKSDB_NAMESPACE {
30
31
 
@@ -118,7 +119,7 @@ class WalManager {
118
119
  port::Mutex read_first_record_cache_mutex_;
119
120
 
120
121
  // last time when PurgeObsoleteWALFiles ran.
121
- uint64_t purge_wal_files_last_run_;
122
+ RelaxedAtomic<uint64_t> purge_wal_files_last_run_;
122
123
 
123
124
  bool seq_per_batch_;
124
125
 
@@ -50,11 +50,12 @@ class WalManagerTest : public testing::Test {
50
50
  db_options_.fs = env_->GetFileSystem();
51
51
  db_options_.clock = env_->GetSystemClock().get();
52
52
 
53
- versions_.reset(
54
- new VersionSet(dbname_, &db_options_, env_options_, table_cache_.get(),
55
- &write_buffer_manager_, &write_controller_,
56
- /*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
57
- /*db_id*/ "", /*db_session_id*/ ""));
53
+ versions_.reset(new VersionSet(
54
+ dbname_, &db_options_, env_options_, table_cache_.get(),
55
+ &write_buffer_manager_, &write_controller_,
56
+ /*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
57
+ /*db_id=*/"", /*db_session_id=*/"", /*daily_offpeak_time_utc=*/"",
58
+ /*error_handler=*/nullptr, /*read_only=*/false));
58
59
 
59
60
  wal_manager_.reset(
60
61
  new WalManager(db_options_, env_options_, nullptr /*IOTracer*/));
@@ -72,8 +73,8 @@ class WalManagerTest : public testing::Test {
72
73
  WriteBatch batch;
73
74
  ASSERT_OK(batch.Put(key, value));
74
75
  WriteBatchInternal::SetSequence(&batch, seq);
75
- ASSERT_OK(
76
- current_log_writer_->AddRecord(WriteBatchInternal::Contents(&batch)));
76
+ ASSERT_OK(current_log_writer_->AddRecord(
77
+ WriteOptions(), WriteBatchInternal::Contents(&batch)));
77
78
  versions_->SetLastAllocatedSequence(seq);
78
79
  versions_->SetLastPublishedSequence(seq);
79
80
  versions_->SetLastSequence(seq);
@@ -145,7 +146,8 @@ TEST_F(WalManagerTest, ReadFirstRecordCache) {
145
146
  WriteBatch batch;
146
147
  ASSERT_OK(batch.Put("foo", "bar"));
147
148
  WriteBatchInternal::SetSequence(&batch, 10);
148
- ASSERT_OK(writer.AddRecord(WriteBatchInternal::Contents(&batch)));
149
+ ASSERT_OK(
150
+ writer.AddRecord(WriteOptions(), WriteBatchInternal::Contents(&batch)));
149
151
 
150
152
  // TODO(icanadi) move SpecialEnv outside of db_test, so we can reuse it here.
151
153
  // Waiting for lei to finish with db_test
@@ -333,4 +335,3 @@ int main(int argc, char** argv) {
333
335
  ::testing::InitGoogleTest(&argc, argv);
334
336
  return RUN_ALL_TESTS();
335
337
  }
336
-
@@ -94,7 +94,7 @@ TEST_F(DBWideBasicTest, PutEntity) {
94
94
  std::array<Status, num_keys> statuses;
95
95
 
96
96
  db_->MultiGet(ReadOptions(), db_->DefaultColumnFamily(), num_keys,
97
- &keys[0], &values[0], &statuses[0]);
97
+ keys.data(), values.data(), statuses.data());
98
98
 
99
99
  ASSERT_OK(statuses[0]);
100
100
  ASSERT_EQ(values[0], first_value_of_default_column);
@@ -114,7 +114,7 @@ TEST_F(DBWideBasicTest, PutEntity) {
114
114
  std::array<Status, num_keys> statuses;
115
115
 
116
116
  db_->MultiGetEntity(ReadOptions(), db_->DefaultColumnFamily(), num_keys,
117
- &keys[0], &results[0], &statuses[0]);
117
+ keys.data(), results.data(), statuses.data());
118
118
 
119
119
  ASSERT_OK(statuses[0]);
120
120
  ASSERT_EQ(results[0].columns(), first_columns);
@@ -236,6 +236,144 @@ TEST_F(DBWideBasicTest, PutEntityColumnFamily) {
236
236
  ASSERT_OK(db_->Write(WriteOptions(), &batch));
237
237
  }
238
238
 
239
+ TEST_F(DBWideBasicTest, GetEntityAsPinnableAttributeGroups) {
240
+ Options options = GetDefaultOptions();
241
+ CreateAndReopenWithCF({"hot_cf", "cold_cf"}, options);
242
+
243
+ constexpr int kDefaultCfHandleIndex = 0;
244
+ constexpr int kHotCfHandleIndex = 1;
245
+ constexpr int kColdCfHandleIndex = 2;
246
+
247
+ constexpr char first_key[] = "first";
248
+ WideColumns first_default_columns{
249
+ {"default_cf_col_1_name", "first_key_default_cf_col_1_value"},
250
+ {"default_cf_col_2_name", "first_key_default_cf_col_2_value"}};
251
+ WideColumns first_hot_columns{
252
+ {"hot_cf_col_1_name", "first_key_hot_cf_col_1_value"},
253
+ {"hot_cf_col_2_name", "first_key_hot_cf_col_2_value"}};
254
+ WideColumns first_cold_columns{
255
+ {"cold_cf_col_1_name", "first_key_cold_cf_col_1_value"}};
256
+
257
+ constexpr char second_key[] = "second";
258
+ WideColumns second_hot_columns{
259
+ {"hot_cf_col_1_name", "second_key_hot_cf_col_1_value"}};
260
+ WideColumns second_cold_columns{
261
+ {"cold_cf_col_1_name", "second_key_cold_cf_col_1_value"}};
262
+
263
+ AttributeGroups first_key_attribute_groups{
264
+ AttributeGroup(handles_[kDefaultCfHandleIndex], first_default_columns),
265
+ AttributeGroup(handles_[kHotCfHandleIndex], first_hot_columns),
266
+ AttributeGroup(handles_[kColdCfHandleIndex], first_cold_columns)};
267
+ AttributeGroups second_key_attribute_groups{
268
+ AttributeGroup(handles_[kHotCfHandleIndex], second_hot_columns),
269
+ AttributeGroup(handles_[kColdCfHandleIndex], second_cold_columns)};
270
+ ASSERT_OK(
271
+ db_->PutEntity(WriteOptions(), first_key, first_key_attribute_groups));
272
+ ASSERT_OK(
273
+ db_->PutEntity(WriteOptions(), second_key, second_key_attribute_groups));
274
+
275
+ std::vector<ColumnFamilyHandle*> all_cfs = handles_;
276
+ std::vector<ColumnFamilyHandle*> default_and_hot_cfs{
277
+ {handles_[kDefaultCfHandleIndex], handles_[kHotCfHandleIndex]}};
278
+ std::vector<ColumnFamilyHandle*> hot_and_cold_cfs{
279
+ {handles_[kHotCfHandleIndex], handles_[kColdCfHandleIndex]}};
280
+ std::vector<ColumnFamilyHandle*> default_null_and_hot_cfs{
281
+ handles_[kDefaultCfHandleIndex], nullptr, handles_[kHotCfHandleIndex],
282
+ nullptr};
283
+ auto create_result =
284
+ [](const std::vector<ColumnFamilyHandle*>& column_families)
285
+ -> PinnableAttributeGroups {
286
+ PinnableAttributeGroups result;
287
+ for (size_t i = 0; i < column_families.size(); ++i) {
288
+ result.emplace_back(column_families[i]);
289
+ }
290
+ return result;
291
+ };
292
+ {
293
+ // Case 1. Invalid Argument (passing in null CF)
294
+ AttributeGroups ag{
295
+ AttributeGroup(nullptr, first_default_columns),
296
+ AttributeGroup(handles_[kHotCfHandleIndex], first_hot_columns)};
297
+ ASSERT_NOK(db_->PutEntity(WriteOptions(), first_key, ag));
298
+
299
+ PinnableAttributeGroups result = create_result(default_null_and_hot_cfs);
300
+ Status s = db_->GetEntity(ReadOptions(), first_key, &result);
301
+ ASSERT_NOK(s);
302
+ ASSERT_TRUE(s.IsInvalidArgument());
303
+ // Valid CF, but failed with Incomplete status due to other attribute groups
304
+ ASSERT_TRUE(result[0].status().IsIncomplete());
305
+ // Null CF
306
+ ASSERT_TRUE(result[1].status().IsInvalidArgument());
307
+ // Valid CF, but failed with Incomplete status due to other attribute groups
308
+ ASSERT_TRUE(result[2].status().IsIncomplete());
309
+ // Null CF, but failed with Incomplete status because the nullcheck break
310
+ // out early in the loop
311
+ ASSERT_TRUE(result[3].status().IsIncomplete());
312
+ }
313
+ {
314
+ // Case 2. Get first key from default cf and hot_cf and second key from
315
+ // hot_cf and cold_cf
316
+ constexpr size_t num_column_families = 2;
317
+ PinnableAttributeGroups first_key_result =
318
+ create_result(default_and_hot_cfs);
319
+ PinnableAttributeGroups second_key_result = create_result(hot_and_cold_cfs);
320
+
321
+ // GetEntity for first_key
322
+ ASSERT_OK(db_->GetEntity(ReadOptions(), first_key, &first_key_result));
323
+ ASSERT_EQ(num_column_families, first_key_result.size());
324
+ // We expect to get values for all keys and CFs
325
+ for (size_t i = 0; i < num_column_families; ++i) {
326
+ ASSERT_OK(first_key_result[i].status());
327
+ }
328
+ // verify values for first key (default cf and hot cf)
329
+ ASSERT_EQ(first_default_columns, first_key_result[0].columns());
330
+ ASSERT_EQ(first_hot_columns, first_key_result[1].columns());
331
+
332
+ // GetEntity for second_key
333
+ ASSERT_OK(db_->GetEntity(ReadOptions(), second_key, &second_key_result));
334
+ ASSERT_EQ(num_column_families, second_key_result.size());
335
+ // We expect to get values for all keys and CFs
336
+ for (size_t i = 0; i < num_column_families; ++i) {
337
+ ASSERT_OK(second_key_result[i].status());
338
+ }
339
+ // verify values for second key (hot cf and cold cf)
340
+ ASSERT_EQ(second_hot_columns, second_key_result[0].columns());
341
+ ASSERT_EQ(second_cold_columns, second_key_result[1].columns());
342
+ }
343
+ {
344
+ // Case 3. Get first key and second key from all cfs. For the second key, we
345
+ // don't expect to get columns from default cf.
346
+ constexpr size_t num_column_families = 3;
347
+ PinnableAttributeGroups first_key_result = create_result(all_cfs);
348
+ PinnableAttributeGroups second_key_result = create_result(all_cfs);
349
+
350
+ // GetEntity for first_key
351
+ ASSERT_OK(db_->GetEntity(ReadOptions(), first_key, &first_key_result));
352
+ ASSERT_EQ(num_column_families, first_key_result.size());
353
+ // We expect to get values for all keys and CFs
354
+ for (size_t i = 0; i < num_column_families; ++i) {
355
+ ASSERT_OK(first_key_result[i].status());
356
+ }
357
+ // verify values for first key
358
+ ASSERT_EQ(first_default_columns, first_key_result[0].columns());
359
+ ASSERT_EQ(first_hot_columns, first_key_result[1].columns());
360
+ ASSERT_EQ(first_cold_columns, first_key_result[2].columns());
361
+
362
+ // GetEntity for second_key
363
+ ASSERT_OK(db_->GetEntity(ReadOptions(), second_key, &second_key_result));
364
+ ASSERT_EQ(num_column_families, second_key_result.size());
365
+ // key does not exist in default cf
366
+ ASSERT_NOK(second_key_result[0].status());
367
+ ASSERT_TRUE(second_key_result[0].status().IsNotFound());
368
+
369
+ // verify values for second key (hot cf and cold cf)
370
+ ASSERT_OK(second_key_result[1].status());
371
+ ASSERT_OK(second_key_result[2].status());
372
+ ASSERT_EQ(second_hot_columns, second_key_result[1].columns());
373
+ ASSERT_EQ(second_cold_columns, second_key_result[2].columns());
374
+ }
375
+ }
376
+
239
377
  TEST_F(DBWideBasicTest, MultiCFMultiGetEntity) {
240
378
  Options options = GetDefaultOptions();
241
379
  CreateAndReopenWithCF({"corinthian"}, options);
@@ -260,8 +398,8 @@ TEST_F(DBWideBasicTest, MultiCFMultiGetEntity) {
260
398
  std::array<PinnableWideColumns, num_keys> results;
261
399
  std::array<Status, num_keys> statuses;
262
400
 
263
- db_->MultiGetEntity(ReadOptions(), num_keys, &column_families[0], &keys[0],
264
- &results[0], &statuses[0]);
401
+ db_->MultiGetEntity(ReadOptions(), num_keys, column_families.data(),
402
+ keys.data(), results.data(), statuses.data());
265
403
 
266
404
  ASSERT_OK(statuses[0]);
267
405
  ASSERT_EQ(results[0].columns(), first_columns);
@@ -274,9 +412,9 @@ TEST_F(DBWideBasicTest, MultiCFMultiGetEntityAsPinnableAttributeGroups) {
274
412
  Options options = GetDefaultOptions();
275
413
  CreateAndReopenWithCF({"hot_cf", "cold_cf"}, options);
276
414
 
277
- constexpr int DEFAULT_CF_HANDLE_INDEX = 0;
278
- constexpr int HOT_CF_HANDLE_INDEX = 1;
279
- constexpr int COLD_CF_HANDLE_INDEX = 2;
415
+ constexpr int kDefaultCfHandleIndex = 0;
416
+ constexpr int kHotCfHandleIndex = 1;
417
+ constexpr int kColdCfHandleIndex = 2;
280
418
 
281
419
  constexpr char first_key[] = "first";
282
420
  WideColumns first_default_columns{
@@ -293,25 +431,28 @@ TEST_F(DBWideBasicTest, MultiCFMultiGetEntityAsPinnableAttributeGroups) {
293
431
  WideColumns second_cold_columns{
294
432
  {"cold_cf_col_1_name", "second_key_cold_cf_col_1_value"}};
295
433
 
296
- // TODO - update this to use the multi-attribute-group PutEntity when ready
297
- ASSERT_OK(db_->PutEntity(WriteOptions(), handles_[DEFAULT_CF_HANDLE_INDEX],
298
- first_key, first_default_columns));
299
- ASSERT_OK(db_->PutEntity(WriteOptions(), handles_[HOT_CF_HANDLE_INDEX],
300
- first_key, first_hot_columns));
301
- ASSERT_OK(db_->PutEntity(WriteOptions(), handles_[COLD_CF_HANDLE_INDEX],
302
- first_key, first_cold_columns));
303
- ASSERT_OK(db_->PutEntity(WriteOptions(), handles_[HOT_CF_HANDLE_INDEX],
304
- second_key, second_hot_columns));
305
- ASSERT_OK(db_->PutEntity(WriteOptions(), handles_[COLD_CF_HANDLE_INDEX],
306
- second_key, second_cold_columns));
434
+ AttributeGroups first_key_attribute_groups{
435
+ AttributeGroup(handles_[kDefaultCfHandleIndex], first_default_columns),
436
+ AttributeGroup(handles_[kHotCfHandleIndex], first_hot_columns),
437
+ AttributeGroup(handles_[kColdCfHandleIndex], first_cold_columns)};
438
+ AttributeGroups second_key_attribute_groups{
439
+ AttributeGroup(handles_[kHotCfHandleIndex], second_hot_columns),
440
+ AttributeGroup(handles_[kColdCfHandleIndex], second_cold_columns)};
441
+
442
+ ASSERT_OK(
443
+ db_->PutEntity(WriteOptions(), first_key, first_key_attribute_groups));
444
+ ASSERT_OK(
445
+ db_->PutEntity(WriteOptions(), second_key, second_key_attribute_groups));
307
446
 
308
447
  constexpr size_t num_keys = 2;
309
448
  std::array<Slice, num_keys> keys = {first_key, second_key};
310
449
  std::vector<ColumnFamilyHandle*> all_cfs = handles_;
311
450
  std::vector<ColumnFamilyHandle*> default_and_hot_cfs{
312
- {handles_[DEFAULT_CF_HANDLE_INDEX], handles_[HOT_CF_HANDLE_INDEX]}};
451
+ {handles_[kDefaultCfHandleIndex], handles_[kHotCfHandleIndex]}};
313
452
  std::vector<ColumnFamilyHandle*> hot_and_cold_cfs{
314
- {handles_[HOT_CF_HANDLE_INDEX], handles_[COLD_CF_HANDLE_INDEX]}};
453
+ {handles_[kHotCfHandleIndex], handles_[kColdCfHandleIndex]}};
454
+ std::vector<ColumnFamilyHandle*> null_and_hot_cfs{
455
+ nullptr, handles_[kHotCfHandleIndex], nullptr};
315
456
  auto create_result =
316
457
  [](const std::vector<ColumnFamilyHandle*>& column_families)
317
458
  -> PinnableAttributeGroups {
@@ -322,7 +463,7 @@ TEST_F(DBWideBasicTest, MultiCFMultiGetEntityAsPinnableAttributeGroups) {
322
463
  return result;
323
464
  };
324
465
  {
325
- // Check for invalid argument
466
+ // Check for invalid read option argument
326
467
  ReadOptions read_options;
327
468
  read_options.io_activity = Env::IOActivity::kGetEntity;
328
469
  std::vector<PinnableAttributeGroups> results;
@@ -336,6 +477,31 @@ TEST_F(DBWideBasicTest, MultiCFMultiGetEntityAsPinnableAttributeGroups) {
336
477
  ASSERT_TRUE(results[i][j].status().IsInvalidArgument());
337
478
  }
338
479
  }
480
+ // Check for invalid column family in Attribute Group result
481
+ results.clear();
482
+ results.emplace_back(create_result(null_and_hot_cfs));
483
+ results.emplace_back(create_result(all_cfs));
484
+ db_->MultiGetEntity(ReadOptions(), num_keys, keys.data(), results.data());
485
+
486
+ // First one failed due to null CFs in the AttributeGroup
487
+ // Null CF
488
+ ASSERT_NOK(results[0][0].status());
489
+ ASSERT_TRUE(results[0][0].status().IsInvalidArgument());
490
+ // Valid CF, but failed with incomplete status because of other attribute
491
+ // groups
492
+ ASSERT_NOK(results[0][1].status());
493
+ ASSERT_TRUE(results[0][1].status().IsIncomplete());
494
+ // Null CF
495
+ ASSERT_NOK(results[0][2].status());
496
+ ASSERT_TRUE(results[0][2].status().IsInvalidArgument());
497
+
498
+ // Second one failed with Incomplete because first one failed
499
+ ASSERT_NOK(results[1][0].status());
500
+ ASSERT_TRUE(results[1][0].status().IsIncomplete());
501
+ ASSERT_NOK(results[1][1].status());
502
+ ASSERT_TRUE(results[1][1].status().IsIncomplete());
503
+ ASSERT_NOK(results[1][2].status());
504
+ ASSERT_TRUE(results[1][2].status().IsIncomplete());
339
505
  }
340
506
  {
341
507
  // Case 1. Get first key from default cf and hot_cf and second key from
@@ -476,7 +642,7 @@ TEST_F(DBWideBasicTest, MergePlainKeyValue) {
476
642
  std::array<Status, num_keys> statuses;
477
643
 
478
644
  db_->MultiGetEntity(ReadOptions(), db_->DefaultColumnFamily(), num_keys,
479
- &keys[0], &results[0], &statuses[0]);
645
+ keys.data(), results.data(), statuses.data());
480
646
 
481
647
  ASSERT_OK(statuses[0]);
482
648
  ASSERT_EQ(results[0].columns(), expected_first_columns);
@@ -656,7 +822,7 @@ TEST_F(DBWideBasicTest, MergeEntity) {
656
822
  std::array<Status, num_keys> statuses;
657
823
 
658
824
  db_->MultiGet(ReadOptions(), db_->DefaultColumnFamily(), num_keys,
659
- &keys[0], &values[0], &statuses[0]);
825
+ keys.data(), values.data(), statuses.data());
660
826
 
661
827
  ASSERT_EQ(values[0], first_expected_default);
662
828
  ASSERT_OK(statuses[0]);
@@ -673,7 +839,7 @@ TEST_F(DBWideBasicTest, MergeEntity) {
673
839
  std::array<Status, num_keys> statuses;
674
840
 
675
841
  db_->MultiGetEntity(ReadOptions(), db_->DefaultColumnFamily(), num_keys,
676
- &keys[0], &results[0], &statuses[0]);
842
+ keys.data(), results.data(), statuses.data());
677
843
 
678
844
  ASSERT_OK(statuses[0]);
679
845
  ASSERT_EQ(results[0].columns(), first_expected_columns);
@@ -734,7 +900,7 @@ TEST_F(DBWideBasicTest, MergeEntity) {
734
900
  int number_of_operands = 0;
735
901
 
736
902
  ASSERT_OK(db_->GetMergeOperands(ReadOptions(), db_->DefaultColumnFamily(),
737
- first_key, &merge_operands[0],
903
+ first_key, merge_operands.data(),
738
904
  &get_merge_opts, &number_of_operands));
739
905
 
740
906
  ASSERT_EQ(number_of_operands, num_merge_operands);
@@ -747,7 +913,7 @@ TEST_F(DBWideBasicTest, MergeEntity) {
747
913
  int number_of_operands = 0;
748
914
 
749
915
  ASSERT_OK(db_->GetMergeOperands(ReadOptions(), db_->DefaultColumnFamily(),
750
- second_key, &merge_operands[0],
916
+ second_key, merge_operands.data(),
751
917
  &get_merge_opts, &number_of_operands));
752
918
 
753
919
  ASSERT_EQ(number_of_operands, num_merge_operands);
@@ -767,7 +933,7 @@ TEST_F(DBWideBasicTest, MergeEntity) {
767
933
  int number_of_operands = 0;
768
934
 
769
935
  ASSERT_OK(db_->GetMergeOperands(ReadOptions(), db_->DefaultColumnFamily(),
770
- first_key, &merge_operands[0],
936
+ first_key, merge_operands.data(),
771
937
  &get_merge_opts, &number_of_operands));
772
938
 
773
939
  ASSERT_EQ(number_of_operands, num_merge_operands);
@@ -779,7 +945,7 @@ TEST_F(DBWideBasicTest, MergeEntity) {
779
945
  int number_of_operands = 0;
780
946
 
781
947
  ASSERT_OK(db_->GetMergeOperands(ReadOptions(), db_->DefaultColumnFamily(),
782
- second_key, &merge_operands[0],
948
+ second_key, merge_operands.data(),
783
949
  &get_merge_opts, &number_of_operands));
784
950
 
785
951
  ASSERT_EQ(number_of_operands, num_merge_operands);
@@ -1557,6 +1723,215 @@ TEST_F(DBWideBasicTest, PutEntitySerializationError) {
1557
1723
  ASSERT_OK(db_->Write(WriteOptions(), &batch));
1558
1724
  }
1559
1725
 
1726
+ TEST_F(DBWideBasicTest, PinnableWideColumnsMove) {
1727
+ Options options = GetDefaultOptions();
1728
+
1729
+ constexpr char key1[] = "foo";
1730
+ constexpr char value[] = "bar";
1731
+ ASSERT_OK(db_->Put(WriteOptions(), db_->DefaultColumnFamily(), key1, value));
1732
+
1733
+ constexpr char key2[] = "baz";
1734
+ const WideColumns columns{{"quux", "corge"}};
1735
+ ASSERT_OK(db_->PutEntity(WriteOptions(), db_->DefaultColumnFamily(), key2,
1736
+ columns));
1737
+
1738
+ ASSERT_OK(db_->Flush(FlushOptions()));
1739
+
1740
+ const auto test_move = [&](bool fill_cache) {
1741
+ ReadOptions read_options;
1742
+ read_options.fill_cache = fill_cache;
1743
+
1744
+ {
1745
+ const WideColumns expected_columns{{kDefaultWideColumnName, value}};
1746
+
1747
+ {
1748
+ PinnableWideColumns result;
1749
+ ASSERT_OK(db_->GetEntity(read_options, db_->DefaultColumnFamily(), key1,
1750
+ &result));
1751
+ ASSERT_EQ(result.columns(), expected_columns);
1752
+
1753
+ PinnableWideColumns move_target(std::move(result));
1754
+ ASSERT_EQ(move_target.columns(), expected_columns);
1755
+ }
1756
+
1757
+ {
1758
+ PinnableWideColumns result;
1759
+ ASSERT_OK(db_->GetEntity(read_options, db_->DefaultColumnFamily(), key1,
1760
+ &result));
1761
+ ASSERT_EQ(result.columns(), expected_columns);
1762
+
1763
+ PinnableWideColumns move_target;
1764
+ move_target = std::move(result);
1765
+ ASSERT_EQ(move_target.columns(), expected_columns);
1766
+ }
1767
+ }
1768
+
1769
+ {
1770
+ PinnableWideColumns result;
1771
+ ASSERT_OK(db_->GetEntity(read_options, db_->DefaultColumnFamily(), key2,
1772
+ &result));
1773
+ ASSERT_EQ(result.columns(), columns);
1774
+
1775
+ PinnableWideColumns move_target(std::move(result));
1776
+ ASSERT_EQ(move_target.columns(), columns);
1777
+ }
1778
+
1779
+ {
1780
+ PinnableWideColumns result;
1781
+ ASSERT_OK(db_->GetEntity(read_options, db_->DefaultColumnFamily(), key2,
1782
+ &result));
1783
+ ASSERT_EQ(result.columns(), columns);
1784
+
1785
+ PinnableWideColumns move_target;
1786
+ move_target = std::move(result);
1787
+ ASSERT_EQ(move_target.columns(), columns);
1788
+ }
1789
+ };
1790
+
1791
+ // Test with and without fill_cache to cover both the case when pointers are
1792
+ // invalidated during PinnableSlice's move and when they are not.
1793
+ test_move(/* fill_cache*/ false);
1794
+ test_move(/* fill_cache*/ true);
1795
+ }
1796
+
1797
+ TEST_F(DBWideBasicTest, SanityChecks) {
1798
+ constexpr char foo[] = "foo";
1799
+ constexpr char bar[] = "bar";
1800
+ constexpr size_t num_keys = 2;
1801
+
1802
+ {
1803
+ constexpr ColumnFamilyHandle* column_family = nullptr;
1804
+ PinnableWideColumns columns;
1805
+ ASSERT_TRUE(db_->GetEntity(ReadOptions(), column_family, foo, &columns)
1806
+ .IsInvalidArgument());
1807
+ }
1808
+
1809
+ {
1810
+ constexpr PinnableWideColumns* columns = nullptr;
1811
+ ASSERT_TRUE(
1812
+ db_->GetEntity(ReadOptions(), db_->DefaultColumnFamily(), foo, columns)
1813
+ .IsInvalidArgument());
1814
+ }
1815
+
1816
+ {
1817
+ ReadOptions read_options;
1818
+ read_options.io_activity = Env::IOActivity::kGet;
1819
+
1820
+ PinnableWideColumns columns;
1821
+ ASSERT_TRUE(
1822
+ db_->GetEntity(read_options, db_->DefaultColumnFamily(), foo, &columns)
1823
+ .IsInvalidArgument());
1824
+ }
1825
+
1826
+ {
1827
+ constexpr ColumnFamilyHandle* column_family = nullptr;
1828
+ std::array<Slice, num_keys> keys{{foo, bar}};
1829
+ std::array<PinnableWideColumns, num_keys> results;
1830
+ std::array<Status, num_keys> statuses;
1831
+
1832
+ db_->MultiGetEntity(ReadOptions(), column_family, num_keys, keys.data(),
1833
+ results.data(), statuses.data());
1834
+
1835
+ ASSERT_TRUE(statuses[0].IsInvalidArgument());
1836
+ ASSERT_TRUE(statuses[1].IsInvalidArgument());
1837
+ }
1838
+
1839
+ {
1840
+ constexpr Slice* keys = nullptr;
1841
+ std::array<PinnableWideColumns, num_keys> results;
1842
+ std::array<Status, num_keys> statuses;
1843
+
1844
+ db_->MultiGetEntity(ReadOptions(), db_->DefaultColumnFamily(), num_keys,
1845
+ keys, results.data(), statuses.data());
1846
+
1847
+ ASSERT_TRUE(statuses[0].IsInvalidArgument());
1848
+ ASSERT_TRUE(statuses[1].IsInvalidArgument());
1849
+ }
1850
+
1851
+ {
1852
+ std::array<Slice, num_keys> keys{{foo, bar}};
1853
+ constexpr PinnableWideColumns* results = nullptr;
1854
+ std::array<Status, num_keys> statuses;
1855
+
1856
+ db_->MultiGetEntity(ReadOptions(), db_->DefaultColumnFamily(), num_keys,
1857
+ keys.data(), results, statuses.data());
1858
+
1859
+ ASSERT_TRUE(statuses[0].IsInvalidArgument());
1860
+ ASSERT_TRUE(statuses[1].IsInvalidArgument());
1861
+ }
1862
+
1863
+ {
1864
+ ReadOptions read_options;
1865
+ read_options.io_activity = Env::IOActivity::kMultiGet;
1866
+
1867
+ std::array<Slice, num_keys> keys{{foo, bar}};
1868
+ std::array<PinnableWideColumns, num_keys> results;
1869
+ std::array<Status, num_keys> statuses;
1870
+
1871
+ db_->MultiGetEntity(read_options, db_->DefaultColumnFamily(), num_keys,
1872
+ keys.data(), results.data(), statuses.data());
1873
+ ASSERT_TRUE(statuses[0].IsInvalidArgument());
1874
+ ASSERT_TRUE(statuses[1].IsInvalidArgument());
1875
+ }
1876
+
1877
+ {
1878
+ constexpr ColumnFamilyHandle** column_families = nullptr;
1879
+ std::array<Slice, num_keys> keys{{foo, bar}};
1880
+ std::array<PinnableWideColumns, num_keys> results;
1881
+ std::array<Status, num_keys> statuses;
1882
+
1883
+ db_->MultiGetEntity(ReadOptions(), num_keys, column_families, keys.data(),
1884
+ results.data(), statuses.data());
1885
+
1886
+ ASSERT_TRUE(statuses[0].IsInvalidArgument());
1887
+ ASSERT_TRUE(statuses[1].IsInvalidArgument());
1888
+ }
1889
+
1890
+ {
1891
+ std::array<ColumnFamilyHandle*, num_keys> column_families{
1892
+ {db_->DefaultColumnFamily(), db_->DefaultColumnFamily()}};
1893
+ constexpr Slice* keys = nullptr;
1894
+ std::array<PinnableWideColumns, num_keys> results;
1895
+ std::array<Status, num_keys> statuses;
1896
+
1897
+ db_->MultiGetEntity(ReadOptions(), num_keys, column_families.data(), keys,
1898
+ results.data(), statuses.data());
1899
+
1900
+ ASSERT_TRUE(statuses[0].IsInvalidArgument());
1901
+ ASSERT_TRUE(statuses[1].IsInvalidArgument());
1902
+ }
1903
+
1904
+ {
1905
+ std::array<ColumnFamilyHandle*, num_keys> column_families{
1906
+ {db_->DefaultColumnFamily(), db_->DefaultColumnFamily()}};
1907
+ std::array<Slice, num_keys> keys{{foo, bar}};
1908
+ constexpr PinnableWideColumns* results = nullptr;
1909
+ std::array<Status, num_keys> statuses;
1910
+
1911
+ db_->MultiGetEntity(ReadOptions(), num_keys, column_families.data(),
1912
+ keys.data(), results, statuses.data());
1913
+
1914
+ ASSERT_TRUE(statuses[0].IsInvalidArgument());
1915
+ ASSERT_TRUE(statuses[1].IsInvalidArgument());
1916
+ }
1917
+
1918
+ {
1919
+ ReadOptions read_options;
1920
+ read_options.io_activity = Env::IOActivity::kMultiGet;
1921
+
1922
+ std::array<ColumnFamilyHandle*, num_keys> column_families{
1923
+ {db_->DefaultColumnFamily(), db_->DefaultColumnFamily()}};
1924
+ std::array<Slice, num_keys> keys{{foo, bar}};
1925
+ std::array<PinnableWideColumns, num_keys> results;
1926
+ std::array<Status, num_keys> statuses;
1927
+
1928
+ db_->MultiGetEntity(read_options, num_keys, column_families.data(),
1929
+ keys.data(), results.data(), statuses.data());
1930
+ ASSERT_TRUE(statuses[0].IsInvalidArgument());
1931
+ ASSERT_TRUE(statuses[1].IsInvalidArgument());
1932
+ }
1933
+ }
1934
+
1560
1935
  } // namespace ROCKSDB_NAMESPACE
1561
1936
 
1562
1937
  int main(int argc, char** argv) {