simple_secondary_index.cc 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. // Copyright (c) Meta Platforms, Inc. and affiliates.
  2. // This source code is licensed under both the GPLv2 (found in the
  3. // COPYING file in the root directory) and Apache 2.0 License
  4. // (found in the LICENSE.Apache file in the root directory).
  5. #include <cassert>
  6. #include "rocksdb/utilities/secondary_index_simple.h"
  7. #include "util/coding.h"
  8. #include "utilities/secondary_index/secondary_index_helper.h"
  9. namespace ROCKSDB_NAMESPACE {
  10. SimpleSecondaryIndex::SimpleSecondaryIndex(std::string primary_column_name)
  11. : primary_column_name_(std::move(primary_column_name)) {}
  12. void SimpleSecondaryIndex::SetPrimaryColumnFamily(
  13. ColumnFamilyHandle* column_family) {
  14. assert(column_family);
  15. primary_column_family_ = column_family;
  16. }
  17. void SimpleSecondaryIndex::SetSecondaryColumnFamily(
  18. ColumnFamilyHandle* column_family) {
  19. assert(column_family);
  20. secondary_column_family_ = column_family;
  21. }
  22. ColumnFamilyHandle* SimpleSecondaryIndex::GetPrimaryColumnFamily() const {
  23. return primary_column_family_;
  24. }
  25. ColumnFamilyHandle* SimpleSecondaryIndex::GetSecondaryColumnFamily() const {
  26. return secondary_column_family_;
  27. }
  28. Slice SimpleSecondaryIndex::GetPrimaryColumnName() const {
  29. return primary_column_name_;
  30. }
  31. Status SimpleSecondaryIndex::UpdatePrimaryColumnValue(
  32. const Slice& /* primary_key */, const Slice& /* primary_column_value */,
  33. std::optional<std::variant<Slice, std::string>>* /* updated_column_value */)
  34. const {
  35. return Status::OK();
  36. }
  37. Status SimpleSecondaryIndex::GetSecondaryKeyPrefix(
  38. const Slice& /* primary_key */, const Slice& primary_column_value,
  39. std::variant<Slice, std::string>* secondary_key_prefix) const {
  40. assert(secondary_key_prefix);
  41. *secondary_key_prefix = primary_column_value;
  42. return Status::OK();
  43. }
  44. Status SimpleSecondaryIndex::FinalizeSecondaryKeyPrefix(
  45. std::variant<Slice, std::string>* secondary_key_prefix) const {
  46. assert(secondary_key_prefix);
  47. std::string prefix;
  48. PutLengthPrefixedSlice(&prefix,
  49. SecondaryIndexHelper::AsSlice(*secondary_key_prefix));
  50. *secondary_key_prefix = std::move(prefix);
  51. return Status::OK();
  52. }
  53. Status SimpleSecondaryIndex::GetSecondaryValue(
  54. const Slice& /* primary_key */, const Slice& /* primary_column_value */,
  55. const Slice& /* original_column_value */,
  56. std::optional<std::variant<Slice, std::string>>* /* secondary_value */)
  57. const {
  58. return Status::OK();
  59. }
  60. } // namespace ROCKSDB_NAMESPACE