// 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). // #ifndef MERGE_OPERATORS_H #define MERGE_OPERATORS_H #include #include #include "rocksdb/merge_operator.h" namespace rocksdb { class MergeOperators { public: static std::shared_ptr CreatePutOperator(); static std::shared_ptr CreateDeprecatedPutOperator(); static std::shared_ptr CreateUInt64AddOperator(); static std::shared_ptr CreateStringAppendOperator(); static std::shared_ptr CreateStringAppendTESTOperator(); static std::shared_ptr CreateMaxOperator(); static std::shared_ptr CreateCassandraMergeOperator(); // Will return a different merge operator depending on the string. // TODO: Hook the "name" up to the actual Name() of the MergeOperators? static std::shared_ptr CreateFromStringId( const std::string& name) { if (name == "put") { return CreatePutOperator(); } else if (name == "put_v1") { return CreateDeprecatedPutOperator(); } else if ( name == "uint64add") { return CreateUInt64AddOperator(); } else if (name == "stringappend") { return CreateStringAppendOperator(); } else if (name == "stringappendtest") { return CreateStringAppendTESTOperator(); } else if (name == "max") { return CreateMaxOperator(); } else if (name == "cassandra") { return CreateCassandraMergeOperator(); } else { // Empty or unknown, just return nullptr return nullptr; } } }; } // namespace rocksdb #endif