@nxtedition/rocksdb 8.2.8 → 9.0.1

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 (483) hide show
  1. package/binding.cc +0 -21
  2. package/deps/rocksdb/rocksdb/CMakeLists.txt +20 -10
  3. package/deps/rocksdb/rocksdb/Makefile +37 -25
  4. package/deps/rocksdb/rocksdb/README.md +29 -0
  5. package/deps/rocksdb/rocksdb/TARGETS +25 -2
  6. package/deps/rocksdb/rocksdb/cache/cache.cc +35 -0
  7. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +229 -74
  8. package/deps/rocksdb/rocksdb/cache/cache_helpers.cc +2 -1
  9. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +4 -3
  10. package/deps/rocksdb/rocksdb/cache/cache_test.cc +58 -95
  11. package/deps/rocksdb/rocksdb/cache/charged_cache.cc +4 -2
  12. package/deps/rocksdb/rocksdb/cache/charged_cache.h +5 -3
  13. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +2683 -496
  14. package/deps/rocksdb/rocksdb/cache/clock_cache.h +580 -159
  15. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +145 -42
  16. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +20 -1
  17. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +391 -17
  18. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +7 -5
  19. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +309 -212
  20. package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +0 -32
  21. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +439 -12
  22. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.h +44 -2
  23. package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +11 -1
  24. package/deps/rocksdb/rocksdb/cache/sharded_cache.h +16 -3
  25. package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.cc +119 -0
  26. package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.h +155 -0
  27. package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache_test.cc +711 -0
  28. package/deps/rocksdb/rocksdb/cache/typed_cache.h +17 -11
  29. package/deps/rocksdb/rocksdb/crash_test.mk +14 -0
  30. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +28 -12
  31. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +1 -0
  32. package/deps/rocksdb/rocksdb/db/blob/blob_contents.h +2 -1
  33. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +1 -1
  34. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +1 -1
  35. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +2 -2
  36. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +1 -1
  37. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +20 -22
  38. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +1 -2
  39. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +1 -1
  40. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +2 -3
  41. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +1 -1
  42. package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +8 -0
  43. package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +7 -3
  44. package/deps/rocksdb/rocksdb/db/builder.cc +35 -10
  45. package/deps/rocksdb/rocksdb/db/c.cc +233 -6
  46. package/deps/rocksdb/rocksdb/db/c_test.c +140 -6
  47. package/deps/rocksdb/rocksdb/db/column_family.cc +110 -51
  48. package/deps/rocksdb/rocksdb/db/column_family.h +34 -2
  49. package/deps/rocksdb/rocksdb/db/column_family_test.cc +314 -7
  50. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +4 -1
  51. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +106 -23
  52. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +47 -9
  53. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +10 -11
  54. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +17 -6
  55. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +2 -2
  56. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +148 -60
  57. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +22 -7
  58. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -0
  59. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +8 -4
  60. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +33 -23
  61. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +14 -5
  62. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +11 -11
  63. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +3 -0
  64. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +90 -4
  65. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +170 -95
  66. package/deps/rocksdb/rocksdb/db/compaction/file_pri.h +3 -1
  67. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +32 -58
  68. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +3 -1
  69. package/deps/rocksdb/rocksdb/db/convenience.cc +20 -3
  70. package/deps/rocksdb/rocksdb/db/convenience_impl.h +15 -0
  71. package/deps/rocksdb/rocksdb/db/corruption_test.cc +17 -0
  72. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +1 -0
  73. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +46 -10
  74. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +13 -3
  75. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +74 -15
  76. package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +27 -3
  77. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +850 -44
  78. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +2 -29
  79. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +275 -1
  80. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +52 -19
  81. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +6 -5
  82. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +733 -320
  83. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +155 -66
  84. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +516 -155
  85. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +8 -4
  86. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +2 -1
  87. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +17 -4
  88. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +100 -35
  89. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +95 -50
  90. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +13 -9
  91. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +136 -79
  92. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +6 -95
  93. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +31 -22
  94. package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +6 -0
  95. package/deps/rocksdb/rocksdb/db/db_iter.cc +85 -57
  96. package/deps/rocksdb/rocksdb/db/db_iter.h +11 -2
  97. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +29 -0
  98. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +276 -21
  99. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +35 -0
  100. package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +4 -11
  101. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +193 -7
  102. package/deps/rocksdb/rocksdb/db/db_options_test.cc +294 -26
  103. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +26 -36
  104. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +364 -0
  105. package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +13 -3
  106. package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +52 -0
  107. package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +74 -1
  108. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +22 -4
  109. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +1 -1
  110. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +1 -0
  111. package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +282 -167
  112. package/deps/rocksdb/rocksdb/db/db_test.cc +180 -49
  113. package/deps/rocksdb/rocksdb/db/db_test2.cc +84 -12
  114. package/deps/rocksdb/rocksdb/db/db_test_util.cc +25 -12
  115. package/deps/rocksdb/rocksdb/db/db_test_util.h +45 -2
  116. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +14 -1
  117. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +245 -0
  118. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +480 -1
  119. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +6 -6
  120. package/deps/rocksdb/rocksdb/db/db_write_test.cc +2 -2
  121. package/deps/rocksdb/rocksdb/db/dbformat.cc +36 -0
  122. package/deps/rocksdb/rocksdb/db/dbformat.h +169 -20
  123. package/deps/rocksdb/rocksdb/db/dbformat_test.cc +129 -0
  124. package/deps/rocksdb/rocksdb/db/deletefile_test.cc +2 -0
  125. package/deps/rocksdb/rocksdb/db/error_handler.cc +67 -34
  126. package/deps/rocksdb/rocksdb/db/error_handler.h +13 -9
  127. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +4 -4
  128. package/deps/rocksdb/rocksdb/db/event_helpers.cc +4 -0
  129. package/deps/rocksdb/rocksdb/db/experimental.cc +2 -1
  130. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +4 -4
  131. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +17 -8
  132. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +144 -4
  133. package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +1 -1
  134. package/deps/rocksdb/rocksdb/db/file_indexer.cc +2 -4
  135. package/deps/rocksdb/rocksdb/db/flush_job.cc +105 -17
  136. package/deps/rocksdb/rocksdb/db/flush_job.h +27 -4
  137. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +90 -12
  138. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +2 -3
  139. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +159 -91
  140. package/deps/rocksdb/rocksdb/db/import_column_family_job.h +19 -10
  141. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +143 -0
  142. package/deps/rocksdb/rocksdb/db/internal_stats.cc +13 -1
  143. package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -0
  144. package/deps/rocksdb/rocksdb/db/listener_test.cc +2 -1
  145. package/deps/rocksdb/rocksdb/db/log_reader.h +3 -2
  146. package/deps/rocksdb/rocksdb/db/log_test.cc +17 -21
  147. package/deps/rocksdb/rocksdb/db/log_writer.cc +1 -1
  148. package/deps/rocksdb/rocksdb/db/log_writer.h +3 -2
  149. package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +6 -3
  150. package/deps/rocksdb/rocksdb/db/memtable.cc +70 -83
  151. package/deps/rocksdb/rocksdb/db/memtable.h +45 -1
  152. package/deps/rocksdb/rocksdb/db/memtable_list.cc +45 -11
  153. package/deps/rocksdb/rocksdb/db/memtable_list.h +43 -2
  154. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +91 -5
  155. package/deps/rocksdb/rocksdb/db/merge_helper.cc +330 -115
  156. package/deps/rocksdb/rocksdb/db/merge_helper.h +100 -12
  157. package/deps/rocksdb/rocksdb/db/merge_operator.cc +82 -0
  158. package/deps/rocksdb/rocksdb/db/merge_test.cc +267 -0
  159. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +5 -2
  160. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.h +4 -4
  161. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +3 -0
  162. package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -0
  163. package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +4 -0
  164. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +4 -0
  165. package/deps/rocksdb/rocksdb/db/repair.cc +25 -7
  166. package/deps/rocksdb/rocksdb/db/repair_test.cc +143 -2
  167. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +459 -74
  168. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +105 -69
  169. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +83 -46
  170. package/deps/rocksdb/rocksdb/db/table_cache.cc +76 -54
  171. package/deps/rocksdb/rocksdb/db/table_cache.h +18 -12
  172. package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +2 -2
  173. package/deps/rocksdb/rocksdb/db/version_builder.cc +0 -1
  174. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +236 -204
  175. package/deps/rocksdb/rocksdb/db/version_edit.cc +66 -4
  176. package/deps/rocksdb/rocksdb/db/version_edit.h +58 -10
  177. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +80 -8
  178. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +12 -0
  179. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +86 -17
  180. package/deps/rocksdb/rocksdb/db/version_set.cc +207 -110
  181. package/deps/rocksdb/rocksdb/db/version_set.h +36 -15
  182. package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +2 -5
  183. package/deps/rocksdb/rocksdb/db/version_set_test.cc +47 -26
  184. package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +525 -0
  185. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +6 -22
  186. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +0 -20
  187. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +0 -29
  188. package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper.cc +46 -0
  189. package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper.h +40 -0
  190. package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper_test.cc +39 -0
  191. package/deps/rocksdb/rocksdb/db/write_batch.cc +55 -20
  192. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +3 -0
  193. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +16 -0
  194. package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +1 -0
  195. package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +4 -4
  196. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +4 -7
  197. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +88 -10
  198. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +37 -13
  199. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +110 -58
  200. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +42 -0
  201. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +68 -17
  202. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +34 -0
  203. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +8 -1
  204. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +429 -237
  205. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +13 -6
  206. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +21 -14
  207. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_wide_merge_operator.cc +51 -0
  208. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_wide_merge_operator.h +27 -0
  209. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +3 -6
  210. package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.h +2 -0
  211. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +29 -38
  212. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +302 -101
  213. package/deps/rocksdb/rocksdb/env/env.cc +6 -2
  214. package/deps/rocksdb/rocksdb/env/env_encryption.cc +11 -165
  215. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +0 -17
  216. package/deps/rocksdb/rocksdb/env/env_posix.cc +6 -2
  217. package/deps/rocksdb/rocksdb/env/env_test.cc +86 -2
  218. package/deps/rocksdb/rocksdb/env/fs_posix.cc +6 -4
  219. package/deps/rocksdb/rocksdb/env/unique_id_gen.cc +79 -0
  220. package/deps/rocksdb/rocksdb/env/unique_id_gen.h +34 -0
  221. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +1 -0
  222. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +15 -4
  223. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +100 -70
  224. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +64 -18
  225. package/deps/rocksdb/rocksdb/file/file_util.cc +10 -5
  226. package/deps/rocksdb/rocksdb/file/file_util.h +13 -1
  227. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +1225 -97
  228. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +72 -33
  229. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +3 -16
  230. package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +23 -12
  231. package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +3 -0
  232. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +40 -14
  233. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +163 -91
  234. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +112 -2
  235. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +108 -16
  236. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +11 -0
  237. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +3 -0
  238. package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +42 -2
  239. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +1 -1
  240. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +92 -12
  241. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +34 -4
  242. package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +9 -109
  243. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +91 -13
  244. package/deps/rocksdb/rocksdb/include/rocksdb/filter_policy.h +8 -3
  245. package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +10 -4
  246. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +7 -0
  247. package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +1 -1
  248. package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +55 -4
  249. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +130 -22
  250. package/deps/rocksdb/rocksdb/include/rocksdb/port_defs.h +4 -0
  251. package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +9 -0
  252. package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +92 -9
  253. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +2 -1
  254. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +5 -1
  255. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +37 -2
  256. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +35 -0
  257. package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +15 -0
  258. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +7 -1
  259. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +20 -3
  260. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +7 -0
  261. package/deps/rocksdb/rocksdb/include/rocksdb/types.h +7 -0
  262. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +6 -1
  263. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +33 -2
  264. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +2 -1
  265. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +14 -0
  266. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +42 -2
  267. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +0 -3
  268. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  269. package/deps/rocksdb/rocksdb/include/rocksdb/wide_columns.h +53 -2
  270. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +3 -2
  271. package/deps/rocksdb/rocksdb/memory/arena_test.cc +18 -11
  272. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +4 -3
  273. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +1 -1
  274. package/deps/rocksdb/rocksdb/microbench/README.md +60 -0
  275. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +69 -34
  276. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +1 -1
  277. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +22 -1
  278. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +18 -7
  279. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +14 -0
  280. package/deps/rocksdb/rocksdb/options/cf_options.cc +19 -0
  281. package/deps/rocksdb/rocksdb/options/cf_options.h +10 -2
  282. package/deps/rocksdb/rocksdb/options/customizable_test.cc +6 -1
  283. package/deps/rocksdb/rocksdb/options/db_options.cc +54 -2
  284. package/deps/rocksdb/rocksdb/options/db_options.h +4 -0
  285. package/deps/rocksdb/rocksdb/options/options.cc +15 -1
  286. package/deps/rocksdb/rocksdb/options/options_helper.cc +18 -0
  287. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +14 -4
  288. package/deps/rocksdb/rocksdb/options/options_test.cc +14 -1
  289. package/deps/rocksdb/rocksdb/plugin/README.md +43 -0
  290. package/deps/rocksdb/rocksdb/port/README +10 -0
  291. package/deps/rocksdb/rocksdb/port/mmap.h +20 -0
  292. package/deps/rocksdb/rocksdb/port/port_example.h +1 -1
  293. package/deps/rocksdb/rocksdb/port/port_posix.cc +1 -1
  294. package/deps/rocksdb/rocksdb/port/port_posix.h +7 -4
  295. package/deps/rocksdb/rocksdb/port/stack_trace.cc +32 -12
  296. package/deps/rocksdb/rocksdb/port/win/env_win.h +1 -1
  297. package/deps/rocksdb/rocksdb/port/win/port_win.h +5 -2
  298. package/deps/rocksdb/rocksdb/src.mk +10 -1
  299. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
  300. package/deps/rocksdb/rocksdb/table/block_based/block.cc +48 -22
  301. package/deps/rocksdb/rocksdb/table/block_based/block.h +60 -12
  302. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +116 -43
  303. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +9 -6
  304. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +321 -49
  305. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +98 -4
  306. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +233 -98
  307. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +58 -23
  308. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +12 -8
  309. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +52 -24
  310. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +219 -51
  311. package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +41 -8
  312. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +25 -1
  313. package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +3 -1
  314. package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +26 -7
  315. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +50 -18
  316. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +20 -8
  317. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +232 -71
  318. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +6 -6
  319. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +44 -26
  320. package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +2 -1
  321. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +1 -1
  322. package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +31 -16
  323. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +97 -58
  324. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +2 -2
  325. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +6 -0
  326. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +36 -19
  327. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +3 -1
  328. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +114 -70
  329. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +4 -3
  330. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +11 -7
  331. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +15 -3
  332. package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +6 -3
  333. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +1 -1
  334. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +14 -13
  335. package/deps/rocksdb/rocksdb/table/block_fetcher.h +4 -0
  336. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +9 -2
  337. package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +1 -0
  338. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +6 -2
  339. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +1 -2
  340. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +2 -3
  341. package/deps/rocksdb/rocksdb/table/format.cc +175 -33
  342. package/deps/rocksdb/rocksdb/table/format.h +63 -10
  343. package/deps/rocksdb/rocksdb/table/get_context.cc +52 -89
  344. package/deps/rocksdb/rocksdb/table/get_context.h +12 -3
  345. package/deps/rocksdb/rocksdb/table/internal_iterator.h +11 -0
  346. package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +29 -1
  347. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +22 -2
  348. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +12 -4
  349. package/deps/rocksdb/rocksdb/table/meta_blocks.h +1 -0
  350. package/deps/rocksdb/rocksdb/table/mock_table.cc +8 -3
  351. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +10 -5
  352. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +10 -1
  353. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +1 -2
  354. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +3 -3
  355. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +45 -9
  356. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +1 -0
  357. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +24 -1
  358. package/deps/rocksdb/rocksdb/table/table_builder.h +6 -2
  359. package/deps/rocksdb/rocksdb/table/table_properties.cc +6 -0
  360. package/deps/rocksdb/rocksdb/table/table_reader.h +6 -0
  361. package/deps/rocksdb/rocksdb/table/table_test.cc +52 -22
  362. package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +31 -0
  363. package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.cc +2 -1
  364. package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.h +19 -7
  365. package/deps/rocksdb/rocksdb/test_util/sync_point.h +3 -1
  366. package/deps/rocksdb/rocksdb/test_util/testutil.cc +29 -0
  367. package/deps/rocksdb/rocksdb/test_util/testutil.h +19 -0
  368. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim.py +3 -3
  369. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +87 -65
  370. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +221 -33
  371. package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +36 -0
  372. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -1
  373. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +1 -0
  374. package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +33 -11
  375. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +4 -0
  376. package/deps/rocksdb/rocksdb/unreleased_history/README.txt +73 -0
  377. package/deps/rocksdb/rocksdb/unreleased_history/add.sh +27 -0
  378. package/deps/rocksdb/rocksdb/unreleased_history/behavior_changes/.gitkeep +0 -0
  379. package/deps/rocksdb/rocksdb/unreleased_history/bug_fixes/.gitkeep +0 -0
  380. package/deps/rocksdb/rocksdb/unreleased_history/new_features/.gitkeep +0 -0
  381. package/deps/rocksdb/rocksdb/unreleased_history/performance_improvements/.gitkeep +0 -0
  382. package/deps/rocksdb/rocksdb/unreleased_history/public_api_changes/.gitkeep +0 -0
  383. package/deps/rocksdb/rocksdb/unreleased_history/release.sh +104 -0
  384. package/deps/rocksdb/rocksdb/util/async_file_reader.cc +5 -0
  385. package/deps/rocksdb/rocksdb/util/bloom_impl.h +3 -3
  386. package/deps/rocksdb/rocksdb/util/bloom_test.cc +32 -11
  387. package/deps/rocksdb/rocksdb/util/cast_util.h +24 -0
  388. package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +2 -0
  389. package/deps/rocksdb/rocksdb/util/comparator.cc +55 -8
  390. package/deps/rocksdb/rocksdb/util/compression.cc +4 -4
  391. package/deps/rocksdb/rocksdb/util/compression.h +119 -35
  392. package/deps/rocksdb/rocksdb/util/core_local.h +2 -1
  393. package/deps/rocksdb/rocksdb/util/crc32c.cc +7 -1
  394. package/deps/rocksdb/rocksdb/util/distributed_mutex.h +1 -1
  395. package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +4 -4
  396. package/deps/rocksdb/rocksdb/util/filelock_test.cc +3 -0
  397. package/deps/rocksdb/rocksdb/util/hash.h +7 -3
  398. package/deps/rocksdb/rocksdb/util/hash_test.cc +44 -0
  399. package/deps/rocksdb/rocksdb/util/math.h +58 -6
  400. package/deps/rocksdb/rocksdb/util/math128.h +29 -7
  401. package/deps/rocksdb/rocksdb/util/mutexlock.h +35 -27
  402. package/deps/rocksdb/rocksdb/util/overload.h +23 -0
  403. package/deps/rocksdb/rocksdb/util/rate_limiter.cc +53 -18
  404. package/deps/rocksdb/rocksdb/util/rate_limiter_impl.h +6 -1
  405. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +90 -19
  406. package/deps/rocksdb/rocksdb/util/single_thread_executor.h +1 -0
  407. package/deps/rocksdb/rocksdb/util/slice_test.cc +30 -0
  408. package/deps/rocksdb/rocksdb/util/status.cc +1 -0
  409. package/deps/rocksdb/rocksdb/util/stop_watch.h +1 -1
  410. package/deps/rocksdb/rocksdb/util/string_util.cc +39 -0
  411. package/deps/rocksdb/rocksdb/util/string_util.h +10 -0
  412. package/deps/rocksdb/rocksdb/util/thread_operation.h +10 -1
  413. package/deps/rocksdb/rocksdb/util/udt_util.cc +385 -0
  414. package/deps/rocksdb/rocksdb/util/udt_util.h +192 -1
  415. package/deps/rocksdb/rocksdb/util/udt_util_test.cc +461 -0
  416. package/deps/rocksdb/rocksdb/util/write_batch_util.cc +25 -0
  417. package/deps/rocksdb/rocksdb/util/write_batch_util.h +80 -0
  418. package/deps/rocksdb/rocksdb/util/xxhash.h +0 -3
  419. package/deps/rocksdb/rocksdb/util/xxph3.h +0 -4
  420. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +4 -4
  421. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +71 -26
  422. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +7 -6
  423. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +1 -1
  424. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +2 -3
  425. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +6 -11
  426. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +1 -2
  427. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +4 -5
  428. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +1 -0
  429. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +20 -16
  430. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +11 -7
  431. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +2 -2
  432. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +7 -1
  433. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +3 -0
  434. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +12 -3
  435. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +1 -2
  436. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +7 -4
  437. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +2 -3
  438. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +2 -2
  439. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +1 -1
  440. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/README +13 -0
  441. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +23 -8
  442. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +9 -6
  443. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +37 -12
  444. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +272 -33
  445. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +15 -9
  446. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +4 -1
  447. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +76 -20
  448. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +18 -9
  449. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +195 -23
  450. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +19 -12
  451. package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +88 -1
  452. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +1 -1
  453. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +43 -17
  454. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +6 -3
  455. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +73 -24
  456. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +19 -4
  457. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +60 -107
  458. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +41 -12
  459. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +6 -3
  460. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +15 -8
  461. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.h +1 -1
  462. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +10 -5
  463. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +1 -1
  464. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +1 -1
  465. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +59 -28
  466. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +127 -120
  467. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +129 -59
  468. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +111 -14
  469. package/deps/rocksdb/rocksdb.gyp +6 -2
  470. package/index.js +0 -8
  471. package/package.json +1 -1
  472. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  473. package/prebuilds/linux-x64/node.napi.node +0 -0
  474. package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +0 -7
  475. package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +0 -29
  476. package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +0 -29
  477. package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +0 -29
  478. package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +0 -33
  479. package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +0 -29
  480. package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +0 -29
  481. package/deps/rocksdb/rocksdb/cmake/modules/Finduring.cmake +0 -26
  482. package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +0 -29
  483. package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +0 -10
