rocksdb-native 2.2.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (261) hide show
  1. package/binding.c +92 -10
  2. package/index.js +9 -0
  3. package/lib/batch.js +11 -1
  4. package/lib/iterator.js +3 -1
  5. package/lib/snapshot.js +21 -0
  6. package/package.json +1 -1
  7. package/prebuilds/darwin-arm64/rocksdb-native.bare +0 -0
  8. package/prebuilds/darwin-arm64/rocksdb-native.node +0 -0
  9. package/prebuilds/darwin-x64/rocksdb-native.bare +0 -0
  10. package/prebuilds/darwin-x64/rocksdb-native.node +0 -0
  11. package/prebuilds/linux-arm64/rocksdb-native.bare +0 -0
  12. package/prebuilds/linux-arm64/rocksdb-native.node +0 -0
  13. package/prebuilds/linux-x64/rocksdb-native.bare +0 -0
  14. package/prebuilds/linux-x64/rocksdb-native.node +0 -0
  15. package/prebuilds/win32-x64/rocksdb-native.bare +0 -0
  16. package/prebuilds/win32-x64/rocksdb-native.node +0 -0
  17. package/vendor/librocksdb/include/rocksdb.h +38 -4
  18. package/vendor/librocksdb/src/rocksdb.cc +114 -14
  19. package/vendor/librocksdb/vendor/rocksdb/CMakeLists.txt +21 -4
  20. package/vendor/librocksdb/vendor/rocksdb/cache/secondary_cache_adapter.cc +6 -3
  21. package/vendor/librocksdb/vendor/rocksdb/db/arena_wrapped_db_iter.cc +4 -4
  22. package/vendor/librocksdb/vendor/rocksdb/db/arena_wrapped_db_iter.h +4 -2
  23. package/vendor/librocksdb/vendor/rocksdb/db/attribute_group_iterator_impl.cc +20 -0
  24. package/vendor/librocksdb/vendor/rocksdb/db/attribute_group_iterator_impl.h +83 -0
  25. package/vendor/librocksdb/vendor/rocksdb/db/builder.cc +9 -5
  26. package/vendor/librocksdb/vendor/rocksdb/db/builder.h +1 -1
  27. package/vendor/librocksdb/vendor/rocksdb/db/c.cc +231 -6
  28. package/vendor/librocksdb/vendor/rocksdb/db/c_test.c +202 -2
  29. package/vendor/librocksdb/vendor/rocksdb/db/coalescing_iterator.cc +47 -0
  30. package/vendor/librocksdb/vendor/rocksdb/db/coalescing_iterator.h +79 -0
  31. package/vendor/librocksdb/vendor/rocksdb/db/column_family.cc +28 -0
  32. package/vendor/librocksdb/vendor/rocksdb/db/column_family.h +17 -0
  33. package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction.cc +8 -1
  34. package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction.h +11 -9
  35. package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_iterator.cc +50 -23
  36. package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_iterator.h +13 -0
  37. package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_job.cc +22 -25
  38. package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_job.h +2 -0
  39. package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_outputs.cc +8 -1
  40. package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_outputs.h +1 -0
  41. package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_picker.cc +40 -17
  42. package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_picker.h +20 -14
  43. package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_picker_level.cc +11 -6
  44. package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_picker_universal.cc +77 -24
  45. package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_service_job.cc +2 -0
  46. package/vendor/librocksdb/vendor/rocksdb/db/convenience.cc +3 -0
  47. package/vendor/librocksdb/vendor/rocksdb/db/db_filesnapshot.cc +125 -31
  48. package/vendor/librocksdb/vendor/rocksdb/db/db_impl/db_impl.cc +457 -231
  49. package/vendor/librocksdb/vendor/rocksdb/db/db_impl/db_impl.h +172 -73
  50. package/vendor/librocksdb/vendor/rocksdb/db/db_impl/db_impl_compaction_flush.cc +152 -133
  51. package/vendor/librocksdb/vendor/rocksdb/db/db_impl/db_impl_debug.cc +5 -0
  52. package/vendor/librocksdb/vendor/rocksdb/db/db_impl/db_impl_files.cc +58 -52
  53. package/vendor/librocksdb/vendor/rocksdb/db/db_impl/db_impl_follower.cc +348 -0
  54. package/vendor/librocksdb/vendor/rocksdb/db/db_impl/db_impl_follower.h +54 -0
  55. package/vendor/librocksdb/vendor/rocksdb/db/db_impl/db_impl_open.cc +136 -117
  56. package/vendor/librocksdb/vendor/rocksdb/db/db_impl/db_impl_secondary.cc +4 -3
  57. package/vendor/librocksdb/vendor/rocksdb/db/db_impl/db_impl_secondary.h +7 -6
  58. package/vendor/librocksdb/vendor/rocksdb/db/db_impl/db_impl_write.cc +134 -80
  59. package/vendor/librocksdb/vendor/rocksdb/db/db_iter.cc +11 -0
  60. package/vendor/librocksdb/vendor/rocksdb/db/db_test2.cc +1 -1
  61. package/vendor/librocksdb/vendor/rocksdb/db/db_test_util.cc +11 -1
  62. package/vendor/librocksdb/vendor/rocksdb/db/db_test_util.h +11 -7
  63. package/vendor/librocksdb/vendor/rocksdb/db/dbformat.cc +19 -4
  64. package/vendor/librocksdb/vendor/rocksdb/db/dbformat.h +3 -2
  65. package/vendor/librocksdb/vendor/rocksdb/db/error_handler.cc +34 -39
  66. package/vendor/librocksdb/vendor/rocksdb/db/error_handler.h +3 -4
  67. package/vendor/librocksdb/vendor/rocksdb/db/event_helpers.cc +6 -3
  68. package/vendor/librocksdb/vendor/rocksdb/db/experimental.cc +3 -2
  69. package/vendor/librocksdb/vendor/rocksdb/db/external_sst_file_ingestion_job.cc +76 -18
  70. package/vendor/librocksdb/vendor/rocksdb/db/external_sst_file_ingestion_job.h +11 -0
  71. package/vendor/librocksdb/vendor/rocksdb/db/flush_job.cc +37 -5
  72. package/vendor/librocksdb/vendor/rocksdb/db/flush_job.h +14 -0
  73. package/vendor/librocksdb/vendor/rocksdb/db/import_column_family_job.cc +49 -45
  74. package/vendor/librocksdb/vendor/rocksdb/db/internal_stats.cc +60 -1
  75. package/vendor/librocksdb/vendor/rocksdb/db/internal_stats.h +20 -1
  76. package/vendor/librocksdb/vendor/rocksdb/db/log_reader.cc +15 -6
  77. package/vendor/librocksdb/vendor/rocksdb/db/log_writer.cc +59 -10
  78. package/vendor/librocksdb/vendor/rocksdb/db/log_writer.h +8 -0
  79. package/vendor/librocksdb/vendor/rocksdb/db/memtable.cc +24 -40
  80. package/vendor/librocksdb/vendor/rocksdb/db/memtable.h +10 -10
  81. package/vendor/librocksdb/vendor/rocksdb/db/memtable_list.cc +9 -8
  82. package/vendor/librocksdb/vendor/rocksdb/db/multi_cf_iterator_impl.h +296 -0
  83. package/vendor/librocksdb/vendor/rocksdb/db/range_tombstone_fragmenter.h +8 -10
  84. package/vendor/librocksdb/vendor/rocksdb/db/repair.cc +4 -3
  85. package/vendor/librocksdb/vendor/rocksdb/db/seqno_to_time_mapping.cc +30 -0
  86. package/vendor/librocksdb/vendor/rocksdb/db/seqno_to_time_mapping.h +9 -0
  87. package/vendor/librocksdb/vendor/rocksdb/db/table_cache.cc +17 -2
  88. package/vendor/librocksdb/vendor/rocksdb/db/table_cache.h +9 -1
  89. package/vendor/librocksdb/vendor/rocksdb/db/table_properties_collector.h +9 -2
  90. package/vendor/librocksdb/vendor/rocksdb/db/transaction_log_impl.cc +3 -3
  91. package/vendor/librocksdb/vendor/rocksdb/db/transaction_log_impl.h +7 -7
  92. package/vendor/librocksdb/vendor/rocksdb/db/version_edit.cc +0 -1
  93. package/vendor/librocksdb/vendor/rocksdb/db/version_edit_handler.cc +39 -5
  94. package/vendor/librocksdb/vendor/rocksdb/db/version_edit_handler.h +24 -15
  95. package/vendor/librocksdb/vendor/rocksdb/db/version_set.cc +117 -64
  96. package/vendor/librocksdb/vendor/rocksdb/db/version_set.h +27 -10
  97. package/vendor/librocksdb/vendor/rocksdb/db/wal_manager.cc +37 -29
  98. package/vendor/librocksdb/vendor/rocksdb/db/wal_manager.h +6 -5
  99. package/vendor/librocksdb/vendor/rocksdb/db/wide/wide_columns.cc +2 -3
  100. package/vendor/librocksdb/vendor/rocksdb/db/wide/wide_columns_helper.cc +6 -0
  101. package/vendor/librocksdb/vendor/rocksdb/db/write_batch.cc +89 -31
  102. package/vendor/librocksdb/vendor/rocksdb/db/write_thread.cc +53 -5
  103. package/vendor/librocksdb/vendor/rocksdb/db/write_thread.h +36 -4
  104. package/vendor/librocksdb/vendor/rocksdb/env/composite_env_wrapper.h +21 -0
  105. package/vendor/librocksdb/vendor/rocksdb/env/env.cc +15 -0
  106. package/vendor/librocksdb/vendor/rocksdb/env/fs_on_demand.cc +331 -0
  107. package/vendor/librocksdb/vendor/rocksdb/env/fs_on_demand.h +139 -0
  108. package/vendor/librocksdb/vendor/rocksdb/env/io_posix.cc +8 -6
  109. package/vendor/librocksdb/vendor/rocksdb/env/io_posix.h +1 -1
  110. package/vendor/librocksdb/vendor/rocksdb/file/delete_scheduler.cc +130 -27
  111. package/vendor/librocksdb/vendor/rocksdb/file/delete_scheduler.h +61 -8
  112. package/vendor/librocksdb/vendor/rocksdb/file/file_util.cc +25 -4
  113. package/vendor/librocksdb/vendor/rocksdb/file/file_util.h +15 -0
  114. package/vendor/librocksdb/vendor/rocksdb/file/sequence_file_reader.cc +1 -0
  115. package/vendor/librocksdb/vendor/rocksdb/file/sequence_file_reader.h +9 -4
  116. package/vendor/librocksdb/vendor/rocksdb/file/sst_file_manager_impl.cc +18 -0
  117. package/vendor/librocksdb/vendor/rocksdb/file/sst_file_manager_impl.h +31 -4
  118. package/vendor/librocksdb/vendor/rocksdb/file/writable_file_writer.cc +40 -38
  119. package/vendor/librocksdb/vendor/rocksdb/file/writable_file_writer.h +48 -15
  120. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/advanced_options.h +12 -3
  121. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/attribute_groups.h +114 -0
  122. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/c.h +90 -0
  123. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/cache.h +5 -0
  124. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/comparator.h +27 -0
  125. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/db.h +71 -12
  126. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/env.h +9 -0
  127. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/experimental.h +5 -0
  128. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/file_system.h +14 -0
  129. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/iterator.h +9 -71
  130. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/iterator_base.h +90 -0
  131. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/listener.h +21 -0
  132. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/options.h +125 -12
  133. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/perf_context.h +1 -1
  134. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/sst_file_reader.h +11 -1
  135. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/table.h +6 -6
  136. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/table_properties.h +19 -0
  137. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/transaction_log.h +12 -6
  138. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/types.h +12 -0
  139. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/universal_compaction.h +31 -0
  140. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/user_write_callback.h +29 -0
  141. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/cache_dump_load.h +4 -0
  142. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/checkpoint.h +4 -2
  143. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/customizable_util.h +0 -1
  144. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/env_mirror.h +1 -1
  145. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/ldb_cmd.h +24 -7
  146. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/option_change_migration.h +4 -4
  147. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/stackable_db.h +24 -5
  148. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +46 -0
  149. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/transaction.h +42 -17
  150. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/transaction_db.h +5 -0
  151. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/types_util.h +36 -0
  152. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +71 -3
  153. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/version.h +2 -2
  154. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/wide_columns.h +87 -72
  155. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/write_batch_base.h +1 -1
  156. package/vendor/librocksdb/vendor/rocksdb/memory/memory_allocator.cc +1 -0
  157. package/vendor/librocksdb/vendor/rocksdb/options/cf_options.cc +13 -2
  158. package/vendor/librocksdb/vendor/rocksdb/options/cf_options.h +6 -2
  159. package/vendor/librocksdb/vendor/rocksdb/options/db_options.cc +27 -1
  160. package/vendor/librocksdb/vendor/rocksdb/options/db_options.h +10 -3
  161. package/vendor/librocksdb/vendor/rocksdb/options/options.cc +3 -0
  162. package/vendor/librocksdb/vendor/rocksdb/options/options_helper.cc +1 -0
  163. package/vendor/librocksdb/vendor/rocksdb/port/jemalloc_helper.h +2 -2
  164. package/vendor/librocksdb/vendor/rocksdb/port/stack_trace.cc +1 -0
  165. package/vendor/librocksdb/vendor/rocksdb/port/win/port_win.cc +3 -2
  166. package/vendor/librocksdb/vendor/rocksdb/table/block_based/binary_search_index_reader.cc +1 -2
  167. package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_based_table_builder.cc +47 -31
  168. package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_based_table_factory.cc +15 -0
  169. package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_based_table_iterator.cc +37 -18
  170. package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_based_table_iterator.h +10 -3
  171. package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_based_table_reader.cc +102 -41
  172. package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_based_table_reader.h +15 -7
  173. package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_based_table_reader_impl.h +1 -3
  174. package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +5 -6
  175. package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_cache.h +31 -0
  176. package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_prefetcher.cc +6 -0
  177. package/vendor/librocksdb/vendor/rocksdb/table/block_based/cachable_entry.h +10 -5
  178. package/vendor/librocksdb/vendor/rocksdb/table/block_based/filter_block.h +34 -28
  179. package/vendor/librocksdb/vendor/rocksdb/table/block_based/filter_block_reader_common.cc +17 -11
  180. package/vendor/librocksdb/vendor/rocksdb/table/block_based/filter_block_reader_common.h +5 -2
  181. package/vendor/librocksdb/vendor/rocksdb/table/block_based/filter_policy.cc +12 -3
  182. package/vendor/librocksdb/vendor/rocksdb/table/block_based/full_filter_block.cc +37 -30
  183. package/vendor/librocksdb/vendor/rocksdb/table/block_based/full_filter_block.h +11 -13
  184. package/vendor/librocksdb/vendor/rocksdb/table/block_based/hash_index_reader.cc +1 -2
  185. package/vendor/librocksdb/vendor/rocksdb/table/block_based/index_builder.cc +62 -53
  186. package/vendor/librocksdb/vendor/rocksdb/table/block_based/index_builder.h +60 -38
  187. package/vendor/librocksdb/vendor/rocksdb/table/block_based/index_reader_common.cc +14 -9
  188. package/vendor/librocksdb/vendor/rocksdb/table/block_based/index_reader_common.h +4 -1
  189. package/vendor/librocksdb/vendor/rocksdb/table/block_based/partitioned_filter_block.cc +135 -94
  190. package/vendor/librocksdb/vendor/rocksdb/table/block_based/partitioned_filter_block.h +52 -46
  191. package/vendor/librocksdb/vendor/rocksdb/table/block_based/partitioned_index_reader.cc +51 -13
  192. package/vendor/librocksdb/vendor/rocksdb/table/block_based/partitioned_index_reader.h +2 -0
  193. package/vendor/librocksdb/vendor/rocksdb/table/block_based/uncompression_dict_reader.cc +3 -11
  194. package/vendor/librocksdb/vendor/rocksdb/table/block_based/uncompression_dict_reader.h +2 -3
  195. package/vendor/librocksdb/vendor/rocksdb/table/block_fetcher.cc +8 -10
  196. package/vendor/librocksdb/vendor/rocksdb/table/block_fetcher.h +2 -1
  197. package/vendor/librocksdb/vendor/rocksdb/table/compaction_merging_iterator.cc +9 -10
  198. package/vendor/librocksdb/vendor/rocksdb/table/compaction_merging_iterator.h +3 -2
  199. package/vendor/librocksdb/vendor/rocksdb/table/format.cc +1 -2
  200. package/vendor/librocksdb/vendor/rocksdb/table/iterator.cc +4 -0
  201. package/vendor/librocksdb/vendor/rocksdb/table/merging_iterator.cc +18 -13
  202. package/vendor/librocksdb/vendor/rocksdb/table/merging_iterator.h +5 -3
  203. package/vendor/librocksdb/vendor/rocksdb/table/meta_blocks.cc +18 -4
  204. package/vendor/librocksdb/vendor/rocksdb/table/meta_blocks.h +4 -0
  205. package/vendor/librocksdb/vendor/rocksdb/table/plain/plain_table_builder.cc +2 -2
  206. package/vendor/librocksdb/vendor/rocksdb/table/sst_file_dumper.cc +6 -6
  207. package/vendor/librocksdb/vendor/rocksdb/table/sst_file_reader.cc +24 -2
  208. package/vendor/librocksdb/vendor/rocksdb/table/sst_file_writer_collectors.h +3 -1
  209. package/vendor/librocksdb/vendor/rocksdb/table/table_builder.h +8 -7
  210. package/vendor/librocksdb/vendor/rocksdb/table/table_iterator.h +69 -0
  211. package/vendor/librocksdb/vendor/rocksdb/table/table_reader.h +9 -0
  212. package/vendor/librocksdb/vendor/rocksdb/test_util/testutil.cc +25 -0
  213. package/vendor/librocksdb/vendor/rocksdb/test_util/testutil.h +12 -0
  214. package/vendor/librocksdb/vendor/rocksdb/tools/db_bench_tool.cc +32 -0
  215. package/vendor/librocksdb/vendor/rocksdb/tools/ldb_cmd.cc +618 -124
  216. package/vendor/librocksdb/vendor/rocksdb/tools/ldb_cmd_impl.h +19 -1
  217. package/vendor/librocksdb/vendor/rocksdb/tools/ldb_tool.cc +9 -0
  218. package/vendor/librocksdb/vendor/rocksdb/util/aligned_storage.h +24 -0
  219. package/vendor/librocksdb/vendor/rocksdb/util/autovector.h +4 -0
  220. package/vendor/librocksdb/vendor/rocksdb/util/comparator.cc +12 -0
  221. package/vendor/librocksdb/vendor/rocksdb/util/filter_bench.cc +1 -1
  222. package/vendor/librocksdb/vendor/rocksdb/util/random.cc +2 -1
  223. package/vendor/librocksdb/vendor/rocksdb/util/stderr_logger.cc +3 -4
  224. package/vendor/librocksdb/vendor/rocksdb/util/stderr_logger.h +1 -1
  225. package/vendor/librocksdb/vendor/rocksdb/util/udt_util.cc +33 -0
  226. package/vendor/librocksdb/vendor/rocksdb/util/udt_util.h +7 -0
  227. package/vendor/librocksdb/vendor/rocksdb/util/write_batch_util.h +5 -0
  228. package/vendor/librocksdb/vendor/rocksdb/util/xxhash.h +36 -29
  229. package/vendor/librocksdb/vendor/rocksdb/utilities/blob_db/blob_db_impl.h +3 -0
  230. package/vendor/librocksdb/vendor/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +20 -0
  231. package/vendor/librocksdb/vendor/rocksdb/utilities/cache_dump_load_impl.cc +29 -9
  232. package/vendor/librocksdb/vendor/rocksdb/utilities/cache_dump_load_impl.h +14 -3
  233. package/vendor/librocksdb/vendor/rocksdb/utilities/debug.cc +16 -4
  234. package/vendor/librocksdb/vendor/rocksdb/utilities/fault_injection_fs.cc +677 -248
  235. package/vendor/librocksdb/vendor/rocksdb/utilities/fault_injection_fs.h +325 -158
  236. package/vendor/librocksdb/vendor/rocksdb/utilities/option_change_migration/option_change_migration.cc +1 -8
  237. package/vendor/librocksdb/vendor/rocksdb/utilities/table_properties_collectors/compact_for_tiering_collector.cc +144 -0
  238. package/vendor/librocksdb/vendor/rocksdb/utilities/table_properties_collectors/compact_for_tiering_collector.h +45 -0
  239. package/vendor/librocksdb/vendor/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +12 -0
  240. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +1 -1
  241. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/growable_array.h +3 -3
  242. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/pessimistic_transaction.cc +116 -20
  243. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/pessimistic_transaction.h +33 -1
  244. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +78 -13
  245. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/pessimistic_transaction_db.h +33 -1
  246. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/transaction_base.cc +106 -7
  247. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/transaction_base.h +68 -10
  248. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/transaction_test.h +7 -3
  249. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/transaction_util.cc +8 -5
  250. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/transaction_util.h +7 -4
  251. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/write_prepared_txn.cc +18 -12
  252. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/write_prepared_txn_db.cc +4 -4
  253. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/write_prepared_txn_db.h +17 -0
  254. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/write_unprepared_txn.cc +11 -9
  255. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +2 -1
  256. package/vendor/librocksdb/vendor/rocksdb/utilities/types_util.cc +88 -0
  257. package/vendor/librocksdb/vendor/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +313 -14
  258. package/vendor/librocksdb/vendor/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +7 -0
  259. package/vendor/librocksdb/vendor/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +1 -1
  260. package/vendor/librocksdb/vendor/rocksdb/db/multi_cf_iterator.cc +0 -102
  261. package/vendor/librocksdb/vendor/rocksdb/db/multi_cf_iterator.h +0 -159
