Coverage Report

Created: 2025-10-26 07:13

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/rocksdb/db/wide/wide_columns_helper.h
Line
Count
Source
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
6
#pragma once
7
8
#include <algorithm>
9
#include <cassert>
10
#include <ostream>
11
12
#include "rocksdb/rocksdb_namespace.h"
13
#include "rocksdb/wide_columns.h"
14
15
namespace ROCKSDB_NAMESPACE {
16
17
class WideColumnsHelper {
18
 public:
19
  static void DumpWideColumns(const WideColumns& columns, std::ostream& os,
20
                              bool hex);
21
22
  static Status DumpSliceAsWideColumns(const Slice& value, std::ostream& os,
23
                                       bool hex);
24
25
0
  static bool HasDefaultColumn(const WideColumns& columns) {
26
0
    return !columns.empty() && columns.front().name() == kDefaultWideColumnName;
27
0
  }
28
29
0
  static bool HasDefaultColumnOnly(const WideColumns& columns) {
30
0
    return columns.size() == 1 &&
31
0
           columns.front().name() == kDefaultWideColumnName;
32
0
  }
33
34
0
  static const Slice& GetDefaultColumn(const WideColumns& columns) {
35
0
    assert(HasDefaultColumn(columns));
36
0
    return columns.front().value();
37
0
  }
38
39
0
  static void SortColumns(WideColumns& columns) {
40
0
    std::sort(columns.begin(), columns.end(),
41
0
              [](const WideColumn& lhs, const WideColumn& rhs) {
42
0
                return lhs.name().compare(rhs.name()) < 0;
43
0
              });
44
0
  }
45
46
  template <typename Iterator>
47
0
  static Iterator Find(Iterator begin, Iterator end, const Slice& column_name) {
48
0
    assert(std::is_sorted(begin, end,
49
0
                          [](const WideColumn& lhs, const WideColumn& rhs) {
50
0
                            return lhs.name().compare(rhs.name()) < 0;
51
0
                          }));
52
53
0
    auto it = std::lower_bound(begin, end, column_name,
54
0
                               [](const WideColumn& lhs, const Slice& rhs) {
55
0
                                 return lhs.name().compare(rhs) < 0;
56
0
                               });
Unexecuted instantiation: rocksdb::WideColumnsHelper::Find<std::__1::__wrap_iter<rocksdb::WideColumn const*> >(std::__1::__wrap_iter<rocksdb::WideColumn const*>, std::__1::__wrap_iter<rocksdb::WideColumn const*>, rocksdb::Slice const&)::{lambda(rocksdb::WideColumn const&, rocksdb::Slice const&)#1}::operator()(rocksdb::WideColumn const&, rocksdb::Slice const&) const
Unexecuted instantiation: rocksdb::WideColumnsHelper::Find<std::__1::__wrap_iter<rocksdb::WideColumn*> >(std::__1::__wrap_iter<rocksdb::WideColumn*>, std::__1::__wrap_iter<rocksdb::WideColumn*>, rocksdb::Slice const&)::{lambda(rocksdb::WideColumn const&, rocksdb::Slice const&)#1}::operator()(rocksdb::WideColumn const&, rocksdb::Slice const&) const
57
58
0
    if (it == end || it->name() != column_name) {
59
0
      return end;
60
0
    }
61
62
0
    return it;
63
0
  }
Unexecuted instantiation: std::__1::__wrap_iter<rocksdb::WideColumn const*> rocksdb::WideColumnsHelper::Find<std::__1::__wrap_iter<rocksdb::WideColumn const*> >(std::__1::__wrap_iter<rocksdb::WideColumn const*>, std::__1::__wrap_iter<rocksdb::WideColumn const*>, rocksdb::Slice const&)
Unexecuted instantiation: std::__1::__wrap_iter<rocksdb::WideColumn*> rocksdb::WideColumnsHelper::Find<std::__1::__wrap_iter<rocksdb::WideColumn*> >(std::__1::__wrap_iter<rocksdb::WideColumn*>, std::__1::__wrap_iter<rocksdb::WideColumn*>, rocksdb::Slice const&)
64
};
65
66
}  // namespace ROCKSDB_NAMESPACE