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.
- package/binding.c +92 -10
- package/index.js +9 -0
- package/lib/batch.js +11 -1
- package/lib/iterator.js +3 -1
- package/lib/snapshot.js +21 -0
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/rocksdb-native.bare +0 -0
- package/prebuilds/darwin-arm64/rocksdb-native.node +0 -0
- package/prebuilds/darwin-x64/rocksdb-native.bare +0 -0
- package/prebuilds/darwin-x64/rocksdb-native.node +0 -0
- package/prebuilds/linux-arm64/rocksdb-native.bare +0 -0
- package/prebuilds/linux-arm64/rocksdb-native.node +0 -0
- package/prebuilds/linux-x64/rocksdb-native.bare +0 -0
- package/prebuilds/linux-x64/rocksdb-native.node +0 -0
- package/prebuilds/win32-x64/rocksdb-native.bare +0 -0
- package/prebuilds/win32-x64/rocksdb-native.node +0 -0
- package/vendor/librocksdb/include/rocksdb.h +38 -4
- package/vendor/librocksdb/src/rocksdb.cc +114 -14
- package/vendor/librocksdb/vendor/rocksdb/CMakeLists.txt +21 -4
- package/vendor/librocksdb/vendor/rocksdb/cache/secondary_cache_adapter.cc +6 -3
- package/vendor/librocksdb/vendor/rocksdb/db/arena_wrapped_db_iter.cc +4 -4
- package/vendor/librocksdb/vendor/rocksdb/db/arena_wrapped_db_iter.h +4 -2
- package/vendor/librocksdb/vendor/rocksdb/db/attribute_group_iterator_impl.cc +20 -0
- package/vendor/librocksdb/vendor/rocksdb/db/attribute_group_iterator_impl.h +83 -0
- package/vendor/librocksdb/vendor/rocksdb/db/builder.cc +9 -5
- package/vendor/librocksdb/vendor/rocksdb/db/builder.h +1 -1
- package/vendor/librocksdb/vendor/rocksdb/db/c.cc +231 -6
- package/vendor/librocksdb/vendor/rocksdb/db/c_test.c +202 -2
- package/vendor/librocksdb/vendor/rocksdb/db/coalescing_iterator.cc +47 -0
- package/vendor/librocksdb/vendor/rocksdb/db/coalescing_iterator.h +79 -0
- package/vendor/librocksdb/vendor/rocksdb/db/column_family.cc +28 -0
- package/vendor/librocksdb/vendor/rocksdb/db/column_family.h +17 -0
- package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction.cc +8 -1
- package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction.h +11 -9
- package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_iterator.cc +50 -23
- package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_iterator.h +13 -0
- package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_job.cc +22 -25
- package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_job.h +2 -0
- package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_outputs.cc +8 -1
- package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_outputs.h +1 -0
- package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_picker.cc +40 -17
- package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_picker.h +20 -14
- package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_picker_level.cc +11 -6
- package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_picker_universal.cc +77 -24
- package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_service_job.cc +2 -0
- package/vendor/librocksdb/vendor/rocksdb/db/convenience.cc +3 -0
- package/vendor/librocksdb/vendor/rocksdb/db/db_filesnapshot.cc +125 -31
- package/vendor/librocksdb/vendor/rocksdb/db/db_impl/db_impl.cc +457 -231
- package/vendor/librocksdb/vendor/rocksdb/db/db_impl/db_impl.h +172 -73
- package/vendor/librocksdb/vendor/rocksdb/db/db_impl/db_impl_compaction_flush.cc +152 -133
- package/vendor/librocksdb/vendor/rocksdb/db/db_impl/db_impl_debug.cc +5 -0
- package/vendor/librocksdb/vendor/rocksdb/db/db_impl/db_impl_files.cc +58 -52
- package/vendor/librocksdb/vendor/rocksdb/db/db_impl/db_impl_follower.cc +348 -0
- package/vendor/librocksdb/vendor/rocksdb/db/db_impl/db_impl_follower.h +54 -0
- package/vendor/librocksdb/vendor/rocksdb/db/db_impl/db_impl_open.cc +136 -117
- package/vendor/librocksdb/vendor/rocksdb/db/db_impl/db_impl_secondary.cc +4 -3
- package/vendor/librocksdb/vendor/rocksdb/db/db_impl/db_impl_secondary.h +7 -6
- package/vendor/librocksdb/vendor/rocksdb/db/db_impl/db_impl_write.cc +134 -80
- package/vendor/librocksdb/vendor/rocksdb/db/db_iter.cc +11 -0
- package/vendor/librocksdb/vendor/rocksdb/db/db_test2.cc +1 -1
- package/vendor/librocksdb/vendor/rocksdb/db/db_test_util.cc +11 -1
- package/vendor/librocksdb/vendor/rocksdb/db/db_test_util.h +11 -7
- package/vendor/librocksdb/vendor/rocksdb/db/dbformat.cc +19 -4
- package/vendor/librocksdb/vendor/rocksdb/db/dbformat.h +3 -2
- package/vendor/librocksdb/vendor/rocksdb/db/error_handler.cc +34 -39
- package/vendor/librocksdb/vendor/rocksdb/db/error_handler.h +3 -4
- package/vendor/librocksdb/vendor/rocksdb/db/event_helpers.cc +6 -3
- package/vendor/librocksdb/vendor/rocksdb/db/experimental.cc +3 -2
- package/vendor/librocksdb/vendor/rocksdb/db/external_sst_file_ingestion_job.cc +76 -18
- package/vendor/librocksdb/vendor/rocksdb/db/external_sst_file_ingestion_job.h +11 -0
- package/vendor/librocksdb/vendor/rocksdb/db/flush_job.cc +37 -5
- package/vendor/librocksdb/vendor/rocksdb/db/flush_job.h +14 -0
- package/vendor/librocksdb/vendor/rocksdb/db/import_column_family_job.cc +49 -45
- package/vendor/librocksdb/vendor/rocksdb/db/internal_stats.cc +60 -1
- package/vendor/librocksdb/vendor/rocksdb/db/internal_stats.h +20 -1
- package/vendor/librocksdb/vendor/rocksdb/db/log_reader.cc +15 -6
- package/vendor/librocksdb/vendor/rocksdb/db/log_writer.cc +59 -10
- package/vendor/librocksdb/vendor/rocksdb/db/log_writer.h +8 -0
- package/vendor/librocksdb/vendor/rocksdb/db/memtable.cc +24 -40
- package/vendor/librocksdb/vendor/rocksdb/db/memtable.h +10 -10
- package/vendor/librocksdb/vendor/rocksdb/db/memtable_list.cc +9 -8
- package/vendor/librocksdb/vendor/rocksdb/db/multi_cf_iterator_impl.h +296 -0
- package/vendor/librocksdb/vendor/rocksdb/db/range_tombstone_fragmenter.h +8 -10
- package/vendor/librocksdb/vendor/rocksdb/db/repair.cc +4 -3
- package/vendor/librocksdb/vendor/rocksdb/db/seqno_to_time_mapping.cc +30 -0
- package/vendor/librocksdb/vendor/rocksdb/db/seqno_to_time_mapping.h +9 -0
- package/vendor/librocksdb/vendor/rocksdb/db/table_cache.cc +17 -2
- package/vendor/librocksdb/vendor/rocksdb/db/table_cache.h +9 -1
- package/vendor/librocksdb/vendor/rocksdb/db/table_properties_collector.h +9 -2
- package/vendor/librocksdb/vendor/rocksdb/db/transaction_log_impl.cc +3 -3
- package/vendor/librocksdb/vendor/rocksdb/db/transaction_log_impl.h +7 -7
- package/vendor/librocksdb/vendor/rocksdb/db/version_edit.cc +0 -1
- package/vendor/librocksdb/vendor/rocksdb/db/version_edit_handler.cc +39 -5
- package/vendor/librocksdb/vendor/rocksdb/db/version_edit_handler.h +24 -15
- package/vendor/librocksdb/vendor/rocksdb/db/version_set.cc +117 -64
- package/vendor/librocksdb/vendor/rocksdb/db/version_set.h +27 -10
- package/vendor/librocksdb/vendor/rocksdb/db/wal_manager.cc +37 -29
- package/vendor/librocksdb/vendor/rocksdb/db/wal_manager.h +6 -5
- package/vendor/librocksdb/vendor/rocksdb/db/wide/wide_columns.cc +2 -3
- package/vendor/librocksdb/vendor/rocksdb/db/wide/wide_columns_helper.cc +6 -0
- package/vendor/librocksdb/vendor/rocksdb/db/write_batch.cc +89 -31
- package/vendor/librocksdb/vendor/rocksdb/db/write_thread.cc +53 -5
- package/vendor/librocksdb/vendor/rocksdb/db/write_thread.h +36 -4
- package/vendor/librocksdb/vendor/rocksdb/env/composite_env_wrapper.h +21 -0
- package/vendor/librocksdb/vendor/rocksdb/env/env.cc +15 -0
- package/vendor/librocksdb/vendor/rocksdb/env/fs_on_demand.cc +331 -0
- package/vendor/librocksdb/vendor/rocksdb/env/fs_on_demand.h +139 -0
- package/vendor/librocksdb/vendor/rocksdb/env/io_posix.cc +8 -6
- package/vendor/librocksdb/vendor/rocksdb/env/io_posix.h +1 -1
- package/vendor/librocksdb/vendor/rocksdb/file/delete_scheduler.cc +130 -27
- package/vendor/librocksdb/vendor/rocksdb/file/delete_scheduler.h +61 -8
- package/vendor/librocksdb/vendor/rocksdb/file/file_util.cc +25 -4
- package/vendor/librocksdb/vendor/rocksdb/file/file_util.h +15 -0
- package/vendor/librocksdb/vendor/rocksdb/file/sequence_file_reader.cc +1 -0
- package/vendor/librocksdb/vendor/rocksdb/file/sequence_file_reader.h +9 -4
- package/vendor/librocksdb/vendor/rocksdb/file/sst_file_manager_impl.cc +18 -0
- package/vendor/librocksdb/vendor/rocksdb/file/sst_file_manager_impl.h +31 -4
- package/vendor/librocksdb/vendor/rocksdb/file/writable_file_writer.cc +40 -38
- package/vendor/librocksdb/vendor/rocksdb/file/writable_file_writer.h +48 -15
- package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/advanced_options.h +12 -3
- package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/attribute_groups.h +114 -0
- package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/c.h +90 -0
- package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/cache.h +5 -0
- package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/comparator.h +27 -0
- package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/db.h +71 -12
- package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/env.h +9 -0
- package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/experimental.h +5 -0
- package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/file_system.h +14 -0
- package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/iterator.h +9 -71
- package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/iterator_base.h +90 -0
- package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/listener.h +21 -0
- package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/options.h +125 -12
- package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/perf_context.h +1 -1
- package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/sst_file_reader.h +11 -1
- package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/table.h +6 -6
- package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/table_properties.h +19 -0
- package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/transaction_log.h +12 -6
- package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/types.h +12 -0
- package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/universal_compaction.h +31 -0
- package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/user_write_callback.h +29 -0
- package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/cache_dump_load.h +4 -0
- package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/checkpoint.h +4 -2
- package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/customizable_util.h +0 -1
- package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/env_mirror.h +1 -1
- package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/ldb_cmd.h +24 -7
- package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/option_change_migration.h +4 -4
- package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/stackable_db.h +24 -5
- package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +46 -0
- package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/transaction.h +42 -17
- package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/transaction_db.h +5 -0
- package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/types_util.h +36 -0
- package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +71 -3
- package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/version.h +2 -2
- package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/wide_columns.h +87 -72
- package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/write_batch_base.h +1 -1
- package/vendor/librocksdb/vendor/rocksdb/memory/memory_allocator.cc +1 -0
- package/vendor/librocksdb/vendor/rocksdb/options/cf_options.cc +13 -2
- package/vendor/librocksdb/vendor/rocksdb/options/cf_options.h +6 -2
- package/vendor/librocksdb/vendor/rocksdb/options/db_options.cc +27 -1
- package/vendor/librocksdb/vendor/rocksdb/options/db_options.h +10 -3
- package/vendor/librocksdb/vendor/rocksdb/options/options.cc +3 -0
- package/vendor/librocksdb/vendor/rocksdb/options/options_helper.cc +1 -0
- package/vendor/librocksdb/vendor/rocksdb/port/jemalloc_helper.h +2 -2
- package/vendor/librocksdb/vendor/rocksdb/port/stack_trace.cc +1 -0
- package/vendor/librocksdb/vendor/rocksdb/port/win/port_win.cc +3 -2
- package/vendor/librocksdb/vendor/rocksdb/table/block_based/binary_search_index_reader.cc +1 -2
- package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_based_table_builder.cc +47 -31
- package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_based_table_factory.cc +15 -0
- package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_based_table_iterator.cc +37 -18
- package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_based_table_iterator.h +10 -3
- package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_based_table_reader.cc +102 -41
- package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_based_table_reader.h +15 -7
- package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_based_table_reader_impl.h +1 -3
- package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +5 -6
- package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_cache.h +31 -0
- package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_prefetcher.cc +6 -0
- package/vendor/librocksdb/vendor/rocksdb/table/block_based/cachable_entry.h +10 -5
- package/vendor/librocksdb/vendor/rocksdb/table/block_based/filter_block.h +34 -28
- package/vendor/librocksdb/vendor/rocksdb/table/block_based/filter_block_reader_common.cc +17 -11
- package/vendor/librocksdb/vendor/rocksdb/table/block_based/filter_block_reader_common.h +5 -2
- package/vendor/librocksdb/vendor/rocksdb/table/block_based/filter_policy.cc +12 -3
- package/vendor/librocksdb/vendor/rocksdb/table/block_based/full_filter_block.cc +37 -30
- package/vendor/librocksdb/vendor/rocksdb/table/block_based/full_filter_block.h +11 -13
- package/vendor/librocksdb/vendor/rocksdb/table/block_based/hash_index_reader.cc +1 -2
- package/vendor/librocksdb/vendor/rocksdb/table/block_based/index_builder.cc +62 -53
- package/vendor/librocksdb/vendor/rocksdb/table/block_based/index_builder.h +60 -38
- package/vendor/librocksdb/vendor/rocksdb/table/block_based/index_reader_common.cc +14 -9
- package/vendor/librocksdb/vendor/rocksdb/table/block_based/index_reader_common.h +4 -1
- package/vendor/librocksdb/vendor/rocksdb/table/block_based/partitioned_filter_block.cc +135 -94
- package/vendor/librocksdb/vendor/rocksdb/table/block_based/partitioned_filter_block.h +52 -46
- package/vendor/librocksdb/vendor/rocksdb/table/block_based/partitioned_index_reader.cc +51 -13
- package/vendor/librocksdb/vendor/rocksdb/table/block_based/partitioned_index_reader.h +2 -0
- package/vendor/librocksdb/vendor/rocksdb/table/block_based/uncompression_dict_reader.cc +3 -11
- package/vendor/librocksdb/vendor/rocksdb/table/block_based/uncompression_dict_reader.h +2 -3
- package/vendor/librocksdb/vendor/rocksdb/table/block_fetcher.cc +8 -10
- package/vendor/librocksdb/vendor/rocksdb/table/block_fetcher.h +2 -1
- package/vendor/librocksdb/vendor/rocksdb/table/compaction_merging_iterator.cc +9 -10
- package/vendor/librocksdb/vendor/rocksdb/table/compaction_merging_iterator.h +3 -2
- package/vendor/librocksdb/vendor/rocksdb/table/format.cc +1 -2
- package/vendor/librocksdb/vendor/rocksdb/table/iterator.cc +4 -0
- package/vendor/librocksdb/vendor/rocksdb/table/merging_iterator.cc +18 -13
- package/vendor/librocksdb/vendor/rocksdb/table/merging_iterator.h +5 -3
- package/vendor/librocksdb/vendor/rocksdb/table/meta_blocks.cc +18 -4
- package/vendor/librocksdb/vendor/rocksdb/table/meta_blocks.h +4 -0
- package/vendor/librocksdb/vendor/rocksdb/table/plain/plain_table_builder.cc +2 -2
- package/vendor/librocksdb/vendor/rocksdb/table/sst_file_dumper.cc +6 -6
- package/vendor/librocksdb/vendor/rocksdb/table/sst_file_reader.cc +24 -2
- package/vendor/librocksdb/vendor/rocksdb/table/sst_file_writer_collectors.h +3 -1
- package/vendor/librocksdb/vendor/rocksdb/table/table_builder.h +8 -7
- package/vendor/librocksdb/vendor/rocksdb/table/table_iterator.h +69 -0
- package/vendor/librocksdb/vendor/rocksdb/table/table_reader.h +9 -0
- package/vendor/librocksdb/vendor/rocksdb/test_util/testutil.cc +25 -0
- package/vendor/librocksdb/vendor/rocksdb/test_util/testutil.h +12 -0
- package/vendor/librocksdb/vendor/rocksdb/tools/db_bench_tool.cc +32 -0
- package/vendor/librocksdb/vendor/rocksdb/tools/ldb_cmd.cc +618 -124
- package/vendor/librocksdb/vendor/rocksdb/tools/ldb_cmd_impl.h +19 -1
- package/vendor/librocksdb/vendor/rocksdb/tools/ldb_tool.cc +9 -0
- package/vendor/librocksdb/vendor/rocksdb/util/aligned_storage.h +24 -0
- package/vendor/librocksdb/vendor/rocksdb/util/autovector.h +4 -0
- package/vendor/librocksdb/vendor/rocksdb/util/comparator.cc +12 -0
- package/vendor/librocksdb/vendor/rocksdb/util/filter_bench.cc +1 -1
- package/vendor/librocksdb/vendor/rocksdb/util/random.cc +2 -1
- package/vendor/librocksdb/vendor/rocksdb/util/stderr_logger.cc +3 -4
- package/vendor/librocksdb/vendor/rocksdb/util/stderr_logger.h +1 -1
- package/vendor/librocksdb/vendor/rocksdb/util/udt_util.cc +33 -0
- package/vendor/librocksdb/vendor/rocksdb/util/udt_util.h +7 -0
- package/vendor/librocksdb/vendor/rocksdb/util/write_batch_util.h +5 -0
- package/vendor/librocksdb/vendor/rocksdb/util/xxhash.h +36 -29
- package/vendor/librocksdb/vendor/rocksdb/utilities/blob_db/blob_db_impl.h +3 -0
- package/vendor/librocksdb/vendor/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +20 -0
- package/vendor/librocksdb/vendor/rocksdb/utilities/cache_dump_load_impl.cc +29 -9
- package/vendor/librocksdb/vendor/rocksdb/utilities/cache_dump_load_impl.h +14 -3
- package/vendor/librocksdb/vendor/rocksdb/utilities/debug.cc +16 -4
- package/vendor/librocksdb/vendor/rocksdb/utilities/fault_injection_fs.cc +677 -248
- package/vendor/librocksdb/vendor/rocksdb/utilities/fault_injection_fs.h +325 -158
- package/vendor/librocksdb/vendor/rocksdb/utilities/option_change_migration/option_change_migration.cc +1 -8
- package/vendor/librocksdb/vendor/rocksdb/utilities/table_properties_collectors/compact_for_tiering_collector.cc +144 -0
- package/vendor/librocksdb/vendor/rocksdb/utilities/table_properties_collectors/compact_for_tiering_collector.h +45 -0
- package/vendor/librocksdb/vendor/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +12 -0
- package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +1 -1
- package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/growable_array.h +3 -3
- package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/pessimistic_transaction.cc +116 -20
- package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/pessimistic_transaction.h +33 -1
- package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +78 -13
- package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/pessimistic_transaction_db.h +33 -1
- package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/transaction_base.cc +106 -7
- package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/transaction_base.h +68 -10
- package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/transaction_test.h +7 -3
- package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/transaction_util.cc +8 -5
- package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/transaction_util.h +7 -4
- package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/write_prepared_txn.cc +18 -12
- package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/write_prepared_txn_db.cc +4 -4
- package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/write_prepared_txn_db.h +17 -0
- package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/write_unprepared_txn.cc +11 -9
- package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +2 -1
- package/vendor/librocksdb/vendor/rocksdb/utilities/types_util.cc +88 -0
- package/vendor/librocksdb/vendor/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +313 -14
- package/vendor/librocksdb/vendor/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +7 -0
- package/vendor/librocksdb/vendor/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +1 -1
- package/vendor/librocksdb/vendor/rocksdb/db/multi_cf_iterator.cc +0 -102
- package/vendor/librocksdb/vendor/rocksdb/db/multi_cf_iterator.h +0 -159
|
@@ -73,37 +73,47 @@ IndexBuilder* IndexBuilder::CreateIndexBuilder(
|
|
|
73
73
|
return result;
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
-
|
|
77
|
-
const Comparator& comparator,
|
|
76
|
+
Slice ShortenedIndexBuilder::FindShortestInternalKeySeparator(
|
|
77
|
+
const Comparator& comparator, const Slice& start, const Slice& limit,
|
|
78
|
+
std::string* scratch) {
|
|
78
79
|
// Attempt to shorten the user portion of the key
|
|
79
|
-
Slice user_start = ExtractUserKey(
|
|
80
|
+
Slice user_start = ExtractUserKey(start);
|
|
80
81
|
Slice user_limit = ExtractUserKey(limit);
|
|
81
|
-
|
|
82
|
-
comparator.FindShortestSeparator(
|
|
83
|
-
|
|
84
|
-
|
|
82
|
+
scratch->assign(user_start.data(), user_start.size());
|
|
83
|
+
comparator.FindShortestSeparator(scratch, user_limit);
|
|
84
|
+
assert(comparator.Compare(user_start, *scratch) <= 0);
|
|
85
|
+
assert(comparator.Compare(user_start, user_limit) >= 0 ||
|
|
86
|
+
comparator.Compare(*scratch, user_limit) < 0);
|
|
87
|
+
if (scratch->size() <= user_start.size() &&
|
|
88
|
+
comparator.Compare(user_start, *scratch) < 0) {
|
|
85
89
|
// User key has become shorter physically, but larger logically.
|
|
86
90
|
// Tack on the earliest possible number to the shortened user key.
|
|
87
|
-
PutFixed64(
|
|
91
|
+
PutFixed64(scratch,
|
|
88
92
|
PackSequenceAndType(kMaxSequenceNumber, kValueTypeForSeek));
|
|
89
|
-
assert(InternalKeyComparator(&comparator).Compare(
|
|
90
|
-
assert(InternalKeyComparator(&comparator).Compare(
|
|
91
|
-
|
|
93
|
+
assert(InternalKeyComparator(&comparator).Compare(start, *scratch) < 0);
|
|
94
|
+
assert(InternalKeyComparator(&comparator).Compare(*scratch, limit) < 0);
|
|
95
|
+
return *scratch;
|
|
96
|
+
} else {
|
|
97
|
+
return start;
|
|
92
98
|
}
|
|
93
99
|
}
|
|
94
100
|
|
|
95
|
-
|
|
96
|
-
const Comparator& comparator, std::string*
|
|
97
|
-
Slice user_key = ExtractUserKey(
|
|
98
|
-
|
|
99
|
-
comparator.FindShortSuccessor(
|
|
100
|
-
|
|
101
|
+
Slice ShortenedIndexBuilder::FindShortInternalKeySuccessor(
|
|
102
|
+
const Comparator& comparator, const Slice& key, std::string* scratch) {
|
|
103
|
+
Slice user_key = ExtractUserKey(key);
|
|
104
|
+
scratch->assign(user_key.data(), user_key.size());
|
|
105
|
+
comparator.FindShortSuccessor(scratch);
|
|
106
|
+
assert(comparator.Compare(user_key, *scratch) <= 0);
|
|
107
|
+
if (scratch->size() <= user_key.size() &&
|
|
108
|
+
comparator.Compare(user_key, *scratch) < 0) {
|
|
101
109
|
// User key has become shorter physically, but larger logically.
|
|
102
110
|
// Tack on the earliest possible number to the shortened user key.
|
|
103
|
-
PutFixed64(
|
|
111
|
+
PutFixed64(scratch,
|
|
104
112
|
PackSequenceAndType(kMaxSequenceNumber, kValueTypeForSeek));
|
|
105
|
-
assert(InternalKeyComparator(&comparator).Compare(
|
|
106
|
-
|
|
113
|
+
assert(InternalKeyComparator(&comparator).Compare(key, *scratch) < 0);
|
|
114
|
+
return *scratch;
|
|
115
|
+
} else {
|
|
116
|
+
return key;
|
|
107
117
|
}
|
|
108
118
|
}
|
|
109
119
|
|
|
@@ -135,7 +145,6 @@ PartitionedIndexBuilder::PartitionedIndexBuilder(
|
|
|
135
145
|
BlockBasedTableOptions::kDataBlockBinarySearch /* index_type */,
|
|
136
146
|
0.75 /* data_block_hash_table_util_ratio */, ts_sz,
|
|
137
147
|
persist_user_defined_timestamps, true /* is_user_key */),
|
|
138
|
-
sub_index_builder_(nullptr),
|
|
139
148
|
table_opt_(table_opt),
|
|
140
149
|
// We start by false. After each partition we revise the value based on
|
|
141
150
|
// what the sub_index_builder has decided. If the feature is disabled
|
|
@@ -146,13 +155,9 @@ PartitionedIndexBuilder::PartitionedIndexBuilder(
|
|
|
146
155
|
seperator_is_key_plus_seq_(false),
|
|
147
156
|
use_value_delta_encoding_(use_value_delta_encoding) {}
|
|
148
157
|
|
|
149
|
-
PartitionedIndexBuilder::~PartitionedIndexBuilder() {
|
|
150
|
-
delete sub_index_builder_;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
158
|
void PartitionedIndexBuilder::MakeNewSubIndexBuilder() {
|
|
154
159
|
assert(sub_index_builder_ == nullptr);
|
|
155
|
-
sub_index_builder_ =
|
|
160
|
+
sub_index_builder_ = std::make_unique<ShortenedIndexBuilder>(
|
|
156
161
|
comparator_, table_opt_.index_block_restart_interval,
|
|
157
162
|
table_opt_.format_version, use_value_delta_encoding_,
|
|
158
163
|
table_opt_.index_shortening, /* include_first_key */ false, ts_sz_,
|
|
@@ -180,33 +185,35 @@ void PartitionedIndexBuilder::RequestPartitionCut() {
|
|
|
180
185
|
partition_cut_requested_ = true;
|
|
181
186
|
}
|
|
182
187
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
const Slice* first_key_in_next_block, const BlockHandle& block_handle
|
|
188
|
+
Slice PartitionedIndexBuilder::AddIndexEntry(
|
|
189
|
+
const Slice& last_key_in_current_block,
|
|
190
|
+
const Slice* first_key_in_next_block, const BlockHandle& block_handle,
|
|
191
|
+
std::string* separator_scratch) {
|
|
186
192
|
// Note: to avoid two consecuitive flush in the same method call, we do not
|
|
187
193
|
// check flush policy when adding the last key
|
|
188
194
|
if (UNLIKELY(first_key_in_next_block == nullptr)) { // no more keys
|
|
189
195
|
if (sub_index_builder_ == nullptr) {
|
|
190
196
|
MakeNewSubIndexBuilder();
|
|
197
|
+
// Reserve next partition entry, where we will modify the key and
|
|
198
|
+
// eventually set the value
|
|
199
|
+
entries_.push_back({{}, {}});
|
|
191
200
|
}
|
|
192
|
-
sub_index_builder_->AddIndexEntry(
|
|
193
|
-
|
|
201
|
+
auto sep = sub_index_builder_->AddIndexEntry(
|
|
202
|
+
last_key_in_current_block, first_key_in_next_block, block_handle,
|
|
203
|
+
separator_scratch);
|
|
194
204
|
if (!seperator_is_key_plus_seq_ &&
|
|
195
205
|
sub_index_builder_->seperator_is_key_plus_seq_) {
|
|
196
|
-
//
|
|
197
|
-
// flush_policy to point to Block Builder of sub_index_builder_ that store
|
|
198
|
-
// internal keys.
|
|
206
|
+
// We need to apply !seperator_is_key_plus_seq to all sub-index builders
|
|
199
207
|
seperator_is_key_plus_seq_ = true;
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
208
|
+
// Would associate flush_policy with the appropriate builder, but it won't
|
|
209
|
+
// be used again with no more keys
|
|
210
|
+
flush_policy_.reset();
|
|
203
211
|
}
|
|
204
|
-
|
|
205
|
-
entries_.
|
|
206
|
-
|
|
207
|
-
std::unique_ptr<ShortenedIndexBuilder>(sub_index_builder_)});
|
|
208
|
-
sub_index_builder_ = nullptr;
|
|
212
|
+
entries_.back().key.assign(sep.data(), sep.size());
|
|
213
|
+
assert(entries_.back().value == nullptr);
|
|
214
|
+
std::swap(entries_.back().value, sub_index_builder_);
|
|
209
215
|
cut_filter_block = true;
|
|
216
|
+
return sep;
|
|
210
217
|
} else {
|
|
211
218
|
// apply flush policy only to non-empty sub_index_builder_
|
|
212
219
|
if (sub_index_builder_ != nullptr) {
|
|
@@ -214,31 +221,33 @@ void PartitionedIndexBuilder::AddIndexEntry(
|
|
|
214
221
|
block_handle.EncodeTo(&handle_encoding);
|
|
215
222
|
bool do_flush =
|
|
216
223
|
partition_cut_requested_ ||
|
|
217
|
-
flush_policy_->Update(
|
|
224
|
+
flush_policy_->Update(last_key_in_current_block, handle_encoding);
|
|
218
225
|
if (do_flush) {
|
|
219
|
-
entries_.
|
|
220
|
-
|
|
221
|
-
std::unique_ptr<ShortenedIndexBuilder>(sub_index_builder_)});
|
|
226
|
+
assert(entries_.back().value == nullptr);
|
|
227
|
+
std::swap(entries_.back().value, sub_index_builder_);
|
|
222
228
|
cut_filter_block = true;
|
|
223
|
-
sub_index_builder_ = nullptr;
|
|
224
229
|
}
|
|
225
230
|
}
|
|
226
231
|
if (sub_index_builder_ == nullptr) {
|
|
227
232
|
MakeNewSubIndexBuilder();
|
|
233
|
+
// Reserve next partition entry, where we will modify the key and
|
|
234
|
+
// eventually set the value
|
|
235
|
+
entries_.push_back({{}, {}});
|
|
228
236
|
}
|
|
229
|
-
sub_index_builder_->AddIndexEntry(
|
|
230
|
-
|
|
231
|
-
|
|
237
|
+
auto sep = sub_index_builder_->AddIndexEntry(
|
|
238
|
+
last_key_in_current_block, first_key_in_next_block, block_handle,
|
|
239
|
+
separator_scratch);
|
|
240
|
+
entries_.back().key.assign(sep.data(), sep.size());
|
|
232
241
|
if (!seperator_is_key_plus_seq_ &&
|
|
233
242
|
sub_index_builder_->seperator_is_key_plus_seq_) {
|
|
234
|
-
//
|
|
235
|
-
// flush_policy to point to Block Builder of sub_index_builder_ that store
|
|
236
|
-
// internal keys.
|
|
243
|
+
// We need to apply !seperator_is_key_plus_seq to all sub-index builders
|
|
237
244
|
seperator_is_key_plus_seq_ = true;
|
|
245
|
+
// And use a flush_policy with the appropriate builder
|
|
238
246
|
flush_policy_.reset(FlushBlockBySizePolicyFactory::NewFlushBlockPolicy(
|
|
239
247
|
table_opt_.metadata_block_size, table_opt_.block_size_deviation,
|
|
240
248
|
sub_index_builder_->index_block_builder_));
|
|
241
249
|
}
|
|
250
|
+
return sep;
|
|
242
251
|
}
|
|
243
252
|
}
|
|
244
253
|
|
|
@@ -57,19 +57,24 @@ class IndexBuilder {
|
|
|
57
57
|
virtual ~IndexBuilder() = default;
|
|
58
58
|
|
|
59
59
|
// Add a new index entry to index block.
|
|
60
|
+
//
|
|
60
61
|
// To allow further optimization, we provide `last_key_in_current_block` and
|
|
61
62
|
// `first_key_in_next_block`, based on which the specific implementation can
|
|
62
63
|
// determine the best index key to be used for the index block.
|
|
63
64
|
// Called before the OnKeyAdded() call for first_key_in_next_block.
|
|
64
|
-
// @last_key_in_current_block:
|
|
65
|
-
// "substitute key".
|
|
65
|
+
// @last_key_in_current_block: TODO lifetime details
|
|
66
66
|
// @first_key_in_next_block: it will be nullptr if the entry being added is
|
|
67
67
|
// the last one in the table
|
|
68
|
-
//
|
|
68
|
+
// @separator_scratch: a scratch buffer to back a computed separator between
|
|
69
|
+
// those, as needed. May be modified on each call.
|
|
70
|
+
// @return: the key or separator stored in the index, which could be
|
|
71
|
+
// last_key_in_current_block or a computed separator backed by
|
|
72
|
+
// separator_scratch or last_key_in_current_block.
|
|
69
73
|
// REQUIRES: Finish() has not yet been called.
|
|
70
|
-
virtual
|
|
71
|
-
|
|
72
|
-
|
|
74
|
+
virtual Slice AddIndexEntry(const Slice& last_key_in_current_block,
|
|
75
|
+
const Slice* first_key_in_next_block,
|
|
76
|
+
const BlockHandle& block_handle,
|
|
77
|
+
std::string* separator_scratch) = 0;
|
|
73
78
|
|
|
74
79
|
// This method will be called whenever a key is added. The subclasses may
|
|
75
80
|
// override OnKeyAdded() if they need to collect additional information.
|
|
@@ -181,29 +186,35 @@ class ShortenedIndexBuilder : public IndexBuilder {
|
|
|
181
186
|
}
|
|
182
187
|
}
|
|
183
188
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
189
|
+
Slice AddIndexEntry(const Slice& last_key_in_current_block,
|
|
190
|
+
const Slice* first_key_in_next_block,
|
|
191
|
+
const BlockHandle& block_handle,
|
|
192
|
+
std::string* separator_scratch) override {
|
|
193
|
+
Slice separator;
|
|
187
194
|
if (first_key_in_next_block != nullptr) {
|
|
188
195
|
if (shortening_mode_ !=
|
|
189
196
|
BlockBasedTableOptions::IndexShorteningMode::kNoShortening) {
|
|
190
|
-
FindShortestInternalKeySeparator(
|
|
191
|
-
|
|
192
|
-
|
|
197
|
+
separator = FindShortestInternalKeySeparator(
|
|
198
|
+
*comparator_->user_comparator(), last_key_in_current_block,
|
|
199
|
+
*first_key_in_next_block, separator_scratch);
|
|
200
|
+
} else {
|
|
201
|
+
separator = last_key_in_current_block;
|
|
193
202
|
}
|
|
194
203
|
if (!seperator_is_key_plus_seq_ &&
|
|
195
|
-
ShouldUseKeyPlusSeqAsSeparator(
|
|
204
|
+
ShouldUseKeyPlusSeqAsSeparator(last_key_in_current_block,
|
|
196
205
|
*first_key_in_next_block)) {
|
|
197
206
|
seperator_is_key_plus_seq_ = true;
|
|
198
207
|
}
|
|
199
208
|
} else {
|
|
200
209
|
if (shortening_mode_ == BlockBasedTableOptions::IndexShorteningMode::
|
|
201
210
|
kShortenSeparatorsAndSuccessor) {
|
|
202
|
-
FindShortInternalKeySuccessor(
|
|
203
|
-
|
|
211
|
+
separator = FindShortInternalKeySuccessor(
|
|
212
|
+
*comparator_->user_comparator(), last_key_in_current_block,
|
|
213
|
+
separator_scratch);
|
|
214
|
+
} else {
|
|
215
|
+
separator = last_key_in_current_block;
|
|
204
216
|
}
|
|
205
217
|
}
|
|
206
|
-
auto sep = Slice(*last_key_in_current_block);
|
|
207
218
|
|
|
208
219
|
assert(!include_first_key_ || !current_block_first_internal_key_.empty());
|
|
209
220
|
// When UDT should not be persisted, the index block builders take care of
|
|
@@ -241,13 +252,15 @@ class ShortenedIndexBuilder : public IndexBuilder {
|
|
|
241
252
|
// away the UDT from key in index block as data block does the same thing.
|
|
242
253
|
// What are the implications if a "FindShortInternalKeySuccessor"
|
|
243
254
|
// optimization is provided.
|
|
244
|
-
index_block_builder_.Add(
|
|
255
|
+
index_block_builder_.Add(separator, encoded_entry,
|
|
256
|
+
&delta_encoded_entry_slice);
|
|
245
257
|
if (!seperator_is_key_plus_seq_) {
|
|
246
|
-
index_block_builder_without_seq_.Add(
|
|
247
|
-
|
|
258
|
+
index_block_builder_without_seq_.Add(
|
|
259
|
+
ExtractUserKey(separator), encoded_entry, &delta_encoded_entry_slice);
|
|
248
260
|
}
|
|
249
261
|
|
|
250
262
|
current_block_first_internal_key_.clear();
|
|
263
|
+
return separator;
|
|
251
264
|
}
|
|
252
265
|
|
|
253
266
|
using IndexBuilder::Finish;
|
|
@@ -271,12 +284,14 @@ class ShortenedIndexBuilder : public IndexBuilder {
|
|
|
271
284
|
|
|
272
285
|
// Changes *key to a short string >= *key.
|
|
273
286
|
//
|
|
274
|
-
static
|
|
275
|
-
|
|
276
|
-
|
|
287
|
+
static Slice FindShortestInternalKeySeparator(const Comparator& comparator,
|
|
288
|
+
const Slice& start,
|
|
289
|
+
const Slice& limit,
|
|
290
|
+
std::string* scratch);
|
|
277
291
|
|
|
278
|
-
static
|
|
279
|
-
|
|
292
|
+
static Slice FindShortInternalKeySuccessor(const Comparator& comparator,
|
|
293
|
+
const Slice& key,
|
|
294
|
+
std::string* scratch);
|
|
280
295
|
|
|
281
296
|
friend class PartitionedIndexBuilder;
|
|
282
297
|
|
|
@@ -333,12 +348,14 @@ class HashIndexBuilder : public IndexBuilder {
|
|
|
333
348
|
ts_sz, persist_user_defined_timestamps),
|
|
334
349
|
hash_key_extractor_(hash_key_extractor) {}
|
|
335
350
|
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
351
|
+
Slice AddIndexEntry(const Slice& last_key_in_current_block,
|
|
352
|
+
const Slice* first_key_in_next_block,
|
|
353
|
+
const BlockHandle& block_handle,
|
|
354
|
+
std::string* separator_scratch) override {
|
|
339
355
|
++current_restart_index_;
|
|
340
|
-
primary_index_builder_.AddIndexEntry(
|
|
341
|
-
|
|
356
|
+
return primary_index_builder_.AddIndexEntry(
|
|
357
|
+
last_key_in_current_block, first_key_in_next_block, block_handle,
|
|
358
|
+
separator_scratch);
|
|
342
359
|
}
|
|
343
360
|
|
|
344
361
|
void OnKeyAdded(const Slice& key) override {
|
|
@@ -441,11 +458,10 @@ class PartitionedIndexBuilder : public IndexBuilder {
|
|
|
441
458
|
bool use_value_delta_encoding, size_t ts_sz,
|
|
442
459
|
bool persist_user_defined_timestamps);
|
|
443
460
|
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
const BlockHandle& block_handle) override;
|
|
461
|
+
Slice AddIndexEntry(const Slice& last_key_in_current_block,
|
|
462
|
+
const Slice* first_key_in_next_block,
|
|
463
|
+
const BlockHandle& block_handle,
|
|
464
|
+
std::string* separator_scratch) override;
|
|
449
465
|
|
|
450
466
|
Status Finish(IndexBlocks* index_blocks,
|
|
451
467
|
const BlockHandle& last_partition_block_handle) override;
|
|
@@ -463,7 +479,10 @@ class PartitionedIndexBuilder : public IndexBuilder {
|
|
|
463
479
|
return false;
|
|
464
480
|
}
|
|
465
481
|
|
|
466
|
-
std::string& GetPartitionKey() {
|
|
482
|
+
const std::string& GetPartitionKey() {
|
|
483
|
+
static const std::string kEmptyKey;
|
|
484
|
+
return entries_.empty() ? kEmptyKey : entries_.back().key;
|
|
485
|
+
}
|
|
467
486
|
|
|
468
487
|
// Called when an external entity (such as filter partition builder) request
|
|
469
488
|
// cutting the next partition
|
|
@@ -489,13 +508,16 @@ class PartitionedIndexBuilder : public IndexBuilder {
|
|
|
489
508
|
std::string key;
|
|
490
509
|
std::unique_ptr<ShortenedIndexBuilder> value;
|
|
491
510
|
};
|
|
492
|
-
|
|
511
|
+
// List of partitioned indexes and their keys. Note that when
|
|
512
|
+
// sub_index_builder_ is not null (during construction), there
|
|
513
|
+
// will be a placeholder entry at the back of this list tracking
|
|
514
|
+
// the possible key for that next entry.
|
|
515
|
+
std::list<Entry> entries_;
|
|
493
516
|
BlockBuilder index_block_builder_; // top-level index builder
|
|
494
517
|
BlockBuilder index_block_builder_without_seq_; // same for user keys
|
|
495
518
|
// the active partition index builder
|
|
496
|
-
ShortenedIndexBuilder
|
|
519
|
+
std::unique_ptr<ShortenedIndexBuilder> sub_index_builder_;
|
|
497
520
|
// the last key in the active partition index builder
|
|
498
|
-
std::string sub_index_last_key_;
|
|
499
521
|
std::unique_ptr<FlushBlockPolicy> flush_policy_;
|
|
500
522
|
// true if Finish is called once but not complete yet.
|
|
501
523
|
bool finishing_indexes = false;
|
|
@@ -35,9 +35,8 @@ Status BlockBasedTable::IndexReaderCommon::ReadIndexBlock(
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
Status BlockBasedTable::IndexReaderCommon::GetOrReadIndexBlock(
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
const ReadOptions& ro) const {
|
|
38
|
+
GetContext* get_context, BlockCacheLookupContext* lookup_context,
|
|
39
|
+
CachableEntry<Block>* index_block, const ReadOptions& ro) const {
|
|
41
40
|
assert(index_block != nullptr);
|
|
42
41
|
|
|
43
42
|
if (!index_block_.IsEmpty()) {
|
|
@@ -45,13 +44,19 @@ Status BlockBasedTable::IndexReaderCommon::GetOrReadIndexBlock(
|
|
|
45
44
|
return Status::OK();
|
|
46
45
|
}
|
|
47
46
|
|
|
48
|
-
|
|
49
|
-
if (no_io) {
|
|
50
|
-
read_options.read_tier = kBlockCacheTier;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
return ReadIndexBlock(table_, /*prefetch_buffer=*/nullptr, read_options,
|
|
47
|
+
return ReadIndexBlock(table_, /*prefetch_buffer=*/nullptr, ro,
|
|
54
48
|
cache_index_blocks(), get_context, lookup_context,
|
|
55
49
|
index_block);
|
|
56
50
|
}
|
|
51
|
+
|
|
52
|
+
void BlockBasedTable::IndexReaderCommon::EraseFromCacheBeforeDestruction(
|
|
53
|
+
uint32_t uncache_aggressiveness) {
|
|
54
|
+
if (uncache_aggressiveness > 0) {
|
|
55
|
+
if (index_block_.IsCached()) {
|
|
56
|
+
index_block_.ResetEraseIfLastRef();
|
|
57
|
+
} else {
|
|
58
|
+
table()->EraseFromCache(table()->get_rep()->index_handle);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
57
62
|
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -24,6 +24,9 @@ class BlockBasedTable::IndexReaderCommon : public BlockBasedTable::IndexReader {
|
|
|
24
24
|
assert(table_ != nullptr);
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
+
void EraseFromCacheBeforeDestruction(
|
|
28
|
+
uint32_t /*uncache_aggressiveness*/) override;
|
|
29
|
+
|
|
27
30
|
protected:
|
|
28
31
|
static Status ReadIndexBlock(const BlockBasedTable* table,
|
|
29
32
|
FilePrefetchBuffer* prefetch_buffer,
|
|
@@ -71,7 +74,7 @@ class BlockBasedTable::IndexReaderCommon : public BlockBasedTable::IndexReader {
|
|
|
71
74
|
return table_->get_rep()->user_defined_timestamps_persisted;
|
|
72
75
|
}
|
|
73
76
|
|
|
74
|
-
Status GetOrReadIndexBlock(
|
|
77
|
+
Status GetOrReadIndexBlock(GetContext* get_context,
|
|
75
78
|
BlockCacheLookupContext* lookup_context,
|
|
76
79
|
CachableEntry<Block>* index_block,
|
|
77
80
|
const ReadOptions& read_options) const;
|