@@ -43,7 +43,8 @@ class TransactionUtil {
43
43
  const std::string& key, SequenceNumber snap_seq,
44
44
  const std::string* const ts, bool cache_only,
45
45
  ReadCallback* snap_checker = nullptr,
46
- SequenceNumber min_uncommitted = kMaxSequenceNumber);
46
+ SequenceNumber min_uncommitted = kMaxSequenceNumber,
47
+ bool enable_udt_validation = true);
47
48
 
48
49
  // For each key,SequenceNumber pair tracked by the LockTracker, this function
49
50
  // will verify there have been no writes to the key in the db since that
@@ -70,13 +71,15 @@ class TransactionUtil {
70
71
  // seq > `snap_seq`: applicable to conflict
71
72
  // `min_uncommitted` <= seq <= `snap_seq`: call `snap_checker` to determine.
72
73
  //
73
- // If user-defined timestamp is enabled, a write conflict is detected if an
74
- // operation for `key` with timestamp greater than `ts` exists.
74
+ // If user-defined timestamp is enabled and `enable_udt_validation` is set to
75
+ // true, a write conflict is detected if an operation for `key` with timestamp
76
+ // greater than `ts` exists.
75
77
  static Status CheckKey(DBImpl* db_impl, SuperVersion* sv,
76
78
  SequenceNumber earliest_seq, SequenceNumber snap_seq,
77
79
  const std::string& key, const std::string* const ts,
78
80
  bool cache_only, ReadCallback* snap_checker = nullptr,
79
- SequenceNumber min_uncommitted = kMaxSequenceNumber);
81
+ SequenceNumber min_uncommitted = kMaxSequenceNumber,
82
+ bool enable_udt_validation = true);
80
83
  };
