diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-21 11:54:28 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-21 11:54:28 +0000 |
commit | e6918187568dbd01842d8d1d2c808ce16a894239 (patch) | |
tree | 64f88b554b444a49f656b6c656111a145cbbaa28 /src/rocksdb/options/options_helper.h | |
parent | Initial commit. (diff) | |
download | ceph-upstream/18.2.2.tar.xz ceph-upstream/18.2.2.zip |
Adding upstream version 18.2.2.upstream/18.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/rocksdb/options/options_helper.h')
-rw-r--r-- | src/rocksdb/options/options_helper.h | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/src/rocksdb/options/options_helper.h b/src/rocksdb/options/options_helper.h new file mode 100644 index 000000000..7c751fc25 --- /dev/null +++ b/src/rocksdb/options/options_helper.h @@ -0,0 +1,122 @@ +// 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). + +#pragma once + +#include <map> +#include <stdexcept> +#include <string> +#include <vector> + +#include "rocksdb/advanced_options.h" +#include "rocksdb/options.h" +#include "rocksdb/status.h" +#include "rocksdb/table.h" + +namespace ROCKSDB_NAMESPACE { +struct ColumnFamilyOptions; +struct ConfigOptions; +struct DBOptions; +struct ImmutableCFOptions; +struct ImmutableDBOptions; +struct MutableDBOptions; +struct MutableCFOptions; +struct Options; + +std::vector<CompressionType> GetSupportedCompressions(); + +std::vector<CompressionType> GetSupportedDictCompressions(); + +std::vector<ChecksumType> GetSupportedChecksums(); + +inline bool IsSupportedChecksumType(ChecksumType type) { + // Avoid annoying compiler warning-as-error (-Werror=type-limits) + auto min = kNoChecksum; + auto max = kXXH3; + return type >= min && type <= max; +} + +// Checks that the combination of DBOptions and ColumnFamilyOptions are valid +Status ValidateOptions(const DBOptions& db_opts, + const ColumnFamilyOptions& cf_opts); + +DBOptions BuildDBOptions(const ImmutableDBOptions& immutable_db_options, + const MutableDBOptions& mutable_db_options); + +ColumnFamilyOptions BuildColumnFamilyOptions( + const ColumnFamilyOptions& ioptions, + const MutableCFOptions& mutable_cf_options); + +void UpdateColumnFamilyOptions(const ImmutableCFOptions& ioptions, + ColumnFamilyOptions* cf_opts); +void UpdateColumnFamilyOptions(const MutableCFOptions& moptions, + ColumnFamilyOptions* cf_opts); + +#ifndef ROCKSDB_LITE +std::unique_ptr<Configurable> DBOptionsAsConfigurable( + const MutableDBOptions& opts); +std::unique_ptr<Configurable> DBOptionsAsConfigurable( + const DBOptions& opts, + const std::unordered_map<std::string, std::string>* opt_map = nullptr); +std::unique_ptr<Configurable> CFOptionsAsConfigurable( + const MutableCFOptions& opts); +std::unique_ptr<Configurable> CFOptionsAsConfigurable( + const ColumnFamilyOptions& opts, + const std::unordered_map<std::string, std::string>* opt_map = nullptr); + +extern Status StringToMap( + const std::string& opts_str, + std::unordered_map<std::string, std::string>* opts_map); +#endif // !ROCKSDB_LITE + +struct OptionsHelper { + static const std::string kCFOptionsName /*= "ColumnFamilyOptions"*/; + static const std::string kDBOptionsName /*= "DBOptions" */; + static std::map<CompactionStyle, std::string> compaction_style_to_string; + static std::map<CompactionPri, std::string> compaction_pri_to_string; + static std::map<CompactionStopStyle, std::string> + compaction_stop_style_to_string; + static std::map<Temperature, std::string> temperature_to_string; + static std::unordered_map<std::string, ChecksumType> checksum_type_string_map; + static std::unordered_map<std::string, CompressionType> + compression_type_string_map; + static std::unordered_map<std::string, PrepopulateBlobCache> + prepopulate_blob_cache_string_map; +#ifndef ROCKSDB_LITE + static std::unordered_map<std::string, CompactionStopStyle> + compaction_stop_style_string_map; + static std::unordered_map<std::string, EncodingType> encoding_type_string_map; + static std::unordered_map<std::string, CompactionStyle> + compaction_style_string_map; + static std::unordered_map<std::string, CompactionPri> + compaction_pri_string_map; + static std::unordered_map<std::string, Temperature> temperature_string_map; +#endif // !ROCKSDB_LITE +}; + +// Some aliasing +static auto& compaction_style_to_string = + OptionsHelper::compaction_style_to_string; +static auto& compaction_pri_to_string = OptionsHelper::compaction_pri_to_string; +static auto& compaction_stop_style_to_string = + OptionsHelper::compaction_stop_style_to_string; +static auto& temperature_to_string = OptionsHelper::temperature_to_string; +static auto& checksum_type_string_map = OptionsHelper::checksum_type_string_map; +#ifndef ROCKSDB_LITE +static auto& compaction_stop_style_string_map = + OptionsHelper::compaction_stop_style_string_map; +static auto& compression_type_string_map = + OptionsHelper::compression_type_string_map; +static auto& encoding_type_string_map = OptionsHelper::encoding_type_string_map; +static auto& compaction_style_string_map = + OptionsHelper::compaction_style_string_map; +static auto& compaction_pri_string_map = + OptionsHelper::compaction_pri_string_map; +static auto& temperature_string_map = OptionsHelper::temperature_string_map; +static auto& prepopulate_blob_cache_string_map = + OptionsHelper::prepopulate_blob_cache_string_map; +#endif // !ROCKSDB_LITE + +} // namespace ROCKSDB_NAMESPACE |