@@ -34,7 +34,8 @@
34
34
  namespace ROCKSDB_NAMESPACE {
35
35
 
36
36
  std::string GenerateInternalKey(int primary_key, int secondary_key,
37
- int padding_size, Random *rnd) {
37
+ int padding_size, Random *rnd,
38
+ size_t ts_sz = 0) {
38
39
  char buf[50];
39
40
  char *p = &buf[0];
40
41
  snprintf(buf, sizeof(buf), "%6d%4d", primary_key, secondary_key);
@@ -43,6 +44,11 @@ std::string GenerateInternalKey(int primary_key, int secondary_key,
43
44
  k += rnd->RandomString(padding_size);
44
45
  }
45
46
  AppendInternalKeyFooter(&k, 0 /* seqno */, kTypeValue);
47
+ std::string key_with_ts;
48
+ if (ts_sz > 0) {
49
+ PadInternalKeyWithMinTimestamp(&key_with_ts, k, ts_sz);
50
+ return key_with_ts;
51
+ }
46
52
 
47
53
  return k;
48
54
  }
@@ -54,7 +60,7 @@ void GenerateRandomKVs(std::vector<std::string> *keys,
54
60
  std::vector<std::string> *values, const int from,
55
61
  const int len, const int step = 1,
56
62
  const int padding_size = 0,
57
- const int keys_share_prefix = 1) {
63
+ const int keys_share_prefix = 1, size_t ts_sz = 0) {
58
64
  Random rnd(302);
59
65
 
60
66
  // generate different prefix
@@ -62,7 +68,7 @@ void GenerateRandomKVs(std::vector<std::string> *keys,
62
68
  // generating keys that shares the prefix
63
69
  for (int j = 0; j < keys_share_prefix; ++j) {
64
70
  // `DataBlockIter` assumes it reads only internal keys.
65
- keys->emplace_back(GenerateInternalKey(i, j, padding_size, &rnd));
71
+ keys->emplace_back(GenerateInternalKey(i, j, padding_size, &rnd, ts_sz));
66
72
 
67
73
  // 100 bytes values
68
74
  values->emplace_back(rnd.RandomString(100));
@@ -70,19 +76,49 @@ void GenerateRandomKVs(std::vector<std::string> *keys,
70
76
  }
71
77
  }
72
78
 
73
- class BlockTest : public testing::Test {};
79
+ // Test Param 1): key use delta encoding.
80
+ // Test Param 2): user-defined timestamp test mode.
81
+ // Test Param 3): data block index type.
82
+ class BlockTest : public testing::Test,
83
+ public testing::WithParamInterface<
84
+ std::tuple<bool, test::UserDefinedTimestampTestMode,
85
+ BlockBasedTableOptions::DataBlockIndexType>> {
86
+ public:
87
+ bool keyUseDeltaEncoding() const { return std::get<0>(GetParam()); }
88
+ bool isUDTEnabled() const {
89
+ return test::IsUDTEnabled(std::get<1>(GetParam()));
90
+ }
91
+ bool shouldPersistUDT() const {
92
+ return test::ShouldPersistUDT(std::get<1>(GetParam()));
93
+ }
94
+
95
+ BlockBasedTableOptions::DataBlockIndexType dataBlockIndexType() const {
96
+ return std::get<2>(GetParam());
97
+ }
98
+ };
74
99
 
75
100
  // block test
76
- TEST_F(BlockTest, SimpleTest) {
101
+ TEST_P(BlockTest, SimpleTest) {
77
102
  Random rnd(301);
78
103
  Options options = Options();
104
+ if (isUDTEnabled()) {
105
+ options.comparator = test::BytewiseComparatorWithU64TsWrapper();
106
+ }
107
+ size_t ts_sz = options.comparator->timestamp_size();
79
108
 
80
109
  std::vector<std::string> keys;
81
110
  std::vector<std::string> values;
82
- BlockBuilder builder(16);
111
+ BlockBasedTableOptions::DataBlockIndexType index_type =
112
+ isUDTEnabled() ? BlockBasedTableOptions::kDataBlockBinarySearch
113
+ : dataBlockIndexType();
114
+ BlockBuilder builder(16, keyUseDeltaEncoding(),
115
+ false /* use_value_delta_encoding */, index_type,
116
+ 0.75 /* data_block_hash_table_util_ratio */, ts_sz,
117
+ shouldPersistUDT(), false /* is_user_key */);
83
118
  int num_records = 100000;
84
119
 
85
- GenerateRandomKVs(&keys, &values, 0, num_records);
120
+ GenerateRandomKVs(&keys, &values, 0, num_records, 1 /* step */,
121
+ 0 /* padding_size */, 1 /* keys_share_prefix */, ts_sz);
86
122
  // add a bunch of records to a block
87
123
  for (int i = 0; i < num_records; i++) {
88
124
  builder.Add(keys[i], values[i]);
@@ -98,8 +134,10 @@ TEST_F(BlockTest, SimpleTest) {
98
134
 
99
135
  // read contents of block sequentially
100
136
  int count = 0;
101
- InternalIterator *iter =
102
- reader.NewDataIterator(options.comparator, kDisableGlobalSequenceNumber);
137
+ InternalIterator *iter = reader.NewDataIterator(
138
+ options.comparator, kDisableGlobalSequenceNumber, nullptr /* iter */,
139
+ nullptr /* stats */, false /* block_contents_pinned */,
140
+ shouldPersistUDT());
103
141
  for (iter->SeekToFirst(); iter->Valid(); count++, iter->Next()) {
104
142
  // read kv from block
105
143
  Slice k = iter->key();
@@ -112,8 +150,10 @@ TEST_F(BlockTest, SimpleTest) {
112
150
  delete iter;
113
151
 
114
152
  // read block contents randomly
115
- iter =
116
- reader.NewDataIterator(options.comparator, kDisableGlobalSequenceNumber);
153
+ iter = reader.NewDataIterator(
154
+ options.comparator, kDisableGlobalSequenceNumber, nullptr /* iter */,
155
+ nullptr /* stats */, false /* block_contents_pinned */,
156
+ shouldPersistUDT());
117
157
  for (int i = 0; i < num_records; i++) {
118
158
  // find a random key in the lookaside array
119
159
  int index = rnd.Uniform(num_records);
@@ -129,11 +169,18 @@ TEST_F(BlockTest, SimpleTest) {
129
169
  }
130
170
 
131
171
  // return the block contents
132
- BlockContents GetBlockContents(std::unique_ptr<BlockBuilder> *builder,
133
- const std::vector<std::string> &keys,
134
- const std::vector<std::string> &values,
135
- const int /*prefix_group_size*/ = 1) {
136
- builder->reset(new BlockBuilder(1 /* restart interval */));
172
+ BlockContents GetBlockContents(
173
+ std::unique_ptr<BlockBuilder> *builder,
174
+ const std::vector<std::string> &keys,
175
+ const std::vector<std::string> &values, bool key_use_delta_encoding,
176
+ size_t ts_sz, bool should_persist_udt, const int /*prefix_group_size*/ = 1,
177
+ BlockBasedTableOptions::DataBlockIndexType dblock_index_type =
178
+ BlockBasedTableOptions::DataBlockIndexType::kDataBlockBinarySearch) {
179
+ builder->reset(
180
+ new BlockBuilder(1 /* restart interval */, key_use_delta_encoding,
181
+ false /* use_value_delta_encoding */, dblock_index_type,
182
+ 0.75 /* data_block_hash_table_util_ratio */, ts_sz,
183
+ should_persist_udt, false /* is_user_key */));
137
184
 
138
185
  // Add only half of the keys
139
186
  for (size_t i = 0; i < keys.size(); ++i) {
@@ -149,7 +196,8 @@ BlockContents GetBlockContents(std::unique_ptr<BlockBuilder> *builder,
149
196
 
150
197
  void CheckBlockContents(BlockContents contents, const int max_key,
151
198
  const std::vector<std::string> &keys,
152
- const std::vector<std::string> &values) {
199
+ const std::vector<std::string> &values,
200
+ bool is_udt_enabled, bool should_persist_udt) {
153
201
  const size_t prefix_size = 6;
154
202
  // create block reader
155
203
  BlockContents contents_ref(contents.data);
@@ -160,7 +208,10 @@ void CheckBlockContents(BlockContents contents, const int max_key,
160
208
  NewFixedPrefixTransform(prefix_size));
161
209
 
162
210
  std::unique_ptr<InternalIterator> regular_iter(reader2.NewDataIterator(
163
- BytewiseComparator(), kDisableGlobalSequenceNumber));
211
+ is_udt_enabled ? test::BytewiseComparatorWithU64TsWrapper()
212
+ : BytewiseComparator(),
213
+ kDisableGlobalSequenceNumber, nullptr /* iter */, nullptr /* stats */,
214
+ false /* block_contents_pinned */, should_persist_udt));
164
215
 
165
216
  // Seek existent keys
166
217
  for (size_t i = 0; i < keys.size(); i++) {
@@ -178,46 +229,79 @@ void CheckBlockContents(BlockContents contents, const int max_key,
178
229
  // return the one that is closest.
179
230
  for (int i = 1; i < max_key - 1; i += 2) {
180
231
  // `DataBlockIter` assumes its APIs receive only internal keys.
181
- auto key = GenerateInternalKey(i, 0, 0, nullptr);
232
+ auto key = GenerateInternalKey(i, 0, 0, nullptr,
233
+ is_udt_enabled ? 8 : 0 /* ts_sz */);
182
234
  regular_iter->Seek(key);
183
235
  ASSERT_TRUE(regular_iter->Valid());
184
236
  }
185
237
  }
186
238
 
187
239
  // In this test case, no two key share same prefix.
188
- TEST_F(BlockTest, SimpleIndexHash) {
240
+ TEST_P(BlockTest, SimpleIndexHash) {
189
241
  const int kMaxKey = 100000;
242
+ size_t ts_sz = isUDTEnabled() ? 8 : 0;
190
243
  std::vector<std::string> keys;
191
244
  std::vector<std::string> values;
192
245
  GenerateRandomKVs(&keys, &values, 0 /* first key id */,
193
246
  kMaxKey /* last key id */, 2 /* step */,
194
- 8 /* padding size (8 bytes randomly generated suffix) */);
247
+ 8 /* padding size (8 bytes randomly generated suffix) */,
248
+ 1 /* keys_share_prefix */, ts_sz);
195
249
 
196
250
  std::unique_ptr<BlockBuilder> builder;
197
- auto contents = GetBlockContents(&builder, keys, values);
198
251
 
199
- CheckBlockContents(std::move(contents), kMaxKey, keys, values);
252
+ auto contents = GetBlockContents(
253
+ &builder, keys, values, keyUseDeltaEncoding(), ts_sz, shouldPersistUDT(),
254
+ 1 /* prefix_group_size */,
255
+ isUDTEnabled()
256
+ ? BlockBasedTableOptions::DataBlockIndexType::kDataBlockBinarySearch
257
+ : dataBlockIndexType());
258
+
259
+ CheckBlockContents(std::move(contents), kMaxKey, keys, values, isUDTEnabled(),
260
+ shouldPersistUDT());
200
261
  }
201
262
 
202
- TEST_F(BlockTest, IndexHashWithSharedPrefix) {
263
+ TEST_P(BlockTest, IndexHashWithSharedPrefix) {
203
264
  const int kMaxKey = 100000;
204
265
  // for each prefix, there will be 5 keys starts with it.
205
266
  const int kPrefixGroup = 5;
267
+ size_t ts_sz = isUDTEnabled() ? 8 : 0;
206
268
  std::vector<std::string> keys;
207
269
  std::vector<std::string> values;
208
270
  // Generate keys with same prefix.
209
271
  GenerateRandomKVs(&keys, &values, 0, // first key id
210
272
  kMaxKey, // last key id
211
- 2, // step
212
- 10, // padding size,
213
- kPrefixGroup);
273
+ 2 /* step */,
274
+ 10 /* padding size (8 bytes randomly generated suffix) */,
275
+ kPrefixGroup /* keys_share_prefix */, ts_sz);
214
276
 
215
277
  std::unique_ptr<BlockBuilder> builder;
216
- auto contents = GetBlockContents(&builder, keys, values, kPrefixGroup);
217
278
 
218
- CheckBlockContents(std::move(contents), kMaxKey, keys, values);
279
+ auto contents = GetBlockContents(
280
+ &builder, keys, values, keyUseDeltaEncoding(), isUDTEnabled(),
281
+ shouldPersistUDT(), kPrefixGroup,
282
+ isUDTEnabled()
283
+ ? BlockBasedTableOptions::DataBlockIndexType::kDataBlockBinarySearch
284
+ : dataBlockIndexType());
285
+
286
+ CheckBlockContents(std::move(contents), kMaxKey, keys, values, isUDTEnabled(),
287
+ shouldPersistUDT());
219
288
  }
220
289
 
290
+ // Param 0: key use delta encoding
291
+ // Param 1: user-defined timestamp test mode
292
+ // Param 2: data block index type. User-defined timestamp feature is not
293
+ // compatible with `kDataBlockBinaryAndHash` data block index type because the
294
+ // user comparator doesn't provide a `CanKeysWithDifferentByteContentsBeEqual`
295
+ // override. This combination is disabled.
296
+ INSTANTIATE_TEST_CASE_P(
297
+ P, BlockTest,
298
+ ::testing::Combine(
299
+ ::testing::Bool(), ::testing::ValuesIn(test::GetUDTTestModes()),
300
+ ::testing::Values(
301
+ BlockBasedTableOptions::DataBlockIndexType::kDataBlockBinarySearch,
302
+ BlockBasedTableOptions::DataBlockIndexType::
303
+ kDataBlockBinaryAndHash)));
304
+
221
305
  // A slow and accurate version of BlockReadAmpBitmap that simply store
222
306
  // all the marked ranges in a set.
223
307
  class BlockReadAmpBitmapSlowAndAccurate {
@@ -362,7 +446,7 @@ TEST_F(BlockTest, BlockWithReadAmpBitmap) {
362
446
  BlockBuilder builder(16);
363
447
  int num_records = 10000;
364
448
 
365
- GenerateRandomKVs(&keys, &values, 0, num_records, 1);
449
+ GenerateRandomKVs(&keys, &values, 0, num_records, 1 /* step */);
366
450
  // add a bunch of records to a block
367
451
  for (int i = 0; i < num_records; i++) {
368
452
  builder.Add(keys[i], values[i]);
@@ -495,19 +579,28 @@ TEST_F(BlockTest, ReadAmpBitmapPow2) {
495
579
 
496
580
  class IndexBlockTest
497
581
  : public testing::Test,
498
- public testing::WithParamInterface<std::tuple<bool, bool>> {
582
+ public testing::WithParamInterface<
583
+ std::tuple<bool, bool, bool, test::UserDefinedTimestampTestMode>> {
499
584
  public:
500
585
  IndexBlockTest() = default;
501
586
 
502
- bool useValueDeltaEncoding() const { return std::get<0>(GetParam()); }
503
- bool includeFirstKey() const { return std::get<1>(GetParam()); }
587
+ bool keyIncludesSeq() const { return std::get<0>(GetParam()); }
588
+ bool useValueDeltaEncoding() const { return std::get<1>(GetParam()); }
589
+ bool includeFirstKey() const { return std::get<2>(GetParam()); }
590
+ bool isUDTEnabled() const {
591
+ return test::IsUDTEnabled(std::get<3>(GetParam()));
592
+ }
593
+ bool shouldPersistUDT() const {
594
+ return test::ShouldPersistUDT(std::get<3>(GetParam()));
595
+ }
504
596
  };
505
597
 
506
598
  // Similar to GenerateRandomKVs but for index block contents.
507
599
  void GenerateRandomIndexEntries(std::vector<std::string> *separators,
508
600
  std::vector<BlockHandle> *block_handles,
509
601
  std::vector<std::string> *first_keys,
510
- const int len, bool zero_seqno = false) {
602
+ const int len, size_t ts_sz = 0,
603
+ bool zero_seqno = false) {
511
604
  Random rnd(42);
512
605
 
513
606
  // For each of `len` blocks, we need to generate a first and last key.
@@ -519,7 +612,13 @@ void GenerateRandomIndexEntries(std::vector<std::string> *separators,
519
612
  if (zero_seqno) {
520
613
  AppendInternalKeyFooter(&new_key, 0 /* seqno */, kTypeValue);
521
614
  }
522
- keys.insert(std::move(new_key));
615
+ if (ts_sz > 0) {
616
+ std::string key;
617
+ PadInternalKeyWithMinTimestamp(&key, new_key, ts_sz);
618
+ keys.insert(std::move(key));
619
+ } else {
620
+ keys.insert(std::move(new_key));
621
+ }
523
622
  }
524
623
 
525
624
  uint64_t offset = 0;
@@ -536,19 +635,34 @@ void GenerateRandomIndexEntries(std::vector<std::string> *separators,
536
635
  TEST_P(IndexBlockTest, IndexValueEncodingTest) {
537
636
  Random rnd(301);
538
637
  Options options = Options();
638
+ if (isUDTEnabled()) {
639
+ options.comparator = test::BytewiseComparatorWithU64TsWrapper();
640
+ }
641
+ size_t ts_sz = options.comparator->timestamp_size();
539
642
 
540
643
  std::vector<std::string> separators;
541
644
  std::vector<BlockHandle> block_handles;
542
645
  std::vector<std::string> first_keys;
543
646
  const bool kUseDeltaEncoding = true;
544
- BlockBuilder builder(16, kUseDeltaEncoding, useValueDeltaEncoding());
647
+ BlockBuilder builder(16, kUseDeltaEncoding, useValueDeltaEncoding(),
648
+ BlockBasedTableOptions::kDataBlockBinarySearch,
649
+ 0.75 /* data_block_hash_table_util_ratio */, ts_sz,
650
+ shouldPersistUDT(), !keyIncludesSeq());
651
+
545
652
  int num_records = 100;
546
653
 
547
654
  GenerateRandomIndexEntries(&separators, &block_handles, &first_keys,
548
- num_records);
655
+ num_records, ts_sz, false /* zero_seqno */);
549
656
  BlockHandle last_encoded_handle;
550
657
  for (int i = 0; i < num_records; i++) {
551
- IndexValue entry(block_handles[i], first_keys[i]);
658
+ std::string first_key_to_persist_buf;
659
+ Slice first_internal_key = first_keys[i];
660
+ if (ts_sz > 0 && !shouldPersistUDT()) {
661
+ StripTimestampFromInternalKey(&first_key_to_persist_buf, first_keys[i],
662
+ ts_sz);
663
+ first_internal_key = first_key_to_persist_buf;
664
+ }
665
+ IndexValue entry(block_handles[i], first_internal_key);
552
666
  std::string encoded_entry;
553
667
  std::string delta_encoded_entry;
554
668
  entry.EncodeTo(&encoded_entry, includeFirstKey(), nullptr);
@@ -558,7 +672,13 @@ TEST_P(IndexBlockTest, IndexValueEncodingTest) {
558
672
  }
559
673
  last_encoded_handle = entry.handle;
560
674
  const Slice delta_encoded_entry_slice(delta_encoded_entry);
561
- builder.Add(separators[i], encoded_entry, &delta_encoded_entry_slice);
675
+
676
+ if (keyIncludesSeq()) {
677
+ builder.Add(separators[i], encoded_entry, &delta_encoded_entry_slice);
678
+ } else {
679
+ const Slice user_key = ExtractUserKey(separators[i]);
680
+ builder.Add(user_key, encoded_entry, &delta_encoded_entry_slice);
681
+ }
562
682
  }
563
683
 
564
684
  // read serialized contents of the block
@@ -570,14 +690,14 @@ TEST_P(IndexBlockTest, IndexValueEncodingTest) {
570
690
  Block reader(std::move(contents));
571
691
 
572
692
  const bool kTotalOrderSeek = true;
573
- const bool kIncludesSeq = true;
574
- const bool kValueIsFull = !useValueDeltaEncoding();
575
693
  IndexBlockIter *kNullIter = nullptr;
576
694
  Statistics *kNullStats = nullptr;
577
695
  // read contents of block sequentially
578
696
  InternalIteratorBase<IndexValue> *iter = reader.NewIndexIterator(
579
697
  options.comparator, kDisableGlobalSequenceNumber, kNullIter, kNullStats,
580
- kTotalOrderSeek, includeFirstKey(), kIncludesSeq, kValueIsFull);
698
+ kTotalOrderSeek, includeFirstKey(), keyIncludesSeq(),
699
+ !useValueDeltaEncoding(), false /* block_contents_pinned */,
700
+ shouldPersistUDT());
581
701
  iter->SeekToFirst();
582
702
  for (int index = 0; index < num_records; ++index) {
583
703
  ASSERT_TRUE(iter->Valid());
@@ -585,7 +705,12 @@ TEST_P(IndexBlockTest, IndexValueEncodingTest) {
585
705
  Slice k = iter->key();
586
706
  IndexValue v = iter->value();
587
707
 
588
- EXPECT_EQ(separators[index], k.ToString());
708
+ if (keyIncludesSeq()) {
709
+ EXPECT_EQ(separators[index], k.ToString());
710
+ } else {
711
+ const Slice user_key = ExtractUserKey(separators[index]);
712
+ EXPECT_EQ(user_key, k);
713
+ }
589
714
  EXPECT_EQ(block_handles[index].offset(), v.handle.offset());
590
715
  EXPECT_EQ(block_handles[index].size(), v.handle.size());
591
716
  EXPECT_EQ(includeFirstKey() ? first_keys[index] : "",
@@ -598,7 +723,9 @@ TEST_P(IndexBlockTest, IndexValueEncodingTest) {
598
723
  // read block contents randomly
599
724
  iter = reader.NewIndexIterator(
600
725
  options.comparator, kDisableGlobalSequenceNumber, kNullIter, kNullStats,
601
- kTotalOrderSeek, includeFirstKey(), kIncludesSeq, kValueIsFull);
726
+ kTotalOrderSeek, includeFirstKey(), keyIncludesSeq(),
727
+ !useValueDeltaEncoding(), false /* block_contents_pinned */,
728
+ shouldPersistUDT());
602
729
  for (int i = 0; i < num_records * 2; i++) {
603
730
  // find a random key in the lookaside array
604
731
  int index = rnd.Uniform(num_records);
@@ -608,7 +735,12 @@ TEST_P(IndexBlockTest, IndexValueEncodingTest) {
608
735
  iter->Seek(k);
609
736
  ASSERT_TRUE(iter->Valid());
610
737
  IndexValue v = iter->value();
611
- EXPECT_EQ(separators[index], iter->key().ToString());
738
+ if (keyIncludesSeq()) {
739
+ EXPECT_EQ(separators[index], iter->key().ToString());
740
+ } else {
741
+ const Slice user_key = ExtractUserKey(separators[index]);
742
+ EXPECT_EQ(user_key, iter->key());
743
+ }
612
744
  EXPECT_EQ(block_handles[index].offset(), v.handle.offset());
613
745
  EXPECT_EQ(block_handles[index].size(), v.handle.size());
614
746
  EXPECT_EQ(includeFirstKey() ? first_keys[index] : "",
@@ -617,11 +749,15 @@ TEST_P(IndexBlockTest, IndexValueEncodingTest) {
617
749
  delete iter;
618
750
  }
619
751
 
620
- INSTANTIATE_TEST_CASE_P(P, IndexBlockTest,
621
- ::testing::Values(std::make_tuple(false, false),
622
- std::make_tuple(false, true),
623
- std::make_tuple(true, false),
624
- std::make_tuple(true, true)));
752
+ // Param 0: key includes sequence number (whether to use user key or internal
753
+ // key as key entry in index block).
754
+ // Param 1: use value delta encoding
755
+ // Param 2: include first key
756
+ // Param 3: user-defined timestamp test mode
757
+ INSTANTIATE_TEST_CASE_P(
758
+ P, IndexBlockTest,
759
+ ::testing::Combine(::testing::Bool(), ::testing::Bool(), ::testing::Bool(),
760
+ ::testing::ValuesIn(test::GetUDTTestModes())));
625
761
 
626
762
  class BlockPerKVChecksumTest : public DBTestBase {
627
763
  public:
@@ -712,9 +848,12 @@ TEST_F(BlockPerKVChecksumTest, EmptyBlock) {
712
848
  Options options = Options();
713
849
  BlockBasedTableOptions tbo;
714
850
  uint8_t protection_bytes_per_key = 8;
715
- BlockCreateContext create_context{
716
- &tbo, nullptr /* statistics */, false /* using_zstd */,
717
- protection_bytes_per_key, options.comparator};
851
+ BlockCreateContext create_context{&tbo,
852
+ nullptr,
853
+ nullptr /* statistics */,
854
+ false /* using_zstd */,
855
+ protection_bytes_per_key,
856
+ options.comparator};
718
857
  create_context.Create(&data_block, std::move(contents));
719
858
  std::unique_ptr<DataBlockIter> biter{data_block->NewDataIterator(
720
859
  options.comparator, kDisableGlobalSequenceNumber)};
@@ -749,9 +888,12 @@ TEST_F(BlockPerKVChecksumTest, InitializeProtectionInfo) {
749
888
  Options options = Options();
750
889
  BlockBasedTableOptions tbo;
751
890
  uint8_t protection_bytes_per_key = 8;
752
- BlockCreateContext create_context{
753
- &tbo, nullptr /* statistics */, false /* using_zstd */,
754
- protection_bytes_per_key, options.comparator};
891
+ BlockCreateContext create_context{&tbo,
892
+ nullptr /* ioptions */,
893
+ nullptr /* statistics */,
894
+ false /* using_zstd */,
895
+ protection_bytes_per_key,
896
+ options.comparator};
755
897
 
756
898
  {
757
899
  std::string invalid_content = "1";
@@ -813,14 +955,19 @@ TEST_F(BlockPerKVChecksumTest, ApproximateMemory) {
813
955
  uint8_t protection_bytes_per_key = 8;
814
956
  BlockCreateContext with_checksum_create_context{
815
957
  &tbo,
958
+ nullptr /* ioptions */,
816
959
  nullptr /* statistics */,
817
960
  false /* using_zstd */,
818
961
  protection_bytes_per_key,
819
962
  options.comparator,
820
963
  true /* index_value_is_full */};
821
- BlockCreateContext create_context{
822
- &tbo, nullptr /* statistics */, false /* using_zstd */,
823
- 0, options.comparator, true /* index_value_is_full */};
964
+ BlockCreateContext create_context{&tbo,
965
+ nullptr /* ioptions */,
966
+ nullptr /* statistics */,
967
+ false /* using_zstd */,
968
+ 0,
969
+ options.comparator,
970
+ true /* index_value_is_full */};
824
971
 
825
972
  {
826
973
  std::unique_ptr<Block_kData> data_block;
@@ -909,8 +1056,11 @@ class DataBlockKVChecksumTest
909
1056
  std::vector<std::string> &keys, std::vector<std::string> &values,
910
1057
  int num_record) {
911
1058
  BlockBasedTableOptions tbo;
912
- BlockCreateContext create_context{&tbo, nullptr /* statistics */,
913
- false /* using_zstd */, GetChecksumLen(),
1059
+ BlockCreateContext create_context{&tbo,
1060
+ nullptr /* statistics */,
1061
+ nullptr /* ioptions */,
1062
+ false /* using_zstd */,
1063
+ GetChecksumLen(),
914
1064
  Options().comparator};
915
1065
  builder_ = std::make_unique<BlockBuilder>(
916
1066
  static_cast<int>(GetRestartInterval()),
@@ -1036,6 +1186,7 @@ class IndexBlockKVChecksumTest
1036
1186
  uint8_t protection_bytes_per_key = GetChecksumLen();
1037
1187
  BlockCreateContext create_context{
1038
1188
  &tbo,
1189
+ nullptr /* ioptions */,
1039
1190
  nullptr /* statistics */,
1040
1191
  false /* _using_zstd */,
1041
1192
  protection_bytes_per_key,
@@ -1110,7 +1261,7 @@ TEST_P(IndexBlockKVChecksumTest, ChecksumConstructionAndVerification) {
1110
1261
  std::vector<BlockHandle> block_handles;
1111
1262
  std::vector<std::string> first_keys;
1112
1263
  GenerateRandomIndexEntries(&separators, &block_handles, &first_keys,
1113
- kNumRecords,
1264
+ kNumRecords, 0 /* ts_sz */,
1114
1265
  seqno != kDisableGlobalSequenceNumber);
1115
1266
  SyncPoint::GetInstance()->DisableProcessing();
1116
1267
  std::unique_ptr<Block_kIndex> index_block = GenerateIndexBlock(
@@ -1123,7 +1274,9 @@ TEST_P(IndexBlockKVChecksumTest, ChecksumConstructionAndVerification) {
1123
1274
  true /* total_order_seek */, IncludeFirstKey() /* have_first_key */,
1124
1275
  true /* key_includes_seq */,
1125
1276
  !UseValueDeltaEncoding() /* value_is_full */,
1126
- true /* block_contents_pinned */, nullptr /* prefix_index */)};
1277
+ true /* block_contents_pinned*/,
1278
+ true /* user_defined_timestamps_persisted */,
1279
+ nullptr /* prefix_index */)};
1127
1280
  biter->SeekToFirst();
1128
1281
  const char *checksum_ptr = index_block->TEST_GetKVChecksum();
1129
1282
  // Check checksum of correct length is generated
@@ -1174,9 +1327,12 @@ class MetaIndexBlockKVChecksumTest
1174
1327
  Options options = Options();
1175
1328
  BlockBasedTableOptions tbo;
1176
1329
  uint8_t protection_bytes_per_key = GetChecksumLen();
1177
- BlockCreateContext create_context{
1178
- &tbo, nullptr /* statistics */, false /* using_zstd */,
1179
- protection_bytes_per_key, options.comparator};
1330
+ BlockCreateContext create_context{&tbo,
1331
+ nullptr /* ioptions */,
1332
+ nullptr /* statistics */,
1333
+ false /* using_zstd */,
1334
+ protection_bytes_per_key,
1335
+ options.comparator};
1180
1336
  builder_ =
1181
1337
  std::make_unique<BlockBuilder>(static_cast<int>(GetRestartInterval()));
1182
1338
  // add a bunch of records to a block
@@ -1206,9 +1362,12 @@ TEST_P(MetaIndexBlockKVChecksumTest, ChecksumConstructionAndVerification) {
1206
1362
  Options options = Options();
1207
1363
  BlockBasedTableOptions tbo;
1208
1364
  uint8_t protection_bytes_per_key = GetChecksumLen();
1209
- BlockCreateContext create_context{
1210
- &tbo, nullptr /* statistics */, false /* using_zstd */,
1211
- protection_bytes_per_key, options.comparator};
1365
+ BlockCreateContext create_context{&tbo,
1366
+ nullptr /* ioptions */,
1367
+ nullptr /* statistics */,
1368
+ false /* using_zstd */,
1369
+ protection_bytes_per_key,
1370
+ options.comparator};
1212
1371
  std::vector<int> num_restart_intervals = {1, 16};
1213
1372
  for (const auto num_restart_interval : num_restart_intervals) {
1214
1373
  const int kNumRecords = num_restart_interval * GetRestartInterval();
@@ -1364,7 +1523,9 @@ class IndexBlockKVChecksumCorruptionTest : public IndexBlockKVChecksumTest {
1364
1523
  true /* total_order_seek */, IncludeFirstKey() /* have_first_key */,
1365
1524
  true /* key_includes_seq */,
1366
1525
  !UseValueDeltaEncoding() /* value_is_full */,
1367
- true /* block_contents_pinned */, nullptr /* prefix_index */)};
1526
+ true /* block_contents_pinned */,
1527
+ true /* user_defined_timestamps_persisted */,
1528
+ nullptr /* prefix_index */)};
1368
1529
  SyncPoint::GetInstance()->EnableProcessing();
1369
1530
  return biter;
1370
1531
  }
@@ -1407,7 +1568,7 @@ TEST_P(IndexBlockKVChecksumCorruptionTest, CorruptEntry) {
1407
1568
  std::vector<BlockHandle> block_handles;
1408
1569
  std::vector<std::string> first_keys;
1409
1570
  GenerateRandomIndexEntries(&separators, &block_handles, &first_keys,
1410
- kNumRecords,
1571
+ kNumRecords, 0 /* ts_sz */,
1411
1572
  seqno != kDisableGlobalSequenceNumber);
1412
1573
  SyncPoint::GetInstance()->SetCallBack(
1413
1574
  "BlockIter::UpdateKey::value", [](void *arg) {
@@ -28,12 +28,12 @@ Status FilterBlockReaderCommon<TBlocklike>::ReadFilterBlock(
28
28
  const BlockBasedTable::Rep* const rep = table->get_rep();
29
29
  assert(rep);
30
30
 
31
- const Status s =
32
- table->RetrieveBlock(prefetch_buffer, read_options, rep->filter_handle,
33
- UncompressionDict::GetEmptyDict(), filter_block,
34
- get_context, lookup_context,
35
- /* for_compaction */ false, use_cache,
36
- /* async_read */ false);
31
+ const Status s = table->RetrieveBlock(
32
+ prefetch_buffer, read_options, rep->filter_handle,
33
+ UncompressionDict::GetEmptyDict(), filter_block, get_context,
34
+ lookup_context,
35
+ /* for_compaction */ false, use_cache,
36
+ /* async_read */ false, /* use_block_cache_for_lookup */ true);
37
37
 
38
38
  return s;
39
39
  }