81
84
 
82
85
  } // namespace ROCKSDB_NAMESPACE
@@ -154,8 +154,9 @@ Status WritePreparedTxn::PrepareInternal() {
154
154
  const bool DISABLE_MEMTABLE = true;
155
155
  uint64_t seq_used = kMaxSequenceNumber;
156
156
  s = db_impl_->WriteImpl(write_options, GetWriteBatch()->GetWriteBatch(),
157
- /*callback*/ nullptr, &log_number_, /*log ref*/ 0,
158
- !DISABLE_MEMTABLE, &seq_used, prepare_batch_cnt_,
157
+ /*callback*/ nullptr, /*user_write_cb=*/nullptr,
158
+ &log_number_, /*log ref*/ 0, !DISABLE_MEMTABLE,
159
+ &seq_used, prepare_batch_cnt_,
159
160
  &add_prepared_callback);
160
161
  assert(!s.ok() || seq_used != kMaxSequenceNumber);
161
162
  auto prepare_seq = seq_used;
@@ -247,9 +248,10 @@ Status WritePreparedTxn::CommitInternal() {
247
248
  // TransactionOptions::use_only_the_last_commit_time_batch_for_recovery to
248
249
  // true. See the comments about GetCommitTimeWriteBatch() in
249
250
  // include/rocksdb/utilities/transaction.h.
250
- s = db_impl_->WriteImpl(write_options_, working_batch, nullptr, nullptr,
251
- zero_log_number, disable_memtable, &seq_used,
252
- batch_cnt, pre_release_callback);
251
+ s = db_impl_->WriteImpl(write_options_, working_batch, nullptr,
252
+ /*user_write_cb=*/nullptr, nullptr, zero_log_number,
253
+ disable_memtable, &seq_used, batch_cnt,
254
+ pre_release_callback);
253
255
  assert(!s.ok() || seq_used != kMaxSequenceNumber);
254
256
  const SequenceNumber commit_batch_seq = seq_used;
255
257
  if (LIKELY(do_one_write || !s.ok())) {
@@ -284,8 +286,9 @@ Status WritePreparedTxn::CommitInternal() {
284
286
  const bool DISABLE_MEMTABLE = true;
285
287
  const size_t ONE_BATCH = 1;
286
288
  const uint64_t NO_REF_LOG = 0;
287
- s = db_impl_->WriteImpl(write_options_, &empty_batch, nullptr, nullptr,
288
- NO_REF_LOG, DISABLE_MEMTABLE, &seq_used, ONE_BATCH,
289
+ s = db_impl_->WriteImpl(write_options_, &empty_batch, nullptr,
290
+ /*user_write_cb=*/nullptr, nullptr, NO_REF_LOG,
291
+ DISABLE_MEMTABLE, &seq_used, ONE_BATCH,
289
292
  &update_commit_map_with_aux_batch);
290
293
  assert(!s.ok() || seq_used != kMaxSequenceNumber);
291
294
  return s;
@@ -450,8 +453,9 @@ Status WritePreparedTxn::RollbackInternal() {
450
453
  // DB in one shot. min_uncommitted still works since it requires capturing
451
454
  // data that is written to DB but not yet committed, while
452
455
  // the rollback batch commits with PreReleaseCallback.
453
- s = db_impl_->WriteImpl(write_options_, &rollback_batch, nullptr, nullptr,
454
- NO_REF_LOG, !DISABLE_MEMTABLE, &seq_used, ONE_BATCH,
456
+ s = db_impl_->WriteImpl(write_options_, &rollback_batch, nullptr,
457
+ /*user_write_cb=*/nullptr, nullptr, NO_REF_LOG,
458
+ !DISABLE_MEMTABLE, &seq_used, ONE_BATCH,
455
459
  pre_release_callback);
456
460
  assert(!s.ok() || seq_used != kMaxSequenceNumber);
457
461
  if (!s.ok()) {
@@ -476,8 +480,9 @@ Status WritePreparedTxn::RollbackInternal() {
476
480
  // In the absence of Prepare markers, use Noop as a batch separator
477
481
  s = WriteBatchInternal::InsertNoop(&empty_batch);
478
482
  assert(s.ok());
479
- s = db_impl_->WriteImpl(write_options_, &empty_batch, nullptr, nullptr,
480
- NO_REF_LOG, DISABLE_MEMTABLE, &seq_used, ONE_BATCH,
483
+ s = db_impl_->WriteImpl(write_options_, &empty_batch, nullptr,
484
+ /*user_write_cb=*/nullptr, nullptr, NO_REF_LOG,
485
+ DISABLE_MEMTABLE, &seq_used, ONE_BATCH,
481
486
  &update_commit_map_with_prepare);
482
487
  assert(!s.ok() || seq_used != kMaxSequenceNumber);
483
488
  ROCKS_LOG_DETAILS(db_impl_->immutable_db_options().info_log,
@@ -524,7 +529,8 @@ Status WritePreparedTxn::ValidateSnapshot(ColumnFamilyHandle* column_family,
524
529
  // TODO(yanqin): support user-defined timestamp
525
530
  return TransactionUtil::CheckKeyForConflicts(
526
531
  db_impl_, cfh, key.ToString(), snap_seq, /*ts=*/nullptr,
527
- false /* cache_only */, &snap_checker, min_uncommitted);
532
+ false /* cache_only */, &snap_checker, min_uncommitted,
533
+ txn_db_impl_->GetTxnDBOptions().enable_udt_validation);
528
534
  }
529
535
 
530
536
  void WritePreparedTxn::SetSnapshot() {
@@ -213,8 +213,8 @@ Status WritePreparedTxnDB::WriteInternal(const WriteOptions& write_options_orig,
213
213
  } else {
214
214
  pre_release_callback = &add_prepared_callback;
215
215
  }
216
- s = db_impl_->WriteImpl(write_options, batch, nullptr, nullptr, no_log_ref,
217
- !DISABLE_MEMTABLE, &seq_used, batch_cnt,
216
+ s = db_impl_->WriteImpl(write_options, batch, nullptr, nullptr, nullptr,
217
+ no_log_ref, !DISABLE_MEMTABLE, &seq_used, batch_cnt,
218
218
  pre_release_callback);
219
219
  assert(!s.ok() || seq_used != kMaxSequenceNumber);
220
220
  uint64_t prepare_seq = seq_used;
@@ -240,8 +240,8 @@ Status WritePreparedTxnDB::WriteInternal(const WriteOptions& write_options_orig,
240
240
  write_options.sync = false;
241
241
  const size_t ONE_BATCH = 1; // Just to inc the seq
242
242
  s = db_impl_->WriteImpl(write_options, &empty_batch, nullptr, nullptr,
243
- no_log_ref, DISABLE_MEMTABLE, &seq_used, ONE_BATCH,
244
- &update_commit_map_with_prepare);
243
+ nullptr, no_log_ref, DISABLE_MEMTABLE, &seq_used,
244
+ ONE_BATCH, &update_commit_map_with_prepare);
245
245
  assert(!s.ok() || seq_used != kMaxSequenceNumber);
246
246
  // Note: RemovePrepared is called from within PreReleaseCallback
247
247
  return s;
@@ -13,6 +13,7 @@
13
13
  #include <unordered_map>
14
14
  #include <vector>
15
15
 
16
+ #include "db/attribute_group_iterator_impl.h"
16
17
  #include "db/db_iter.h"
17
18
  #include "db/pre_release_callback.h"
18
19
  #include "db/read_callback.h"
@@ -101,6 +102,22 @@ class WritePreparedTxnDB : public PessimisticTransactionDB {
101
102
  const std::vector<ColumnFamilyHandle*>& column_families,
102
103
  std::vector<Iterator*>* iterators) override;
103
104
 
105
+ using DB::NewCoalescingIterator;
106
+ std::unique_ptr<Iterator> NewCoalescingIterator(
107
+ const ReadOptions& /*options*/,
108
+ const std::vector<ColumnFamilyHandle*>& /*column_families*/) override {
109
+ return std::unique_ptr<Iterator>(
110
+ NewErrorIterator(Status::NotSupported("Not supported yet")));
111
+ }
112
+
113
+ using DB::NewAttributeGroupIterator;
114
+ std::unique_ptr<AttributeGroupIterator> NewAttributeGroupIterator(
115
+ const ReadOptions& /*options*/,
116
+ const std::vector<ColumnFamilyHandle*>& /*column_families*/) override {
117
+ return NewAttributeGroupErrorIterator(
118
+ Status::NotSupported("Not supported yet"));
119
+ }
120
+
104
121
  // Check whether the transaction that wrote the value with sequence number seq
105
122
  // is visible to the snapshot with sequence number snapshot_seq.
106
123
  // Returns true if commit_seq <= snapshot_seq
@@ -378,7 +378,8 @@ Status WriteUnpreparedTxn::FlushWriteBatchToDBInternal(bool prepared) {
378
378
  // WriteImpl should not overwrite that value, so set log_used to nullptr if
379
379
  // log_number_ is already set.
380
380
  s = db_impl_->WriteImpl(write_options, GetWriteBatch()->GetWriteBatch(),
381
- /*callback*/ nullptr, &last_log_number_,
381
+ /*callback*/ nullptr, /*user_write_cb=*/nullptr,
382
+ &last_log_number_,
382
383
  /*log ref*/ 0, !DISABLE_MEMTABLE, &seq_used,
383
384
  prepare_batch_cnt_, &add_prepared_callback);
384
385
  if (log_number_ == 0) {
@@ -595,7 +596,7 @@ Status WriteUnpreparedTxn::CommitInternal() {
595
596
  const uint64_t zero_log_number = 0ull;
596
597
  size_t batch_cnt = UNLIKELY(commit_batch_cnt) ? commit_batch_cnt : 1;
597
598
  s = db_impl_->WriteImpl(write_options_, working_batch, nullptr, nullptr,
598
- zero_log_number, disable_memtable, &seq_used,
599
+ nullptr, zero_log_number, disable_memtable, &seq_used,
599
600
  batch_cnt, pre_release_callback);
600
601
  assert(!s.ok() || seq_used != kMaxSequenceNumber);
601
602
  const SequenceNumber commit_batch_seq = seq_used;
@@ -639,8 +640,8 @@ Status WriteUnpreparedTxn::CommitInternal() {
639
640
  const size_t ONE_BATCH = 1;
640
641
  const uint64_t NO_REF_LOG = 0;
641
642
  s = db_impl_->WriteImpl(write_options_, &empty_batch, nullptr, nullptr,
642
- NO_REF_LOG, DISABLE_MEMTABLE, &seq_used, ONE_BATCH,
643
- &update_commit_map_with_commit_batch);
643
+ nullptr, NO_REF_LOG, DISABLE_MEMTABLE, &seq_used,
644
+ ONE_BATCH, &update_commit_map_with_commit_batch);
644
645
  assert(!s.ok() || seq_used != kMaxSequenceNumber);
645
646
  // Note RemovePrepared should be called after WriteImpl that publishsed the
646
647
  // seq. Otherwise SmallestUnCommittedSeq optimization breaks.
@@ -771,8 +772,8 @@ Status WriteUnpreparedTxn::RollbackInternal() {
771
772
  // data that is written to DB but not yet committed, while the rollback
772
773
  // batch commits with PreReleaseCallback.
773
774
  s = db_impl_->WriteImpl(write_options_, rollback_batch.GetWriteBatch(),
774
- nullptr, nullptr, NO_REF_LOG, !DISABLE_MEMTABLE,
775
- &seq_used, rollback_batch_cnt,
775
+ nullptr, nullptr, nullptr, NO_REF_LOG,
776
+ !DISABLE_MEMTABLE, &seq_used, rollback_batch_cnt,
776
777
  do_one_write ? &update_commit_map : nullptr);
777
778
  assert(!s.ok() || seq_used != kMaxSequenceNumber);
778
779
  if (!s.ok()) {
@@ -807,8 +808,8 @@ Status WriteUnpreparedTxn::RollbackInternal() {
807
808
  s = WriteBatchInternal::InsertNoop(&empty_batch);
808
809
  assert(s.ok());
809
810
  s = db_impl_->WriteImpl(write_options_, &empty_batch, nullptr, nullptr,
810
- NO_REF_LOG, DISABLE_MEMTABLE, &seq_used, ONE_BATCH,
811
- &update_commit_map_with_rollback_batch);
811
+ nullptr, NO_REF_LOG, DISABLE_MEMTABLE, &seq_used,
812
+ ONE_BATCH, &update_commit_map_with_rollback_batch);
812
813
  assert(!s.ok() || seq_used != kMaxSequenceNumber);
813
814
  // Mark the txn as rolled back
814
815
  if (s.ok()) {
@@ -1076,7 +1077,8 @@ Status WriteUnpreparedTxn::ValidateSnapshot(ColumnFamilyHandle* column_family,
1076
1077
  // TODO(yanqin): Support user-defined timestamp.
1077
1078
  return TransactionUtil::CheckKeyForConflicts(
1078
1079
  db_impl_, cfh, key.ToString(), snap_seq, /*ts=*/nullptr,
1079
- false /* cache_only */, &snap_checker, min_uncommitted);
1080
+ false /* cache_only */, &snap_checker, min_uncommitted,
1081
+ txn_db_impl_->GetTxnDBOptions().enable_udt_validation);
1080
1082
  }
1081
1083
 
1082
1084
  const std::map<SequenceNumber, size_t>&
@@ -180,7 +180,8 @@ Status WriteUnpreparedTxnDB::RollbackRecoveredTransaction(
180
180
  const size_t kOneBatch = 1;
181
181
  uint64_t seq_used = kMaxSequenceNumber;
182
182
  s = db_impl_->WriteImpl(w_options, &rollback_batch, nullptr, nullptr,
183
- kNoLogRef, !kDisableMemtable, &seq_used, kOneBatch);
183
+ nullptr, kNoLogRef, !kDisableMemtable, &seq_used,
184
+ kOneBatch);
184
185
  if (!s.ok()) {
185
186
  return s;
186
187
  }
@@ -0,0 +1,88 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+ //
3
+ // This source code is licensed under both the GPLv2 (found in the
4
+ // COPYING file in the root directory) and Apache 2.0 License
5
+ // (found in the LICENSE.Apache file in the root directory).
6
+
7
+ #include "rocksdb/utilities/types_util.h"
8
+
9
+ #include "db/dbformat.h"
10
+
11
+ namespace ROCKSDB_NAMESPACE {
12
+
13
+ Status GetInternalKeyForSeek(const Slice& user_key,
14
+ const Comparator* comparator, std::string* buf) {
15
+ if (!comparator) {
16
+ return Status::InvalidArgument(
17
+ "Constructing an internal key requires user key comparator.");
18
+ }
19
+ size_t ts_sz = comparator->timestamp_size();
20
+ Slice max_ts = comparator->GetMaxTimestamp();
21
+ if (ts_sz != max_ts.size()) {
22
+ return Status::InvalidArgument(
23
+ "The maximum timestamp returned by Comparator::GetMaxTimestamp is "
24
+ "invalid.");
25
+ }
26
+ buf->reserve(user_key.size() + ts_sz + kNumInternalBytes);
27
+ buf->assign(user_key.data(), user_key.size());
28
+ if (ts_sz) {
29
+ buf->append(max_ts.data(), max_ts.size());
30
+ }
31
+ PutFixed64(buf, PackSequenceAndType(kMaxSequenceNumber, kValueTypeForSeek));
32
+ return Status::OK();
33
+ }
34
+
35
+ Status GetInternalKeyForSeekForPrev(const Slice& user_key,
36
+ const Comparator* comparator,
37
+ std::string* buf) {
38
+ if (!comparator) {
39
+ return Status::InvalidArgument(
40
+ "Constructing an internal key requires user key comparator.");
41
+ }
42
+ size_t ts_sz = comparator->timestamp_size();
43
+ Slice min_ts = comparator->GetMinTimestamp();
44
+ if (ts_sz != min_ts.size()) {
45
+ return Status::InvalidArgument(
46
+ "The minimum timestamp returned by Comparator::GetMinTimestamp is "
47
+ "invalid.");
48
+ }
49
+ buf->reserve(user_key.size() + ts_sz + kNumInternalBytes);
50
+ buf->assign(user_key.data(), user_key.size());
51
+ if (ts_sz) {
52
+ buf->append(min_ts.data(), min_ts.size());
53
+ }
54
+ PutFixed64(buf, PackSequenceAndType(0, kValueTypeForSeekForPrev));
55
+ return Status::OK();
56
+ }
57
+
58
+ Status ParseEntry(const Slice& internal_key, const Comparator* comparator,
59
+ ParsedEntryInfo* parsed_entry) {
60
+ if (internal_key.size() < kNumInternalBytes) {
61
+ return Status::InvalidArgument("Internal key size invalid.");
62
+ }
63
+ if (!comparator) {
64
+ return Status::InvalidArgument(
65
+ "Parsing an internal key requires user key comparator.");
66
+ }
67
+ ParsedInternalKey pikey;
68
+ Status status = ParseInternalKey(internal_key, &pikey, /*log_err_key=*/false);
69
+ if (!status.ok()) {
70
+ return status;
71
+ }
72
+
73
+ size_t ts_sz = comparator->timestamp_size();
74
+ if (pikey.user_key.size() < ts_sz) {
75
+ return Status::InvalidArgument("User key(with timestamp) size invalid.");
76
+ }
77
+ if (ts_sz == 0) {
78
+ parsed_entry->user_key = pikey.user_key;
79
+ } else {
80
+ parsed_entry->user_key = StripTimestampFromUserKey(pikey.user_key, ts_sz);
81
+ parsed_entry->timestamp =
82
+ ExtractTimestampFromUserKey(pikey.user_key, ts_sz);
83
+ }
84
+ parsed_entry->sequence = pikey.sequence;
85
+ parsed_entry->type = ROCKSDB_NAMESPACE::GetEntryType(pikey.type);
86
+ return Status::OK();
87
+ }
88
+ } // namespace ROCKSDB_NAMESPACE