YugabyteDB (2.13.1.0-b60, 21121d69985fbf76aa6958d8f04a9bfa936293b5)

Coverage Report

Created: 2022-03-22 16:43

/Users/deen/code/yugabyte-db/src/yb/common/key_encoder.cc
Line
Count
Source
1
// Licensed to the Apache Software Foundation (ASF) under one
2
// or more contributor license agreements.  See the NOTICE file
3
// distributed with this work for additional information
4
// regarding copyright ownership.  The ASF licenses this file
5
// to you under the Apache License, Version 2.0 (the
6
// "License"); you may not use this file except in compliance
7
// with the License.  You may obtain a copy of the License at
8
//
9
//   http://www.apache.org/licenses/LICENSE-2.0
10
//
11
// Unless required by applicable law or agreed to in writing,
12
// software distributed under the License is distributed on an
13
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
// KIND, either express or implied.  See the License for the
15
// specific language governing permissions and limitations
16
// under the License.
17
//
18
// The following only applies to changes made to this file as part of YugaByte development.
19
//
20
// Portions Copyright (c) YugaByte, Inc.
21
//
22
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
23
// in compliance with the License.  You may obtain a copy of the License at
24
//
25
// http://www.apache.org/licenses/LICENSE-2.0
26
//
27
// Unless required by applicable law or agreed to in writing, software distributed under the License
28
// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
29
// or implied.  See the License for the specific language governing permissions and limitations
30
// under the License.
31
//
32
33
#include <functional>
34
#include <string>
35
#include <vector>
36
37
38
#include "yb/common/common.pb.h"
39
#include "yb/common/key_encoder.h"
40
#include "yb/gutil/map-util.h"
41
#include "yb/gutil/singleton.h"
42
#include "yb/util/faststring.h"
43
44
using std::shared_ptr;
45
using std::unordered_map;
46
47
namespace yb {
48
49
50
// A resolver for Encoders
51
template <typename Buffer>
52
class EncoderResolver {
53
 public:
54
8.49k
  const KeyEncoder<Buffer>& GetKeyEncoder(DataType t) {
55
8.49k
    return *FindOrDie(encoders_, t);
56
8.49k
  }
yb::EncoderResolver<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::GetKeyEncoder(yb::DataType)
Line
Count
Source
54
8.49k
  const KeyEncoder<Buffer>& GetKeyEncoder(DataType t) {
55
8.49k
    return *FindOrDie(encoders_, t);
56
8.49k
  }
Unexecuted instantiation: yb::EncoderResolver<yb::faststring>::GetKeyEncoder(yb::DataType)
57
58
39.5k
  const bool HasKeyEncoderForType(DataType t) {
59
39.5k
    return ContainsKey(encoders_, t);
60
39.5k
  }
61
62
 private:
63
10.3k
  EncoderResolver<Buffer>() {
64
10.3k
    AddMapping<BOOL>();
65
10.3k
    AddMapping<UINT8>();
66
10.3k
    AddMapping<INT8>();
67
10.3k
    AddMapping<UINT16>();
68
10.3k
    AddMapping<INT16>();
69
10.3k
    AddMapping<UINT32>();
70
10.3k
    AddMapping<INT32>();
71
10.3k
    AddMapping<UINT64>();
72
10.3k
    AddMapping<INT64>();
73
10.3k
    AddMapping<BINARY>();
74
10.3k
    AddMapping<FLOAT>();
75
10.3k
    AddMapping<DOUBLE>();
76
10.3k
  }
yb::EncoderResolver<yb::faststring>::EncoderResolver()
Line
Count
Source
63
2.30k
  EncoderResolver<Buffer>() {
64
2.30k
    AddMapping<BOOL>();
65
2.30k
    AddMapping<UINT8>();
66
2.30k
    AddMapping<INT8>();
67
2.30k
    AddMapping<UINT16>();
68
2.30k
    AddMapping<INT16>();
69
2.30k
    AddMapping<UINT32>();
70
2.30k
    AddMapping<INT32>();
71
2.30k
    AddMapping<UINT64>();
72
2.30k
    AddMapping<INT64>();
73
2.30k
    AddMapping<BINARY>();
74
2.30k
    AddMapping<FLOAT>();
75
2.30k
    AddMapping<DOUBLE>();
76
2.30k
  }
yb::EncoderResolver<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::EncoderResolver()
Line
Count
Source
63
8.01k
  EncoderResolver<Buffer>() {
64
8.01k
    AddMapping<BOOL>();
65
8.01k
    AddMapping<UINT8>();
66
8.01k
    AddMapping<INT8>();
67
8.01k
    AddMapping<UINT16>();
68
8.01k
    AddMapping<INT16>();
69
8.01k
    AddMapping<UINT32>();
70
8.01k
    AddMapping<INT32>();
71
8.01k
    AddMapping<UINT64>();
72
8.01k
    AddMapping<INT64>();
73
8.01k
    AddMapping<BINARY>();
74
8.01k
    AddMapping<FLOAT>();
75
8.01k
    AddMapping<DOUBLE>();
76
8.01k
  }
77
78
123k
  template<DataType Type> void AddMapping() {
79
123k
    KeyEncoderTraits<Type, Buffer> traits;
80
123k
    encoders_.emplace(Type, std::make_shared<KeyEncoder<Buffer>>(traits));
81
123k
  }
void yb::EncoderResolver<yb::faststring>::AddMapping<(yb::DataType)6>()
Line
Count
Source
78
2.30k
  template<DataType Type> void AddMapping() {
79
2.30k
    KeyEncoderTraits<Type, Buffer> traits;
80
2.30k
    encoders_.emplace(Type, std::make_shared<KeyEncoder<Buffer>>(traits));
81
2.30k
  }
void yb::EncoderResolver<yb::faststring>::AddMapping<(yb::DataType)100>()
Line
Count
Source
78
2.30k
  template<DataType Type> void AddMapping() {
79
2.30k
    KeyEncoderTraits<Type, Buffer> traits;
80
2.30k
    encoders_.emplace(Type, std::make_shared<KeyEncoder<Buffer>>(traits));
81
2.30k
  }
void yb::EncoderResolver<yb::faststring>::AddMapping<(yb::DataType)1>()
Line
Count
Source
78
2.30k
  template<DataType Type> void AddMapping() {
79
2.30k
    KeyEncoderTraits<Type, Buffer> traits;
80
2.30k
    encoders_.emplace(Type, std::make_shared<KeyEncoder<Buffer>>(traits));
81
2.30k
  }
void yb::EncoderResolver<yb::faststring>::AddMapping<(yb::DataType)101>()
Line
Count
Source
78
2.30k
  template<DataType Type> void AddMapping() {
79
2.30k
    KeyEncoderTraits<Type, Buffer> traits;
80
2.30k
    encoders_.emplace(Type, std::make_shared<KeyEncoder<Buffer>>(traits));
81
2.30k
  }
void yb::EncoderResolver<yb::faststring>::AddMapping<(yb::DataType)2>()
Line
Count
Source
78
2.30k
  template<DataType Type> void AddMapping() {
79
2.30k
    KeyEncoderTraits<Type, Buffer> traits;
80
2.30k
    encoders_.emplace(Type, std::make_shared<KeyEncoder<Buffer>>(traits));
81
2.30k
  }
void yb::EncoderResolver<yb::faststring>::AddMapping<(yb::DataType)102>()
Line
Count
Source
78
2.30k
  template<DataType Type> void AddMapping() {
79
2.30k
    KeyEncoderTraits<Type, Buffer> traits;
80
2.30k
    encoders_.emplace(Type, std::make_shared<KeyEncoder<Buffer>>(traits));
81
2.30k
  }
void yb::EncoderResolver<yb::faststring>::AddMapping<(yb::DataType)3>()
Line
Count
Source
78
2.30k
  template<DataType Type> void AddMapping() {
79
2.30k
    KeyEncoderTraits<Type, Buffer> traits;
80
2.30k
    encoders_.emplace(Type, std::make_shared<KeyEncoder<Buffer>>(traits));
81
2.30k
  }
void yb::EncoderResolver<yb::faststring>::AddMapping<(yb::DataType)103>()
Line
Count
Source
78
2.30k
  template<DataType Type> void AddMapping() {
79
2.30k
    KeyEncoderTraits<Type, Buffer> traits;
80
2.30k
    encoders_.emplace(Type, std::make_shared<KeyEncoder<Buffer>>(traits));
81
2.30k
  }
void yb::EncoderResolver<yb::faststring>::AddMapping<(yb::DataType)4>()
Line
Count
Source
78
2.30k
  template<DataType Type> void AddMapping() {
79
2.30k
    KeyEncoderTraits<Type, Buffer> traits;
80
2.30k
    encoders_.emplace(Type, std::make_shared<KeyEncoder<Buffer>>(traits));
81
2.30k
  }
void yb::EncoderResolver<yb::faststring>::AddMapping<(yb::DataType)9>()
Line
Count
Source
78
2.30k
  template<DataType Type> void AddMapping() {
79
2.30k
    KeyEncoderTraits<Type, Buffer> traits;
80
2.30k
    encoders_.emplace(Type, std::make_shared<KeyEncoder<Buffer>>(traits));
81
2.30k
  }
void yb::EncoderResolver<yb::faststring>::AddMapping<(yb::DataType)7>()
Line
Count
Source
78
2.30k
  template<DataType Type> void AddMapping() {
79
2.30k
    KeyEncoderTraits<Type, Buffer> traits;
80
2.30k
    encoders_.emplace(Type, std::make_shared<KeyEncoder<Buffer>>(traits));
81
2.30k
  }
void yb::EncoderResolver<yb::faststring>::AddMapping<(yb::DataType)8>()
Line
Count
Source
78
2.30k
  template<DataType Type> void AddMapping() {
79
2.30k
    KeyEncoderTraits<Type, Buffer> traits;
80
2.30k
    encoders_.emplace(Type, std::make_shared<KeyEncoder<Buffer>>(traits));
81
2.30k
  }
void yb::EncoderResolver<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::AddMapping<(yb::DataType)6>()
Line
Count
Source
78
8.01k
  template<DataType Type> void AddMapping() {
79
8.01k
    KeyEncoderTraits<Type, Buffer> traits;
80
8.01k
    encoders_.emplace(Type, std::make_shared<KeyEncoder<Buffer>>(traits));
81
8.01k
  }
void yb::EncoderResolver<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::AddMapping<(yb::DataType)100>()
Line
Count
Source
78
8.01k
  template<DataType Type> void AddMapping() {
79
8.01k
    KeyEncoderTraits<Type, Buffer> traits;
80
8.01k
    encoders_.emplace(Type, std::make_shared<KeyEncoder<Buffer>>(traits));
81
8.01k
  }
void yb::EncoderResolver<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::AddMapping<(yb::DataType)1>()
Line
Count
Source
78
8.01k
  template<DataType Type> void AddMapping() {
79
8.01k
    KeyEncoderTraits<Type, Buffer> traits;
80
8.01k
    encoders_.emplace(Type, std::make_shared<KeyEncoder<Buffer>>(traits));
81
8.01k
  }
void yb::EncoderResolver<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::AddMapping<(yb::DataType)101>()
Line
Count
Source
78
8.01k
  template<DataType Type> void AddMapping() {
79
8.01k
    KeyEncoderTraits<Type, Buffer> traits;
80
8.01k
    encoders_.emplace(Type, std::make_shared<KeyEncoder<Buffer>>(traits));
81
8.01k
  }
void yb::EncoderResolver<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::AddMapping<(yb::DataType)2>()
Line
Count
Source
78
8.01k
  template<DataType Type> void AddMapping() {
79
8.01k
    KeyEncoderTraits<Type, Buffer> traits;
80
8.01k
    encoders_.emplace(Type, std::make_shared<KeyEncoder<Buffer>>(traits));
81
8.01k
  }
void yb::EncoderResolver<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::AddMapping<(yb::DataType)102>()
Line
Count
Source
78
8.01k
  template<DataType Type> void AddMapping() {
79
8.01k
    KeyEncoderTraits<Type, Buffer> traits;
80
8.01k
    encoders_.emplace(Type, std::make_shared<KeyEncoder<Buffer>>(traits));
81
8.01k
  }
void yb::EncoderResolver<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::AddMapping<(yb::DataType)3>()
Line
Count
Source
78
8.01k
  template<DataType Type> void AddMapping() {
79
8.01k
    KeyEncoderTraits<Type, Buffer> traits;
80
8.01k
    encoders_.emplace(Type, std::make_shared<KeyEncoder<Buffer>>(traits));
81
8.01k
  }
void yb::EncoderResolver<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::AddMapping<(yb::DataType)103>()
Line
Count
Source
78
8.01k
  template<DataType Type> void AddMapping() {
79
8.01k
    KeyEncoderTraits<Type, Buffer> traits;
80
8.01k
    encoders_.emplace(Type, std::make_shared<KeyEncoder<Buffer>>(traits));
81
8.01k
  }
void yb::EncoderResolver<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::AddMapping<(yb::DataType)4>()
Line
Count
Source
78
8.01k
  template<DataType Type> void AddMapping() {
79
8.01k
    KeyEncoderTraits<Type, Buffer> traits;
80
8.01k
    encoders_.emplace(Type, std::make_shared<KeyEncoder<Buffer>>(traits));
81
8.01k
  }
void yb::EncoderResolver<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::AddMapping<(yb::DataType)9>()
Line
Count
Source
78
8.01k
  template<DataType Type> void AddMapping() {
79
8.01k
    KeyEncoderTraits<Type, Buffer> traits;
80
8.01k
    encoders_.emplace(Type, std::make_shared<KeyEncoder<Buffer>>(traits));
81
8.01k
  }
void yb::EncoderResolver<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::AddMapping<(yb::DataType)7>()
Line
Count
Source
78
8.01k
  template<DataType Type> void AddMapping() {
79
8.01k
    KeyEncoderTraits<Type, Buffer> traits;
80
8.01k
    encoders_.emplace(Type, std::make_shared<KeyEncoder<Buffer>>(traits));
81
8.01k
  }
void yb::EncoderResolver<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::AddMapping<(yb::DataType)8>()
Line
Count
Source
78
8.01k
  template<DataType Type> void AddMapping() {
79
8.01k
    KeyEncoderTraits<Type, Buffer> traits;
80
8.01k
    encoders_.emplace(Type, std::make_shared<KeyEncoder<Buffer>>(traits));
81
8.01k
  }
82
83
  friend class Singleton<EncoderResolver<Buffer> >;
84
  unordered_map<DataType, shared_ptr<KeyEncoder<Buffer> >, std::hash<size_t> > encoders_;
85
};
86
87
template <typename Buffer>
88
8.49k
const KeyEncoder<Buffer>& GetKeyEncoder(const TypeInfo* typeinfo) {
89
8.49k
  return Singleton<EncoderResolver<Buffer> >::get()->GetKeyEncoder(typeinfo->physical_type);
90
8.49k
}
yb::KeyEncoder<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > const& yb::GetKeyEncoder<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(yb::TypeInfo const*)
Line
Count
Source
88
8.49k
const KeyEncoder<Buffer>& GetKeyEncoder(const TypeInfo* typeinfo) {
89
8.49k
  return Singleton<EncoderResolver<Buffer> >::get()->GetKeyEncoder(typeinfo->physical_type);
90
8.49k
}
Unexecuted instantiation: yb::KeyEncoder<yb::faststring> const& yb::GetKeyEncoder<yb::faststring>(yb::TypeInfo const*)
91
92
// Returns true if the type is allowed in keys.
93
39.5k
bool IsTypeAllowableInKey(const TypeInfo* typeinfo) {
94
39.5k
  return Singleton<EncoderResolver<faststring> >::get()->HasKeyEncoderForType(
95
39.5k
      typeinfo->physical_type);
96
39.5k
}
97
98
//------------------------------------------------------------
99
//// Template instantiations: We instantiate all possible templates to avoid linker issues.
100
//// see: https://isocpp.org/wiki/faq/templates#separate-template-fn-defn-from-decl
101
////------------------------------------------------------------
102
103
template
104
const KeyEncoder<string>& GetKeyEncoder(const TypeInfo* typeinfo);
105
106
template
107
const KeyEncoder<faststring>& GetKeyEncoder(const TypeInfo* typeinfo);
108
109
}  // namespace yb