Coverage Report

Created: 2024-09-08 07:17

/src/rocksdb/util/write_batch_util.h
Line
Count
Source (jump to first uncovered line)
1
//  Copyright (c) Meta Platforms, Inc. and affiliates.
2
//
3
//  This source code is licensed under both the GPLv2 (found in the
4
//  COPYING file in the root directory) and Apache 2.0 License
5
//  (found in the LICENSE.Apache file in the root directory).
6
7
#pragma once
8
#include <unordered_set>
9
#include <vector>
10
11
#include "rocksdb/slice.h"
12
#include "rocksdb/status.h"
13
#include "rocksdb/write_batch.h"
14
15
namespace ROCKSDB_NAMESPACE {
16
// ColumnFamilyCollector is a write batch handler which does nothing
17
// except recording unique column family IDs
18
class ColumnFamilyCollector : public WriteBatch::Handler {
19
  std::unordered_set<uint32_t> column_family_ids_;
20
21
0
  Status AddColumnFamilyId(uint32_t column_family_id) {
22
0
    column_family_ids_.insert(column_family_id);
23
0
    return Status::OK();
24
0
  }
25
26
 public:
27
0
  explicit ColumnFamilyCollector() {}
28
29
0
  ~ColumnFamilyCollector() override {}
30
31
0
  Status PutCF(uint32_t column_family_id, const Slice&, const Slice&) override {
32
0
    return AddColumnFamilyId(column_family_id);
33
0
  }
34
35
  Status PutEntityCF(uint32_t column_family_id, const Slice&,
36
0
                     const Slice&) override {
37
0
    return AddColumnFamilyId(column_family_id);
38
0
  }
39
40
  Status TimedPutCF(uint32_t column_family_id, const Slice&, const Slice&,
41
0
                    uint64_t) override {
42
0
    return AddColumnFamilyId(column_family_id);
43
0
  }
44
45
0
  Status DeleteCF(uint32_t column_family_id, const Slice&) override {
46
0
    return AddColumnFamilyId(column_family_id);
47
0
  }
48
49
0
  Status SingleDeleteCF(uint32_t column_family_id, const Slice&) override {
50
0
    return AddColumnFamilyId(column_family_id);
51
0
  }
52
53
  Status DeleteRangeCF(uint32_t column_family_id, const Slice&,
54
0
                       const Slice&) override {
55
0
    return AddColumnFamilyId(column_family_id);
56
0
  }
57
58
  Status MergeCF(uint32_t column_family_id, const Slice&,
59
0
                 const Slice&) override {
60
0
    return AddColumnFamilyId(column_family_id);
61
0
  }
62
63
  Status PutBlobIndexCF(uint32_t column_family_id, const Slice&,
64
0
                        const Slice&) override {
65
0
    return AddColumnFamilyId(column_family_id);
66
0
  }
67
68
0
  Status MarkBeginPrepare(bool) override { return Status::OK(); }
69
70
0
  Status MarkEndPrepare(const Slice&) override { return Status::OK(); }
71
72
0
  Status MarkRollback(const Slice&) override { return Status::OK(); }
73
74
0
  Status MarkCommit(const Slice&) override { return Status::OK(); }
75
76
0
  Status MarkCommitWithTimestamp(const Slice&, const Slice&) override {
77
0
    return Status::OK();
78
0
  }
79
80
0
  Status MarkNoop(bool) override { return Status::OK(); }
81
82
0
  const std::unordered_set<uint32_t>& column_families() const {
83
0
    return column_family_ids_;
84
0
  }
85
};
86
87
Status CollectColumnFamilyIdsFromWriteBatch(
88
    const WriteBatch& batch, std::vector<uint32_t>* column_family_ids);
89
90
}  // namespace ROCKSDB_NAMESPACE