rocksdb-native 2.1.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 +99 -17
  2. package/index.js +34 -0
  3. package/lib/batch.js +11 -9
  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
package/binding.c CHANGED
@@ -84,6 +84,10 @@ typedef struct {
84
84
  js_ref_t *on_status;
85
85
  } rocksdb_native_write_batch_t;
86
86
 
87
+ typedef struct {
88
+ rocksdb_snapshot_t handle;
89
+ } rocksdb_native_snapshot_t;
90
+
87
91
  static void
88
92
  rocksdb_native__on_free (js_env_t *env, void *data, void *finalize_hint) {
89
93
  free(data);
@@ -146,7 +150,7 @@ rocksdb_native__on_open (rocksdb_open_t *handle, int status) {
146
150
  assert(err == 0);
147
151
  }
148
152
 
149
- js_call_function(env, ctx, cb, 1, (js_value_t *[]){error}, NULL);
153
+ js_call_function_with_checkpoint(env, ctx, cb, 1, (js_value_t *[]){error}, NULL);
150
154
 
151
155
  err = js_close_handle_scope(env, scope);
152
156
  assert(err == 0);
@@ -241,7 +245,7 @@ rocksdb_native__on_close (rocksdb_close_t *handle, int status) {
241
245
  err = js_get_reference_value(env, req->on_close, &cb);
242
246
  assert(err == 0);
243
247
 
244
- js_call_function(env, ctx, cb, 0, NULL, NULL);
248
+ js_call_function_with_checkpoint(env, ctx, cb, 0, NULL, NULL);
245
249
 
246
250
  err = js_close_handle_scope(env, scope);
247
251
  assert(err == 0);
@@ -395,7 +399,7 @@ rocksdb_native__on_iterator_open (rocksdb_iterator_t *handle, int status) {
395
399
  assert(err == 0);
396
400
  }
397
401
 
398
- js_call_function(env, ctx, cb, 1, (js_value_t *[]){error}, NULL);
402
+ js_call_function_with_checkpoint(env, ctx, cb, 1, (js_value_t *[]){error}, NULL);
399
403
 
400
404
  err = js_close_handle_scope(env, scope);
401
405
  assert(err == 0);
@@ -405,13 +409,13 @@ static js_value_t *
405
409
  rocksdb_native_iterator_open (js_env_t *env, js_callback_info_t *info) {
406
410
  int err;
407
411
 
408
- size_t argc = 7;
409
- js_value_t *argv[7];
412
+ size_t argc = 8;
413
+ js_value_t *argv[8];
410
414
 
411
415
  err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
412
416
  assert(err == 0);
413
417
 
414
- assert(argc == 7);
418
+ assert(argc == 8);
415
419
 
416
420
  rocksdb_native_t *db;
417
421
  err = js_get_arraybuffer_info(env, argv[0], (void **) &db, NULL);
@@ -439,7 +443,20 @@ rocksdb_native_iterator_open (js_env_t *env, js_callback_info_t *info) {
439
443
  err = js_get_value_bool(env, argv[6], &reverse);
440
444
  assert(err == 0);
441
445
 
442
- err = rocksdb_iterator_open(&db->handle, &iterator->handle, range, reverse, rocksdb_native__on_iterator_open);
446
+ rocksdb_read_options_t options = {
447
+ .version = 0,
448
+ };
449
+
450
+ bool has_snapshot;
451
+ err = js_is_arraybuffer(env, argv[7], &has_snapshot);
452
+ assert(err == 0);
453
+
454
+ if (has_snapshot) {
455
+ err = js_get_arraybuffer_info(env, argv[7], (void **) &options.snapshot, NULL);
456
+ assert(err == 0);
457
+ }
458
+
459
+ err = rocksdb_iterator_open(&db->handle, &iterator->handle, range, reverse, &options, rocksdb_native__on_iterator_open);
443
460
  assert(err == 0);
444
461
 
445
462
  return NULL;
@@ -477,7 +494,7 @@ rocksdb_native__on_iterator_close (rocksdb_iterator_t *handle, int status) {
477
494
  assert(err == 0);
478
495
  }
479
496
 
480
- js_call_function(env, ctx, cb, 1, (js_value_t *[]){error}, NULL);
497
+ js_call_function_with_checkpoint(env, ctx, cb, 1, (js_value_t *[]){error}, NULL);
481
498
 
482
499
  err = js_close_handle_scope(env, scope);
483
500
  assert(err == 0);
@@ -567,7 +584,7 @@ rocksdb_native__on_iterator_read (rocksdb_iterator_t *handle, int status) {
567
584
  }
568
585
  }
569
586
 
570
- js_call_function(env, ctx, cb, 3, (js_value_t *[]){error, keys, values}, NULL);
587
+ js_call_function_with_checkpoint(env, ctx, cb, 3, (js_value_t *[]){error, keys, values}, NULL);
571
588
 
572
589
  err = js_close_handle_scope(env, scope);
573
590
  assert(err == 0);
@@ -719,7 +736,7 @@ rocksdb_native__on_read (rocksdb_read_batch_t *handle, int status) {
719
736
  err = js_get_reference_value(env, batch->on_status, &cb);
720
737
  assert(err == 0);
721
738
 
722
- js_call_function(env, ctx, cb, 2, (js_value_t *[]){errors, values}, NULL);
739
+ js_call_function_with_checkpoint(env, ctx, cb, 2, (js_value_t *[]){errors, values}, NULL);
723
740
 
724
741
  err = js_close_handle_scope(env, scope);
725
742
  assert(err == 0);
@@ -729,13 +746,13 @@ static js_value_t *
729
746
  rocksdb_native_read (js_env_t *env, js_callback_info_t *info) {
730
747
  int err;
731
748
 
732
- size_t argc = 4;
733
- js_value_t *argv[4];
749
+ size_t argc = 5;
750
+ js_value_t *argv[5];
734
751
 
735
752
  err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
736
753
  assert(err == 0);
737
754
 
738
- assert(argc == 4);
755
+ assert(argc == 5);
739
756
 
740
757
  rocksdb_native_t *db;
741
758
  err = js_get_arraybuffer_info(env, argv[0], (void **) &db, NULL);
@@ -749,7 +766,7 @@ rocksdb_native_read (js_env_t *env, js_callback_info_t *info) {
749
766
  err = js_get_array_length(env, argv[2], &len);
750
767
  assert(err == 0);
751
768
 
752
- err = js_create_reference(env, argv[3], 1, &batch->on_status);
769
+ err = js_create_reference(env, argv[4], 1, &batch->on_status);
753
770
  assert(err == 0);
754
771
 
755
772
  for (uint32_t i = 0; i < len; i++) {
@@ -781,7 +798,20 @@ rocksdb_native_read (js_env_t *env, js_callback_info_t *info) {
781
798
  }
782
799
  }
783
800
 
784
- err = rocksdb_read(&db->handle, &batch->handle, batch->reads, batch->errors, len, rocksdb_native__on_read);
801
+ rocksdb_read_options_t options = {
802
+ .version = 0,
803
+ };
804
+
805
+ bool has_snapshot;
806
+ err = js_is_arraybuffer(env, argv[3], &has_snapshot);
807
+ assert(err == 0);
808
+
809
+ if (has_snapshot) {
810
+ err = js_get_arraybuffer_info(env, argv[3], (void **) &options.snapshot, NULL);
811
+ assert(err == 0);
812
+ }
813
+
814
+ err = rocksdb_read(&db->handle, &batch->handle, batch->reads, batch->errors, len, &options, rocksdb_native__on_read);
785
815
  assert(err == 0);
786
816
 
787
817
  return NULL;
@@ -885,7 +915,7 @@ rocksdb_native__on_write (rocksdb_write_batch_t *handle, int status) {
885
915
  err = js_get_reference_value(env, batch->on_status, &cb);
886
916
  assert(err == 0);
887
917
 
888
- js_call_function(env, ctx, cb, 1, (js_value_t *[]){error}, NULL);
918
+ js_call_function_with_checkpoint(env, ctx, cb, 1, (js_value_t *[]){error}, NULL);
889
919
 
890
920
  err = js_close_handle_scope(env, scope);
891
921
  assert(err == 0);
@@ -985,12 +1015,61 @@ rocksdb_native_write (js_env_t *env, js_callback_info_t *info) {
985
1015
  }
986
1016
  }
987
1017
 
988
- err = rocksdb_write(&db->handle, &batch->handle, batch->writes, len, rocksdb_native__on_write);
1018
+ err = rocksdb_write(&db->handle, &batch->handle, batch->writes, len, NULL, rocksdb_native__on_write);
989
1019
  assert(err == 0);
990
1020
 
991
1021
  return NULL;
992
1022
  }
993
1023
 
1024
+ static js_value_t *
1025
+ rocksdb_native_snapshot_create (js_env_t *env, js_callback_info_t *info) {
1026
+ int err;
1027
+
1028
+ size_t argc = 1;
1029
+ js_value_t *argv[1];
1030
+
1031
+ err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
1032
+ assert(err == 0);
1033
+
1034
+ assert(argc == 1);
1035
+
1036
+ rocksdb_native_t *db;
1037
+ err = js_get_arraybuffer_info(env, argv[0], (void **) &db, NULL);
1038
+ assert(err == 0);
1039
+
1040
+ js_value_t *handle;
1041
+
1042
+ rocksdb_native_snapshot_t *snapshot;
1043
+ err = js_create_arraybuffer(env, sizeof(rocksdb_native_snapshot_t), (void **) &snapshot, &handle);
1044
+ assert(err == 0);
1045
+
1046
+ err = rocksdb_snapshot_create(&db->handle, &snapshot->handle);
1047
+ assert(err == 0);
1048
+
1049
+ return handle;
1050
+ }
1051
+
1052
+ static js_value_t *
1053
+ rocksdb_native_snapshot_destroy (js_env_t *env, js_callback_info_t *info) {
1054
+ int err;
1055
+
1056
+ size_t argc = 1;
1057
+ js_value_t *argv[1];
1058
+
1059
+ err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
1060
+ assert(err == 0);
1061
+
1062
+ assert(argc == 1);
1063
+
1064
+ rocksdb_native_snapshot_t *snapshot;
1065
+ err = js_get_arraybuffer_info(env, argv[0], (void **) &snapshot, NULL);
1066
+ assert(err == 0);
1067
+
1068
+ rocksdb_snapshot_destroy(&snapshot->handle);
1069
+
1070
+ return NULL;
1071
+ }
1072
+
994
1073
  static js_value_t *
995
1074
  rocksdb_native_exports (js_env_t *env, js_value_t *exports) {
996
1075
  int err;
@@ -1021,6 +1100,9 @@ rocksdb_native_exports (js_env_t *env, js_value_t *exports) {
1021
1100
  V("writeInit", rocksdb_native_write_init)
1022
1101
  V("writeBuffer", rocksdb_native_write_buffer)
1023
1102
  V("write", rocksdb_native_write)
1103
+
1104
+ V("snapshotCreate", rocksdb_native_snapshot_create)
1105
+ V("snapshotDestroy", rocksdb_native_snapshot_destroy)
1024
1106
  #undef V
1025
1107
 
1026
1108
  #define V(name, n) \
package/index.js CHANGED
@@ -3,6 +3,7 @@ const ReadyResource = require('ready-resource')
3
3
  const binding = require('./binding')
4
4
  const { ReadBatch, WriteBatch } = require('./lib/batch')
5
5
  const Iterator = require('./lib/iterator')
6
+ const Snapshot = require('./lib/snapshot')
6
7
 
7
8
  const RocksDB = module.exports = class RocksDB extends ReadyResource {
8
9
  constructor (path, {
@@ -39,6 +40,8 @@ const RocksDB = module.exports = class RocksDB extends ReadyResource {
39
40
  this.tableCacheIndexAndFilterBlocks = tableCacheIndexAndFilterBlocks
40
41
  this.tableFormatVersion = tableFormatVersion
41
42
 
43
+ this._snapshots = new Set()
44
+
42
45
  this._handle = binding.init()
43
46
  }
44
47
 
@@ -82,6 +85,8 @@ const RocksDB = module.exports = class RocksDB extends ReadyResource {
82
85
  }
83
86
 
84
87
  async _close () {
88
+ for (const snapshot of this._snapshots) snapshot.destroy()
89
+
85
90
  const req = { resolve: null, reject: null, handle: null }
86
91
 
87
92
  const promise = new Promise((resolve, reject) => {
@@ -101,6 +106,10 @@ const RocksDB = module.exports = class RocksDB extends ReadyResource {
101
106
  }
102
107
  }
103
108
 
109
+ snapshot (opts) {
110
+ return new Snapshot(this, opts)
111
+ }
112
+
104
113
  iterator (opts) {
105
114
  return new Iterator(this, opts)
106
115
  }
@@ -121,6 +130,31 @@ const RocksDB = module.exports = class RocksDB extends ReadyResource {
121
130
  return new WriteBatch(this, opts)
122
131
  }
123
132
 
133
+ async get (key, opts) {
134
+ const batch = this.read(opts)
135
+ const value = batch.get(key)
136
+ await batch.flush()
137
+ return value
138
+ }
139
+
140
+ async put (key, value, opts) {
141
+ const batch = this.write(opts)
142
+ batch.put(key, value)
143
+ await batch.flush()
144
+ }
145
+
146
+ async delete (key, opts) {
147
+ const batch = this.write(opts)
148
+ batch.delete(key)
149
+ await batch.flush()
150
+ }
151
+
152
+ async deleteRange (start, end, opts) {
153
+ const batch = this.write(opts)
154
+ batch.deleteRange(start, end)
155
+ await batch.flush()
156
+ }
157
+
124
158
  static _instances = new Set()
125
159
  }
126
160
 
package/lib/batch.js CHANGED
@@ -107,6 +107,16 @@ class RocksDBBatch {
107
107
  }
108
108
 
109
109
  exports.ReadBatch = class RocksDBReadBatch extends RocksDBBatch {
110
+ constructor (db, opts = {}) {
111
+ const {
112
+ snapshot = null
113
+ } = opts
114
+
115
+ super(db, opts)
116
+
117
+ this._snapshot = snapshot
118
+ }
119
+
110
120
  async _init () {
111
121
  this._handle = binding.readInit(this)
112
122
  this._buffer = binding.readBuffer(this._handle, this._capacity)
@@ -121,7 +131,7 @@ exports.ReadBatch = class RocksDBReadBatch extends RocksDBBatch {
121
131
  async _flush () {
122
132
  await super._flush()
123
133
 
124
- binding.read(this._db._handle, this._handle, this._operations, this._onread)
134
+ binding.read(this._db._handle, this._handle, this._operations, this._snapshot ? this._snapshot._handle : null, this._onread)
125
135
  }
126
136
 
127
137
  _onread (errs, values) {
@@ -148,14 +158,6 @@ exports.ReadBatch = class RocksDBReadBatch extends RocksDBBatch {
148
158
 
149
159
  return promise
150
160
  }
151
-
152
- tryPut (key, value) {
153
- if (this._request) throw new Error('Request already in progress')
154
-
155
- this._operations.push(new RocksDBPut(this._encodeKey(key), this._encodeValue(value)))
156
- this._promises.push(null)
157
- this._resize()
158
- }
159
161
  }
160
162
 
161
163
  exports.WriteBatch = class RocksDBWriteBatch extends RocksDBBatch {
package/lib/iterator.js CHANGED
@@ -15,6 +15,7 @@ module.exports = class RocksDBIterator extends Readable {
15
15
  reverse = false,
16
16
  limit = Infinity,
17
17
  capacity = 8,
18
+ snapshot = null,
18
19
  encoding = null,
19
20
  keyEncoding = encoding,
20
21
  valueEncoding = encoding
@@ -35,6 +36,7 @@ module.exports = class RocksDBIterator extends Readable {
35
36
  this._reverse = reverse
36
37
  this._limit = limit
37
38
  this._capacity = capacity
39
+ this._snapshot = snapshot
38
40
 
39
41
  this._pendingOpen = null
40
42
  this._pendingRead = null
@@ -100,7 +102,7 @@ module.exports = class RocksDBIterator extends Readable {
100
102
 
101
103
  this._pendingOpen = cb
102
104
 
103
- binding.iteratorOpen(this._db._handle, this._handle, this._gt, this._gte, this._lt, this._lte, this._reverse)
105
+ binding.iteratorOpen(this._db._handle, this._handle, this._gt, this._gte, this._lt, this._lte, this._reverse, this._snapshot ? this._snapshot._handle : null)
104
106
  }
105
107
 
106
108
  _read (cb) {
@@ -0,0 +1,21 @@
1
+ const binding = require('../binding')
2
+
3
+ module.exports = class RocksDBSnapshot {
4
+ constructor (db) {
5
+ this._db = db
6
+
7
+ this._handle = binding.snapshotCreate(db._handle)
8
+
9
+ this._db._snapshots.add(this)
10
+ }
11
+
12
+ destroy () {
13
+ if (this._handle === null) return
14
+
15
+ binding.snapshotDestroy(this._handle)
16
+
17
+ this._handle = null
18
+
19
+ this._db._snapshots.delete(this)
20
+ }
21
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rocksdb-native",
3
- "version": "2.1.0",
3
+ "version": "2.3.0",
4
4
  "description": "librocksdb bindings for JavaScript",
5
5
  "exports": {
6
6
  ".": "./index.js",
@@ -10,6 +10,8 @@ extern "C" {
10
10
  #include <uv.h>
11
11
 
12
12
  typedef struct rocksdb_options_s rocksdb_options_t;
13
+ typedef struct rocksdb_read_options_s rocksdb_read_options_t;
14
+ typedef struct rocksdb_write_options_s rocksdb_write_options_t;
13
15
  typedef struct rocksdb_open_s rocksdb_open_t;
14
16
  typedef struct rocksdb_close_s rocksdb_close_t;
15
17
  typedef struct rocksdb_slice_s rocksdb_slice_t;
@@ -19,6 +21,7 @@ typedef struct rocksdb_read_s rocksdb_read_t;
19
21
  typedef struct rocksdb_read_batch_s rocksdb_read_batch_t;
20
22
  typedef struct rocksdb_write_s rocksdb_write_t;
21
23
  typedef struct rocksdb_write_batch_s rocksdb_write_batch_t;
24
+ typedef struct rocksdb_snapshot_s rocksdb_snapshot_t;
22
25
  typedef struct rocksdb_s rocksdb_t;
23
26
 
24
27
  typedef void (*rocksdb_open_cb)(rocksdb_open_t *req, int status);
@@ -75,6 +78,19 @@ struct rocksdb_options_s {
75
78
  uint32_t table_format_version;
76
79
  };
77
80
 
81
+ /** @version 0 */
82
+ struct rocksdb_read_options_s {
83
+ int version;
84
+
85
+ /** @since 0 */
86
+ rocksdb_snapshot_t *snapshot;
87
+ };
88
+
89
+ /** @version 0 */
90
+ struct rocksdb_write_options_s {
91
+ int version;
92
+ };
93
+
78
94
  struct rocksdb_open_s {
79
95
  uv_work_t worker;
80
96
 
@@ -121,6 +137,8 @@ struct rocksdb_iterator_s {
121
137
 
122
138
  rocksdb_t *db;
123
139
 
140
+ rocksdb_read_options_t options;
141
+
124
142
  void *handle; // Opaque iterator pointer
125
143
 
126
144
  rocksdb_range_t range;
@@ -160,6 +178,8 @@ struct rocksdb_read_batch_s {
160
178
 
161
179
  rocksdb_t *db;
162
180
 
181
+ rocksdb_read_options_t options;
182
+
163
183
  size_t len;
164
184
 
165
185
  rocksdb_read_t *reads;
@@ -200,6 +220,8 @@ struct rocksdb_write_batch_s {
200
220
 
201
221
  rocksdb_t *db;
202
222
 
223
+ rocksdb_write_options_t options;
224
+
203
225
  size_t len;
204
226
 
205
227
  rocksdb_write_t *writes;
@@ -211,6 +233,12 @@ struct rocksdb_write_batch_s {
211
233
  void *data;
212
234
  };
213
235
 
236
+ struct rocksdb_snapshot_s {
237
+ rocksdb_t *db;
238
+
239
+ const void *handle; // Opaque snapshot pointer
240
+ };
241
+
214
242
  struct rocksdb_s {
215
243
  uv_loop_t *loop;
216
244
 
@@ -236,22 +264,28 @@ rocksdb_slice_t
236
264
  rocksdb_slice_empty (void);
237
265
 
238
266
  int
239
- rocksdb_iterator_open (rocksdb_t *db, rocksdb_iterator_t *iterator, rocksdb_range_t range, bool reverse, rocksdb_iterator_cb cb);
267
+ rocksdb_iterator_open (rocksdb_t *db, rocksdb_iterator_t *iterator, rocksdb_range_t range, bool reverse, const rocksdb_read_options_t *options, rocksdb_iterator_cb cb);
240
268
 
241
269
  int
242
270
  rocksdb_iterator_close (rocksdb_iterator_t *iterator, rocksdb_iterator_cb cb);
243
271
 
244
272
  int
245
- rocksdb_iterator_refresh (rocksdb_iterator_t *iterator, rocksdb_range_t range, bool reverse, rocksdb_iterator_cb cb);
273
+ rocksdb_iterator_refresh (rocksdb_iterator_t *iterator, rocksdb_range_t range, bool reverse, const rocksdb_read_options_t *options, rocksdb_iterator_cb cb);
246
274
 
247
275
  int
248
276
  rocksdb_iterator_read (rocksdb_iterator_t *iterator, rocksdb_slice_t *keys, rocksdb_slice_t *values, size_t capacity, rocksdb_iterator_cb cb);
249
277
 
250
278
  int
251
- rocksdb_read (rocksdb_t *db, rocksdb_read_batch_t *batch, rocksdb_read_t *reads, char **errors, size_t len, rocksdb_read_batch_cb cb);
279
+ rocksdb_read (rocksdb_t *db, rocksdb_read_batch_t *batch, rocksdb_read_t *reads, char **errors, size_t len, const rocksdb_read_options_t *options, rocksdb_read_batch_cb cb);
280
+
281
+ int
282
+ rocksdb_write (rocksdb_t *db, rocksdb_write_batch_t *batch, rocksdb_write_t *writes, size_t len, const rocksdb_write_options_t *options, rocksdb_write_batch_cb cb);
252
283
 
253
284
  int
254
- rocksdb_write (rocksdb_t *db, rocksdb_write_batch_t *batch, rocksdb_write_t *writes, size_t len, rocksdb_write_batch_cb cb);
285
+ rocksdb_snapshot_create (rocksdb_t *db, rocksdb_snapshot_t *snapshot);
286
+
287
+ void
288
+ rocksdb_snapshot_destroy (rocksdb_snapshot_t *snapshot);
255
289
 
256
290
  #ifdef __cplusplus
257
291
  }