// Copyright (c) 2011-present, Facebook, Inc. All rights reserved. // This source code is 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). // This file contains utility functions for RocksDB Options. #pragma once #ifndef ROCKSDB_LITE #include #include #include "rocksdb/db.h" #include "rocksdb/env.h" #include "rocksdb/options.h" #include "rocksdb/status.h" namespace rocksdb { // Constructs the DBOptions and ColumnFamilyDescriptors by loading the // latest RocksDB options file stored in the specified rocksdb database. // // Note that the all the pointer options (except table_factory, which will // be described in more details below) will be initialized with the default // values. Developers can further initialize them after this function call. // Below is an example list of pointer options which will be initialized // // * env // * memtable_factory // * compaction_filter_factory // * prefix_extractor // * comparator // * merge_operator // * compaction_filter // // For table_factory, this function further supports deserializing // BlockBasedTableFactory and its BlockBasedTableOptions except the // pointer options of BlockBasedTableOptions (flush_block_policy_factory, // block_cache, and block_cache_compressed), which will be initialized with // default values. Developers can further specify these three options by // casting the return value of TableFactoroy::GetOptions() to // BlockBasedTableOptions and making necessary changes. // // ignore_unknown_options can be set to true if you want to ignore options // that are from a newer version of the db, esentially for forward // compatibility. // // examples/options_file_example.cc demonstrates how to use this function // to open a RocksDB instance. // // @return the function returns an OK status when it went successfully. If // the specified "dbpath" does not contain any option file, then a // Status::NotFound will be returned. A return value other than // Status::OK or Status::NotFound indicates there're some error related // to the options file itself. // // @see LoadOptionsFromFile Status LoadLatestOptions(const std::string& dbpath, Env* env, DBOptions* db_options, std::vector* cf_descs, bool ignore_unknown_options = false); // Similar to LoadLatestOptions, this function constructs the DBOptions // and ColumnFamilyDescriptors based on the specified RocksDB Options file. // // @see LoadLatestOptions Status LoadOptionsFromFile(const std::string& options_file_name, Env* env, DBOptions* db_options, std::vector* cf_descs, bool ignore_unknown_options = false); // Returns the latest options file name under the specified db path. Status GetLatestOptionsFileName(const std::string& dbpath, Env* env, std::string* options_file_name); // Returns Status::OK if the input DBOptions and ColumnFamilyDescriptors // are compatible with the latest options stored in the specified DB path. // // If the return status is non-ok, it means the specified RocksDB instance // might not be correctly opened with the input set of options. Currently, // changing one of the following options will fail the compatibility check: // // * comparator // * prefix_extractor // * table_factory // * merge_operator Status CheckOptionsCompatibility( const std::string& dbpath, Env* env, const DBOptions& db_options, const std::vector& cf_descs, bool ignore_unknown_options = false); } // namespace rocksdb #endif // !ROCKSDB_LITE