@nxtedition/rocksdb 9.0.0 → 10.0.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.cc +244 -177
- package/deps/rocksdb/rocksdb/CMakeLists.txt +13 -9
- package/deps/rocksdb/rocksdb/Makefile +15 -6
- package/deps/rocksdb/rocksdb/README.md +29 -0
- package/deps/rocksdb/rocksdb/TARGETS +17 -2
- package/deps/rocksdb/rocksdb/cache/cache.cc +35 -0
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +74 -15
- package/deps/rocksdb/rocksdb/cache/cache_helpers.cc +2 -1
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +4 -3
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +16 -4
- package/deps/rocksdb/rocksdb/cache/charged_cache.cc +4 -2
- package/deps/rocksdb/rocksdb/cache/charged_cache.h +5 -3
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +2024 -14
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +349 -23
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +126 -51
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +9 -0
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +202 -7
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +31 -14
- package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +0 -33
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +314 -25
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.h +29 -4
- package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +10 -0
- package/deps/rocksdb/rocksdb/cache/sharded_cache.h +8 -3
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.cc +119 -0
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.h +155 -0
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache_test.cc +711 -0
- package/deps/rocksdb/rocksdb/cache/typed_cache.h +17 -11
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +25 -11
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_contents.h +2 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +8 -0
- package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +7 -3
- package/deps/rocksdb/rocksdb/db/builder.cc +3 -3
- package/deps/rocksdb/rocksdb/db/c.cc +64 -0
- package/deps/rocksdb/rocksdb/db/c_test.c +36 -0
- package/deps/rocksdb/rocksdb/db/column_family.cc +23 -15
- package/deps/rocksdb/rocksdb/db/column_family.h +9 -0
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +101 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +36 -23
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +24 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +3 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +42 -18
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +7 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +4 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +8 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +3 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +61 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +146 -64
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +13 -39
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +29 -7
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +8 -3
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +59 -0
- package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +27 -3
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +186 -2
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +17 -5
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +519 -240
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +104 -43
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +169 -66
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +2 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +12 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +50 -14
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +85 -53
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +3 -7
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +99 -82
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +4 -14
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +24 -21
- package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +6 -0
- package/deps/rocksdb/rocksdb/db/db_iter.cc +83 -55
- package/deps/rocksdb/rocksdb/db/db_iter.h +10 -2
- package/deps/rocksdb/rocksdb/db/db_iter_test.cc +29 -0
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +276 -21
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +35 -0
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +187 -1
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +258 -0
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +258 -0
- package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +52 -0
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +74 -1
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +22 -4
- package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +3 -1
- package/deps/rocksdb/rocksdb/db/db_test.cc +134 -30
- package/deps/rocksdb/rocksdb/db/db_test2.cc +3 -0
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +11 -6
- package/deps/rocksdb/rocksdb/db/db_test_util.h +5 -2
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +12 -0
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +337 -1
- package/deps/rocksdb/rocksdb/db/deletefile_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/error_handler.cc +51 -34
- package/deps/rocksdb/rocksdb/db/error_handler.h +7 -6
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +58 -0
- package/deps/rocksdb/rocksdb/db/flush_job.cc +17 -19
- package/deps/rocksdb/rocksdb/db/flush_job.h +3 -3
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/memtable.cc +18 -70
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +1 -1
- package/deps/rocksdb/rocksdb/db/memtable_list.h +11 -1
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +330 -115
- package/deps/rocksdb/rocksdb/db/merge_helper.h +100 -12
- package/deps/rocksdb/rocksdb/db/merge_operator.cc +82 -0
- package/deps/rocksdb/rocksdb/db/merge_test.cc +267 -0
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +3 -0
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.h +4 -4
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +4 -0
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +4 -0
- package/deps/rocksdb/rocksdb/db/repair.cc +4 -3
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +454 -70
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +105 -69
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +83 -46
- package/deps/rocksdb/rocksdb/db/table_cache.cc +32 -19
- package/deps/rocksdb/rocksdb/db/table_cache.h +12 -6
- package/deps/rocksdb/rocksdb/db/version_edit.h +10 -4
- package/deps/rocksdb/rocksdb/db/version_set.cc +75 -73
- package/deps/rocksdb/rocksdb/db/version_set.h +8 -8
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +2 -5
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +22 -11
- package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +525 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +6 -22
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +0 -20
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +0 -29
- package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper.cc +46 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper.h +40 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper_test.cc +39 -0
- package/deps/rocksdb/rocksdb/db/write_batch.cc +44 -20
- package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +1 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +4 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +4 -7
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +88 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +15 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +108 -58
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +36 -14
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +34 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +195 -130
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +4 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +12 -12
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_wide_merge_operator.cc +51 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_wide_merge_operator.h +27 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +3 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +14 -11
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +44 -38
- package/deps/rocksdb/rocksdb/env/env.cc +5 -0
- package/deps/rocksdb/rocksdb/env/unique_id_gen.cc +1 -0
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +50 -29
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +32 -2
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +513 -30
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +8 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +38 -13
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +14 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +42 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +65 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +11 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +26 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +37 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/filter_policy.h +8 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +10 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +55 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +45 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/port_defs.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +9 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +79 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +16 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +35 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +15 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +14 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/types.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +6 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +9 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/wide_columns.h +53 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +0 -2
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +2 -2
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +1 -1
- package/deps/rocksdb/rocksdb/microbench/README.md +60 -0
- package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +6 -0
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +18 -7
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +4 -0
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +4 -0
- package/deps/rocksdb/rocksdb/options/db_options.cc +47 -2
- package/deps/rocksdb/rocksdb/options/db_options.h +3 -0
- package/deps/rocksdb/rocksdb/options/options_helper.cc +12 -0
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +3 -1
- package/deps/rocksdb/rocksdb/options/options_test.cc +6 -1
- package/deps/rocksdb/rocksdb/plugin/README.md +43 -0
- package/deps/rocksdb/rocksdb/port/README +10 -0
- package/deps/rocksdb/rocksdb/port/port_example.h +1 -1
- package/deps/rocksdb/rocksdb/port/port_posix.cc +1 -1
- package/deps/rocksdb/rocksdb/port/port_posix.h +7 -4
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +5 -0
- package/deps/rocksdb/rocksdb/port/win/port_win.h +5 -2
- package/deps/rocksdb/rocksdb/src.mk +7 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +3 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +275 -61
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +96 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +179 -62
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +35 -22
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +12 -8
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +14 -9
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +3 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +26 -7
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +15 -12
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +10 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +39 -18
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +6 -6
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +44 -26
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +10 -8
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +4 -2
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +4 -0
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +6 -2
- package/deps/rocksdb/rocksdb/table/get_context.cc +52 -89
- package/deps/rocksdb/rocksdb/table/get_context.h +12 -3
- package/deps/rocksdb/rocksdb/table/internal_iterator.h +11 -0
- package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +29 -1
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +12 -0
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +33 -6
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +2 -4
- package/deps/rocksdb/rocksdb/table/table_reader.h +6 -0
- package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +31 -0
- package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.cc +2 -1
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim.py +3 -3
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +26 -43
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +213 -28
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +36 -0
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +0 -1
- package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +33 -10
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +32 -11
- package/deps/rocksdb/rocksdb/util/cast_util.h +10 -0
- package/deps/rocksdb/rocksdb/util/comparator.cc +26 -1
- package/deps/rocksdb/rocksdb/util/compression.h +9 -3
- package/deps/rocksdb/rocksdb/util/crc32c.cc +7 -1
- package/deps/rocksdb/rocksdb/util/distributed_mutex.h +1 -1
- package/deps/rocksdb/rocksdb/util/overload.h +23 -0
- package/deps/rocksdb/rocksdb/util/rate_limiter.cc +53 -18
- package/deps/rocksdb/rocksdb/util/rate_limiter_impl.h +6 -1
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +90 -19
- package/deps/rocksdb/rocksdb/util/slice_test.cc +30 -0
- package/deps/rocksdb/rocksdb/util/status.cc +1 -0
- package/deps/rocksdb/rocksdb/util/string_util.cc +39 -0
- package/deps/rocksdb/rocksdb/util/string_util.h +10 -0
- package/deps/rocksdb/rocksdb/util/thread_operation.h +2 -0
- package/deps/rocksdb/rocksdb/util/udt_util.cc +42 -0
- package/deps/rocksdb/rocksdb/util/udt_util.h +19 -0
- package/deps/rocksdb/rocksdb/util/udt_util_test.cc +14 -0
- package/deps/rocksdb/rocksdb/util/xxhash.h +0 -3
- package/deps/rocksdb/rocksdb/util/xxph3.h +0 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +2 -1
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +19 -15
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +11 -7
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +5 -0
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +3 -0
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +9 -0
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +7 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/README +13 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +41 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +15 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +4 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +155 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +6 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +81 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +2 -6
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +7 -5
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +2 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +3 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +57 -27
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +127 -120
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +129 -59
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +105 -8
- package/deps/rocksdb/rocksdb.gyp +4 -2
- package/index.js +38 -55
- package/package.json +4 -4
- package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
- package/util.h +7 -1
- package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +0 -7
- package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +0 -33
- package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/Finduring.cmake +0 -26
- package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +0 -10
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
package/binding.cc
CHANGED
|
@@ -40,8 +40,6 @@ struct Database;
|
|
|
40
40
|
struct Iterator;
|
|
41
41
|
|
|
42
42
|
struct ColumnFamily {
|
|
43
|
-
napi_ref ref;
|
|
44
|
-
napi_value val;
|
|
45
43
|
rocksdb::ColumnFamilyHandle* handle;
|
|
46
44
|
rocksdb::ColumnFamilyDescriptor descriptor;
|
|
47
45
|
};
|
|
@@ -52,9 +50,12 @@ struct Closable {
|
|
|
52
50
|
};
|
|
53
51
|
|
|
54
52
|
struct Database final {
|
|
53
|
+
Database(std::string location) : location(std::move(location)) {}
|
|
55
54
|
~Database() { assert(!db); }
|
|
56
55
|
|
|
57
56
|
rocksdb::Status Close() {
|
|
57
|
+
std::lock_guard<std::mutex> lock(mutex);
|
|
58
|
+
|
|
58
59
|
if (!db) {
|
|
59
60
|
return rocksdb::Status::OK();
|
|
60
61
|
}
|
|
@@ -64,17 +65,35 @@ struct Database final {
|
|
|
64
65
|
}
|
|
65
66
|
closables.clear();
|
|
66
67
|
|
|
67
|
-
for (auto& [id, column] : columns) {
|
|
68
|
-
db->DestroyColumnFamilyHandle(column.handle);
|
|
69
|
-
}
|
|
70
|
-
columns.clear();
|
|
71
|
-
|
|
72
68
|
db->FlushWAL(true);
|
|
73
69
|
|
|
74
|
-
|
|
75
|
-
|
|
70
|
+
for (auto& [id, column] : columns) {
|
|
71
|
+
db->DestroyColumnFamilyHandle(column.handle);
|
|
72
|
+
}
|
|
73
|
+
columns.clear();
|
|
74
|
+
|
|
75
|
+
auto db2 = std::move(db);
|
|
76
|
+
return db2->Close();
|
|
76
77
|
}
|
|
77
78
|
|
|
79
|
+
void Ref() {
|
|
80
|
+
std::lock_guard<std::mutex> lock(mutex);
|
|
81
|
+
|
|
82
|
+
refs++;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
void Unref() {
|
|
86
|
+
std::lock_guard<std::mutex> lock(mutex);
|
|
87
|
+
|
|
88
|
+
if (--refs == 0) {
|
|
89
|
+
Close();
|
|
90
|
+
delete this;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
int refs = 0;
|
|
95
|
+
std::mutex mutex;
|
|
96
|
+
std::string location;
|
|
78
97
|
std::unique_ptr<rocksdb::DB> db;
|
|
79
98
|
std::set<Closable*> closables;
|
|
80
99
|
std::map<int32_t, ColumnFamily> columns;
|
|
@@ -449,32 +468,74 @@ struct Iterator final : public BaseIterator {
|
|
|
449
468
|
napi_ref ref_ = nullptr;
|
|
450
469
|
};
|
|
451
470
|
|
|
452
|
-
static void env_cleanup_hook(void* arg) {
|
|
453
|
-
auto database = reinterpret_cast<Database*>(arg);
|
|
454
|
-
if (database) {
|
|
455
|
-
database->Close();
|
|
456
|
-
}
|
|
457
|
-
}
|
|
458
|
-
|
|
459
471
|
static void FinalizeDatabase(napi_env env, void* data, void* hint) {
|
|
460
472
|
if (data) {
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
}
|
|
467
|
-
delete database;
|
|
473
|
+
auto database = reinterpret_cast<Database*>(data);
|
|
474
|
+
|
|
475
|
+
std::lock_guard<std::mutex> lock(database->mutex);
|
|
476
|
+
|
|
477
|
+
database->Unref();
|
|
468
478
|
}
|
|
469
479
|
}
|
|
470
480
|
|
|
471
481
|
NAPI_METHOD(db_init) {
|
|
472
|
-
|
|
473
|
-
|
|
482
|
+
NAPI_ARGV(1);
|
|
483
|
+
|
|
484
|
+
Database* database = nullptr;
|
|
485
|
+
|
|
486
|
+
napi_valuetype type;
|
|
487
|
+
NAPI_STATUS_THROWS(napi_typeof(env, argv[0], &type));
|
|
488
|
+
|
|
489
|
+
if (type == napi_string) {
|
|
490
|
+
std::string location;
|
|
491
|
+
size_t length = 0;
|
|
492
|
+
NAPI_STATUS_THROWS(napi_get_value_string_utf8(env, argv[0], nullptr, 0, &length));
|
|
493
|
+
location.resize(length, '\0');
|
|
494
|
+
NAPI_STATUS_THROWS(napi_get_value_string_utf8(env, argv[0], &location[0], length + 1, &length));
|
|
495
|
+
|
|
496
|
+
database = new Database(location);
|
|
497
|
+
} else if (type == napi_bigint) {
|
|
498
|
+
int64_t value;
|
|
499
|
+
bool lossless;
|
|
500
|
+
NAPI_STATUS_THROWS(napi_get_value_bigint_int64(env, argv[0], &value, &lossless));
|
|
501
|
+
|
|
502
|
+
database = reinterpret_cast<Database*>(value);
|
|
503
|
+
} else {
|
|
504
|
+
NAPI_STATUS_THROWS(napi_invalid_arg);
|
|
505
|
+
}
|
|
474
506
|
|
|
475
507
|
napi_value result;
|
|
476
508
|
NAPI_STATUS_THROWS(napi_create_external(env, database, FinalizeDatabase, nullptr, &result));
|
|
477
509
|
|
|
510
|
+
{
|
|
511
|
+
std::lock_guard<std::mutex> lock(database->mutex);
|
|
512
|
+
database->Ref();
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
return result;
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
NAPI_METHOD(db_get_handle) {
|
|
519
|
+
NAPI_ARGV(1);
|
|
520
|
+
|
|
521
|
+
Database* database;
|
|
522
|
+
NAPI_STATUS_THROWS(napi_get_value_external(env, argv[0], reinterpret_cast<void**>(&database)));
|
|
523
|
+
|
|
524
|
+
napi_value result;
|
|
525
|
+
NAPI_STATUS_THROWS(napi_create_bigint_int64(env, reinterpret_cast<intptr_t>(database), &result));
|
|
526
|
+
|
|
527
|
+
return result;
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
NAPI_METHOD(db_get_location) {
|
|
531
|
+
NAPI_ARGV(1);
|
|
532
|
+
|
|
533
|
+
Database* database;
|
|
534
|
+
NAPI_STATUS_THROWS(napi_get_value_external(env, argv[0], reinterpret_cast<void**>(&database)));
|
|
535
|
+
|
|
536
|
+
napi_value result;
|
|
537
|
+
NAPI_STATUS_THROWS(Convert(env, &database->location, Encoding::String, result));
|
|
538
|
+
|
|
478
539
|
return result;
|
|
479
540
|
}
|
|
480
541
|
|
|
@@ -710,141 +771,164 @@ NAPI_METHOD(db_get_identity) {
|
|
|
710
771
|
}
|
|
711
772
|
|
|
712
773
|
NAPI_METHOD(db_open) {
|
|
713
|
-
NAPI_ARGV(
|
|
774
|
+
NAPI_ARGV(3);
|
|
714
775
|
|
|
715
776
|
Database* database;
|
|
716
777
|
NAPI_STATUS_THROWS(napi_get_value_external(env, argv[0], reinterpret_cast<void**>(&database)));
|
|
717
778
|
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
779
|
+
std::lock_guard<std::mutex> lock(database->mutex);
|
|
780
|
+
|
|
781
|
+
if (database->db) {
|
|
782
|
+
napi_value columns;
|
|
783
|
+
NAPI_STATUS_THROWS(napi_create_object(env, &columns));
|
|
784
|
+
for (auto& [id, column] : database->columns) {
|
|
785
|
+
napi_value val;
|
|
786
|
+
NAPI_STATUS_THROWS(napi_create_external(env, column.handle, nullptr, nullptr, &val));
|
|
787
|
+
NAPI_STATUS_THROWS(napi_set_named_property(env, columns, column.descriptor.name.c_str(), val));
|
|
788
|
+
}
|
|
789
|
+
return columns;
|
|
790
|
+
} else {
|
|
791
|
+
rocksdb::Options dbOptions;
|
|
792
|
+
|
|
793
|
+
const auto options = argv[1];
|
|
794
|
+
|
|
795
|
+
int parallelism = std::max<int>(1, std::thread::hardware_concurrency() / 2);
|
|
796
|
+
NAPI_STATUS_THROWS(GetProperty(env, options, "parallelism", parallelism));
|
|
797
|
+
dbOptions.IncreaseParallelism(parallelism);
|
|
798
|
+
|
|
799
|
+
uint32_t walTTL = 0;
|
|
800
|
+
NAPI_STATUS_THROWS(GetProperty(env, options, "walTTL", walTTL));
|
|
801
|
+
dbOptions.WAL_ttl_seconds = walTTL / 1e3;
|
|
802
|
+
|
|
803
|
+
uint32_t walSizeLimit = 0;
|
|
804
|
+
NAPI_STATUS_THROWS(GetProperty(env, options, "walSizeLimit", walSizeLimit));
|
|
805
|
+
dbOptions.WAL_size_limit_MB = walSizeLimit / 1e6;
|
|
806
|
+
|
|
807
|
+
uint32_t maxTotalWalSize = 0;
|
|
808
|
+
NAPI_STATUS_THROWS(GetProperty(env, options, "walTotalSizeLimit", walSizeLimit));
|
|
809
|
+
dbOptions.max_total_wal_size = maxTotalWalSize / 1e6;
|
|
810
|
+
|
|
811
|
+
bool walCompression = false;
|
|
812
|
+
NAPI_STATUS_THROWS(GetProperty(env, options, "walCompression", walCompression));
|
|
813
|
+
dbOptions.wal_compression =
|
|
814
|
+
walCompression ? rocksdb::CompressionType::kZSTD : rocksdb::CompressionType::kNoCompression;
|
|
815
|
+
|
|
816
|
+
dbOptions.avoid_unnecessary_blocking_io = true;
|
|
817
|
+
dbOptions.write_dbid_to_manifest = true;
|
|
818
|
+
dbOptions.enable_pipelined_write = true; // We only write in the main thread...
|
|
819
|
+
dbOptions.create_missing_column_families = true;
|
|
820
|
+
dbOptions.fail_if_options_file_error = true;
|
|
821
|
+
|
|
822
|
+
NAPI_STATUS_THROWS(GetProperty(env, options, "createIfMissing", dbOptions.create_if_missing));
|
|
823
|
+
NAPI_STATUS_THROWS(GetProperty(env, options, "errorIfExists", dbOptions.error_if_exists));
|
|
824
|
+
NAPI_STATUS_THROWS(GetProperty(env, options, "pipelinedWrite", dbOptions.enable_pipelined_write));
|
|
825
|
+
|
|
826
|
+
// TODO (feat): dbOptions.listeners
|
|
827
|
+
|
|
828
|
+
std::string infoLogLevel;
|
|
829
|
+
NAPI_STATUS_THROWS(GetProperty(env, options, "infoLogLevel", infoLogLevel));
|
|
830
|
+
if (infoLogLevel.size() > 0) {
|
|
831
|
+
rocksdb::InfoLogLevel lvl = {};
|
|
832
|
+
|
|
833
|
+
if (infoLogLevel == "debug")
|
|
834
|
+
lvl = rocksdb::InfoLogLevel::DEBUG_LEVEL;
|
|
835
|
+
else if (infoLogLevel == "info")
|
|
836
|
+
lvl = rocksdb::InfoLogLevel::INFO_LEVEL;
|
|
837
|
+
else if (infoLogLevel == "warn")
|
|
838
|
+
lvl = rocksdb::InfoLogLevel::WARN_LEVEL;
|
|
839
|
+
else if (infoLogLevel == "error")
|
|
840
|
+
lvl = rocksdb::InfoLogLevel::ERROR_LEVEL;
|
|
841
|
+
else if (infoLogLevel == "fatal")
|
|
842
|
+
lvl = rocksdb::InfoLogLevel::FATAL_LEVEL;
|
|
843
|
+
else if (infoLogLevel == "header")
|
|
844
|
+
lvl = rocksdb::InfoLogLevel::HEADER_LEVEL;
|
|
845
|
+
else
|
|
846
|
+
napi_throw_error(env, nullptr, "invalid log level");
|
|
847
|
+
|
|
848
|
+
dbOptions.info_log_level = lvl;
|
|
849
|
+
} else {
|
|
850
|
+
// In some places RocksDB checks this option to see if it should prepare
|
|
851
|
+
// debug information (ahead of logging), so set it to the highest level.
|
|
852
|
+
dbOptions.info_log_level = rocksdb::InfoLogLevel::HEADER_LEVEL;
|
|
853
|
+
dbOptions.info_log.reset(new NullLogger());
|
|
854
|
+
}
|
|
855
|
+
|
|
856
|
+
NAPI_STATUS_THROWS(InitOptions(env, dbOptions, options));
|
|
857
|
+
|
|
858
|
+
std::vector<rocksdb::ColumnFamilyDescriptor> descriptors;
|
|
859
|
+
|
|
860
|
+
bool hasColumns;
|
|
861
|
+
NAPI_STATUS_THROWS(napi_has_named_property(env, options, "columns", &hasColumns));
|
|
862
|
+
|
|
863
|
+
if (hasColumns) {
|
|
864
|
+
napi_value columns;
|
|
865
|
+
NAPI_STATUS_THROWS(napi_get_named_property(env, options, "columns", &columns));
|
|
866
|
+
|
|
867
|
+
napi_value keys;
|
|
868
|
+
NAPI_STATUS_THROWS(napi_get_property_names(env, columns, &keys));
|
|
869
|
+
|
|
870
|
+
uint32_t len;
|
|
871
|
+
NAPI_STATUS_THROWS(napi_get_array_length(env, keys, &len));
|
|
872
|
+
|
|
873
|
+
descriptors.resize(len);
|
|
874
|
+
for (uint32_t n = 0; n < len; ++n) {
|
|
875
|
+
napi_value key;
|
|
876
|
+
NAPI_STATUS_THROWS(napi_get_element(env, keys, n, &key));
|
|
877
|
+
|
|
878
|
+
napi_value column;
|
|
879
|
+
NAPI_STATUS_THROWS(napi_get_property(env, columns, key, &column));
|
|
880
|
+
|
|
881
|
+
NAPI_STATUS_THROWS(InitOptions(env, descriptors[n].options, column));
|
|
882
|
+
|
|
883
|
+
NAPI_STATUS_THROWS(GetValue(env, key, descriptors[n].name));
|
|
884
|
+
}
|
|
885
|
+
}
|
|
886
|
+
|
|
887
|
+
auto callback = argv[2];
|
|
888
|
+
|
|
889
|
+
runAsync<std::vector<rocksdb::ColumnFamilyHandle*>>(
|
|
890
|
+
"leveldown.open", env, callback,
|
|
891
|
+
[=](auto& handles) {
|
|
892
|
+
assert(!database->db);
|
|
893
|
+
|
|
894
|
+
rocksdb::DB* db = nullptr;
|
|
895
|
+
|
|
896
|
+
// TODO (fix): There is a race condition here... Check if we are already opening the database.
|
|
897
|
+
|
|
898
|
+
const auto status = descriptors.empty()
|
|
899
|
+
? rocksdb::DB::Open(dbOptions, database->location, &db)
|
|
900
|
+
: rocksdb::DB::Open(dbOptions, database->location, descriptors, &handles, &db);
|
|
901
|
+
|
|
902
|
+
{
|
|
903
|
+
std::lock_guard<std::mutex> lock(database->mutex);
|
|
904
|
+
database->db.reset(db);
|
|
905
|
+
}
|
|
906
|
+
|
|
907
|
+
return status;
|
|
908
|
+
},
|
|
909
|
+
[=](auto& handles, auto env, auto& argv) {
|
|
910
|
+
argv.resize(2);
|
|
911
|
+
|
|
912
|
+
NAPI_STATUS_RETURN(napi_create_object(env, &argv[1]));
|
|
913
|
+
|
|
914
|
+
for (size_t n = 0; n < handles.size(); ++n) {
|
|
915
|
+
ColumnFamily column;
|
|
916
|
+
column.handle = handles[n];
|
|
917
|
+
column.descriptor = descriptors[n];
|
|
918
|
+
database->columns[column.handle->GetID()] = column;
|
|
919
|
+
}
|
|
920
|
+
|
|
921
|
+
napi_value columns;
|
|
922
|
+
NAPI_STATUS_RETURN(napi_create_object(env, &columns));
|
|
923
|
+
for (auto& [id, column] : database->columns) {
|
|
924
|
+
napi_value val;
|
|
925
|
+
NAPI_STATUS_RETURN(napi_create_external(env, column.handle, nullptr, nullptr, &val));
|
|
926
|
+
NAPI_STATUS_RETURN(napi_set_named_property(env, columns, column.descriptor.name.c_str(), val));
|
|
927
|
+
}
|
|
928
|
+
|
|
929
|
+
return napi_ok;
|
|
930
|
+
});
|
|
931
|
+
}
|
|
848
932
|
|
|
849
933
|
return 0;
|
|
850
934
|
}
|
|
@@ -859,6 +943,8 @@ NAPI_METHOD(db_close) {
|
|
|
859
943
|
Database* database;
|
|
860
944
|
NAPI_STATUS_THROWS(napi_get_value_external(env, argv[0], reinterpret_cast<void**>(&database)));
|
|
861
945
|
|
|
946
|
+
std::lock_guard<std::mutex> lock(database->mutex);
|
|
947
|
+
|
|
862
948
|
auto callback = argv[1];
|
|
863
949
|
|
|
864
950
|
struct State {};
|
|
@@ -1563,36 +1649,17 @@ NAPI_METHOD(batch_iterate) {
|
|
|
1563
1649
|
return result;
|
|
1564
1650
|
}
|
|
1565
1651
|
|
|
1566
|
-
NAPI_METHOD(db_flush_wal) {
|
|
1567
|
-
NAPI_ARGV(3);
|
|
1568
|
-
|
|
1569
|
-
Database* database;
|
|
1570
|
-
NAPI_STATUS_THROWS(napi_get_value_external(env, argv[0], reinterpret_cast<void**>(&database)));
|
|
1571
|
-
|
|
1572
|
-
auto options = argv[1];
|
|
1573
|
-
|
|
1574
|
-
bool sync = false;
|
|
1575
|
-
NAPI_STATUS_THROWS(GetProperty(env, options, "sync", sync));
|
|
1576
|
-
|
|
1577
|
-
auto callback = argv[2];
|
|
1578
|
-
|
|
1579
|
-
runAsync<bool>(
|
|
1580
|
-
"leveldown.flushWal", env, callback, [=](auto& state) { return database->db->FlushWAL(sync); },
|
|
1581
|
-
[=](auto& state, auto env, auto& argv) { return napi_ok; });
|
|
1582
|
-
|
|
1583
|
-
return 0;
|
|
1584
|
-
}
|
|
1585
|
-
|
|
1586
1652
|
NAPI_INIT() {
|
|
1587
1653
|
NAPI_EXPORT_FUNCTION(db_init);
|
|
1588
1654
|
NAPI_EXPORT_FUNCTION(db_open);
|
|
1589
1655
|
NAPI_EXPORT_FUNCTION(db_get_identity);
|
|
1656
|
+
NAPI_EXPORT_FUNCTION(db_get_handle);
|
|
1657
|
+
NAPI_EXPORT_FUNCTION(db_get_location);
|
|
1590
1658
|
NAPI_EXPORT_FUNCTION(db_close);
|
|
1591
1659
|
NAPI_EXPORT_FUNCTION(db_get_many);
|
|
1592
1660
|
NAPI_EXPORT_FUNCTION(db_clear);
|
|
1593
1661
|
NAPI_EXPORT_FUNCTION(db_get_property);
|
|
1594
1662
|
NAPI_EXPORT_FUNCTION(db_get_latest_sequence);
|
|
1595
|
-
NAPI_EXPORT_FUNCTION(db_flush_wal);
|
|
1596
1663
|
NAPI_EXPORT_FUNCTION(db_get_merge_operands);
|
|
1597
1664
|
|
|
1598
1665
|
NAPI_EXPORT_FUNCTION(iterator_init);
|
|
@@ -254,7 +254,7 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "loongarch64")
|
|
|
254
254
|
endif(CMAKE_SYSTEM_PROCESSOR MATCHES "loongarch64")
|
|
255
255
|
|
|
256
256
|
set(PORTABLE 0 CACHE STRING "Minimum CPU arch to support, or 0 = current CPU, 1 = baseline CPU")
|
|
257
|
-
if(PORTABLE
|
|
257
|
+
if(PORTABLE MATCHES "1|ON|YES|TRUE|Y")
|
|
258
258
|
# Usually nothing to do; compiler default is typically the most general
|
|
259
259
|
if(NOT MSVC)
|
|
260
260
|
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^s390x")
|
|
@@ -264,14 +264,7 @@ if(PORTABLE STREQUAL 1)
|
|
|
264
264
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=loongarch64")
|
|
265
265
|
endif()
|
|
266
266
|
endif()
|
|
267
|
-
elseif(PORTABLE MATCHES
|
|
268
|
-
# Name of a CPU arch spec or feature set to require
|
|
269
|
-
if(MSVC)
|
|
270
|
-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:${PORTABLE}")
|
|
271
|
-
else()
|
|
272
|
-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=${PORTABLE}")
|
|
273
|
-
endif()
|
|
274
|
-
else()
|
|
267
|
+
elseif(PORTABLE MATCHES "0|OFF|NO|FALSE|N")
|
|
275
268
|
if(MSVC)
|
|
276
269
|
# NOTE: No auto-detection of current CPU, but instead assume some useful
|
|
277
270
|
# level of optimization is supported
|
|
@@ -285,6 +278,13 @@ else()
|
|
|
285
278
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
|
|
286
279
|
endif()
|
|
287
280
|
endif()
|
|
281
|
+
else()
|
|
282
|
+
# Name of a CPU arch spec or feature set to require
|
|
283
|
+
if(MSVC)
|
|
284
|
+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:${PORTABLE}")
|
|
285
|
+
else()
|
|
286
|
+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=${PORTABLE}")
|
|
287
|
+
endif()
|
|
288
288
|
endif()
|
|
289
289
|
|
|
290
290
|
include(CheckCXXSourceCompiles)
|
|
@@ -632,6 +632,7 @@ set(SOURCES
|
|
|
632
632
|
cache/secondary_cache.cc
|
|
633
633
|
cache/secondary_cache_adapter.cc
|
|
634
634
|
cache/sharded_cache.cc
|
|
635
|
+
cache/tiered_secondary_cache.cc
|
|
635
636
|
db/arena_wrapped_db_iter.cc
|
|
636
637
|
db/blob/blob_contents.cc
|
|
637
638
|
db/blob/blob_fetcher.cc
|
|
@@ -714,6 +715,7 @@ set(SOURCES
|
|
|
714
715
|
db/wal_manager.cc
|
|
715
716
|
db/wide/wide_column_serialization.cc
|
|
716
717
|
db/wide/wide_columns.cc
|
|
718
|
+
db/wide/wide_columns_helper.cc
|
|
717
719
|
db/write_batch.cc
|
|
718
720
|
db/write_batch_base.cc
|
|
719
721
|
db/write_controller.cc
|
|
@@ -1262,6 +1264,7 @@ if(WITH_TESTS)
|
|
|
1262
1264
|
cache/cache_test.cc
|
|
1263
1265
|
cache/compressed_secondary_cache_test.cc
|
|
1264
1266
|
cache/lru_cache_test.cc
|
|
1267
|
+
cache/tiered_secondary_cache_test.cc
|
|
1265
1268
|
db/blob/blob_counting_iterator_test.cc
|
|
1266
1269
|
db/blob/blob_file_addition_test.cc
|
|
1267
1270
|
db/blob/blob_file_builder_test.cc
|
|
@@ -1357,6 +1360,7 @@ if(WITH_TESTS)
|
|
|
1357
1360
|
db/wal_edit_test.cc
|
|
1358
1361
|
db/wide/db_wide_basic_test.cc
|
|
1359
1362
|
db/wide/wide_column_serialization_test.cc
|
|
1363
|
+
db/wide/wide_columns_helper_test.cc
|
|
1360
1364
|
db/write_batch_test.cc
|
|
1361
1365
|
db/write_callback_test.cc
|
|
1362
1366
|
db/write_controller_test.cc
|
|
@@ -1885,6 +1885,9 @@ compressed_secondary_cache_test: $(OBJ_DIR)/cache/compressed_secondary_cache_tes
|
|
|
1885
1885
|
lru_cache_test: $(OBJ_DIR)/cache/lru_cache_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1886
1886
|
$(AM_LINK)
|
|
1887
1887
|
|
|
1888
|
+
tiered_secondary_cache_test: $(OBJ_DIR)/cache/tiered_secondary_cache_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1889
|
+
$(AM_LINK)
|
|
1890
|
+
|
|
1888
1891
|
range_del_aggregator_test: $(OBJ_DIR)/db/range_del_aggregator_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1889
1892
|
$(AM_LINK)
|
|
1890
1893
|
|
|
@@ -1984,6 +1987,9 @@ cache_reservation_manager_test: $(OBJ_DIR)/cache/cache_reservation_manager_test.
|
|
|
1984
1987
|
wide_column_serialization_test: $(OBJ_DIR)/db/wide/wide_column_serialization_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1985
1988
|
$(AM_LINK)
|
|
1986
1989
|
|
|
1990
|
+
wide_columns_helper_test: $(OBJ_DIR)/db/wide/wide_columns_helper_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1991
|
+
$(AM_LINK)
|
|
1992
|
+
|
|
1987
1993
|
#-------------------------------------------------
|
|
1988
1994
|
# make install related stuff
|
|
1989
1995
|
PREFIX ?= /usr/local
|
|
@@ -2088,8 +2094,8 @@ ROCKSDB_JAVADOCS_JAR = rocksdbjni-$(ROCKSDB_JAVA_VERSION)-javadoc.jar
|
|
|
2088
2094
|
ROCKSDB_SOURCES_JAR = rocksdbjni-$(ROCKSDB_JAVA_VERSION)-sources.jar
|
|
2089
2095
|
SHA256_CMD = sha256sum
|
|
2090
2096
|
|
|
2091
|
-
ZLIB_VER ?= 1.
|
|
2092
|
-
ZLIB_SHA256 ?=
|
|
2097
|
+
ZLIB_VER ?= 1.3
|
|
2098
|
+
ZLIB_SHA256 ?= ff0ba4c292013dbc27530b3a81e1f9a813cd39de01ca5e0f8bf355702efa593e
|
|
2093
2099
|
ZLIB_DOWNLOAD_BASE ?= http://zlib.net
|
|
2094
2100
|
BZIP2_VER ?= 1.0.8
|
|
2095
2101
|
BZIP2_SHA256 ?= ab5a03176ee106d3f0fa90e381da478ddae405918153cca248e682cd0c4a2269
|
|
@@ -2097,11 +2103,11 @@ BZIP2_DOWNLOAD_BASE ?= http://sourceware.org/pub/bzip2
|
|
|
2097
2103
|
SNAPPY_VER ?= 1.1.8
|
|
2098
2104
|
SNAPPY_SHA256 ?= 16b677f07832a612b0836178db7f374e414f94657c138e6993cbfc5dcc58651f
|
|
2099
2105
|
SNAPPY_DOWNLOAD_BASE ?= https://github.com/google/snappy/archive
|
|
2100
|
-
LZ4_VER ?= 1.9.
|
|
2101
|
-
LZ4_SHA256 ?=
|
|
2106
|
+
LZ4_VER ?= 1.9.4
|
|
2107
|
+
LZ4_SHA256 ?= 0b0e3aa07c8c063ddf40b082bdf7e37a1562bda40a0ff5272957f3e987e0e54b
|
|
2102
2108
|
LZ4_DOWNLOAD_BASE ?= https://github.com/lz4/lz4/archive
|
|
2103
|
-
ZSTD_VER ?= 1.
|
|
2104
|
-
ZSTD_SHA256 ?=
|
|
2109
|
+
ZSTD_VER ?= 1.5.5
|
|
2110
|
+
ZSTD_SHA256 ?= 98e9c3d949d1b924e28e01eccb7deed865eefebf25c2f21c702e5cd5b63b85e1
|
|
2105
2111
|
ZSTD_DOWNLOAD_BASE ?= https://github.com/facebook/zstd/archive
|
|
2106
2112
|
CURL_SSL_OPTS ?= --tlsv1
|
|
2107
2113
|
|
|
@@ -2413,6 +2419,9 @@ jtest_run:
|
|
|
2413
2419
|
jtest: rocksdbjava
|
|
2414
2420
|
cd java;$(MAKE) sample test
|
|
2415
2421
|
|
|
2422
|
+
jpmd: rocksdbjava rocksdbjavageneratepom
|
|
2423
|
+
cd java;$(MAKE) pmd
|
|
2424
|
+
|
|
2416
2425
|
jdb_bench:
|
|
2417
2426
|
cd java;$(MAKE) db_bench;
|
|
2418
2427
|
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
## RocksDB: A Persistent Key-Value Store for Flash and RAM Storage
|
|
2
|
+
|
|
3
|
+
[](https://circleci.com/gh/facebook/rocksdb)
|
|
4
|
+
|
|
5
|
+
RocksDB is developed and maintained by Facebook Database Engineering Team.
|
|
6
|
+
It is built on earlier work on [LevelDB](https://github.com/google/leveldb) by Sanjay Ghemawat (sanjay@google.com)
|
|
7
|
+
and Jeff Dean (jeff@google.com)
|
|
8
|
+
|
|
9
|
+
This code is a library that forms the core building block for a fast
|
|
10
|
+
key-value server, especially suited for storing data on flash drives.
|
|
11
|
+
It has a Log-Structured-Merge-Database (LSM) design with flexible tradeoffs
|
|
12
|
+
between Write-Amplification-Factor (WAF), Read-Amplification-Factor (RAF)
|
|
13
|
+
and Space-Amplification-Factor (SAF). It has multi-threaded compactions,
|
|
14
|
+
making it especially suitable for storing multiple terabytes of data in a
|
|
15
|
+
single database.
|
|
16
|
+
|
|
17
|
+
Start with example usage here: https://github.com/facebook/rocksdb/tree/main/examples
|
|
18
|
+
|
|
19
|
+
See the [github wiki](https://github.com/facebook/rocksdb/wiki) for more explanation.
|
|
20
|
+
|
|
21
|
+
The public interface is in `include/`. Callers should not include or
|
|
22
|
+
rely on the details of any other header files in this package. Those
|
|
23
|
+
internal APIs may be changed without warning.
|
|
24
|
+
|
|
25
|
+
Questions and discussions are welcome on the [RocksDB Developers Public](https://www.facebook.com/groups/rocksdb.dev/) Facebook group and [email list](https://groups.google.com/g/rocksdb) on Google Groups.
|
|
26
|
+
|
|
27
|
+
## License
|
|
28
|
+
|
|
29
|
+
RocksDB is dual-licensed under both the GPLv2 (found in the COPYING file in the root directory) and Apache 2.0 License (found in the LICENSE.Apache file in the root directory). You may select, at your option, one of the above-listed licenses.
|