YugabyteDB (2.13.0.0-b42, bfc6a6643e7399ac8a0e81d06a3ee6d6571b33ab)

Coverage Report

Created: 2022-03-09 17:30

/Users/deen/code/yugabyte-db/src/yb/common/types.cc
Line
Count
Source (jump to first uncovered line)
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 "yb/common/types.h"
34
35
#include <memory>
36
37
#include "yb/gutil/singleton.h"
38
39
#include "yb/util/net/inetaddress.h"
40
#include "yb/util/status.h"
41
#include "yb/util/uuid.h"
42
43
using std::shared_ptr;
44
using std::unordered_map;
45
46
namespace yb {
47
48
template<typename TypeTraitsClass>
49
TypeInfo::TypeInfo(TypeTraitsClass t)
50
  : type_(TypeTraitsClass::type),
51
    physical_type_(TypeTraitsClass::physical_type),
52
    name_(TypeTraitsClass::name()),
53
    size_(TypeTraitsClass::size),
54
    min_value_(TypeTraitsClass::min_value()),
55
    append_func_(TypeTraitsClass::AppendDebugStringForValue),
56
335k
    compare_func_(TypeTraitsClass::Compare) {
57
335k
}
_ZN2yb8TypeInfoC2INS_10TypeTraitsILNS_8DataTypeE100EEEEET_
Line
Count
Source
56
12.4k
    compare_func_(TypeTraitsClass::Compare) {
57
12.4k
}
_ZN2yb8TypeInfoC2INS_10TypeTraitsILNS_8DataTypeE1EEEEET_
Line
Count
Source
56
12.4k
    compare_func_(TypeTraitsClass::Compare) {
57
12.4k
}
_ZN2yb8TypeInfoC2INS_10TypeTraitsILNS_8DataTypeE101EEEEET_
Line
Count
Source
56
12.4k
    compare_func_(TypeTraitsClass::Compare) {
57
12.4k
}
_ZN2yb8TypeInfoC2INS_10TypeTraitsILNS_8DataTypeE2EEEEET_
Line
Count
Source
56
12.4k
    compare_func_(TypeTraitsClass::Compare) {
57
12.4k
}
_ZN2yb8TypeInfoC2INS_10TypeTraitsILNS_8DataTypeE102EEEEET_
Line
Count
Source
56
12.4k
    compare_func_(TypeTraitsClass::Compare) {
57
12.4k
}
_ZN2yb8TypeInfoC2INS_10TypeTraitsILNS_8DataTypeE3EEEEET_
Line
Count
Source
56
12.4k
    compare_func_(TypeTraitsClass::Compare) {
57
12.4k
}
_ZN2yb8TypeInfoC2INS_10TypeTraitsILNS_8DataTypeE103EEEEET_
Line
Count
Source
56
12.4k
    compare_func_(TypeTraitsClass::Compare) {
57
12.4k
}
_ZN2yb8TypeInfoC2INS_10TypeTraitsILNS_8DataTypeE4EEEEET_
Line
Count
Source
56
12.4k
    compare_func_(TypeTraitsClass::Compare) {
57
12.4k
}
_ZN2yb8TypeInfoC2INS_10TypeTraitsILNS_8DataTypeE12EEEEET_
Line
Count
Source
56
12.4k
    compare_func_(TypeTraitsClass::Compare) {
57
12.4k
}
_ZN2yb8TypeInfoC2INS_10TypeTraitsILNS_8DataTypeE10EEEEET_
Line
Count
Source
56
12.4k
    compare_func_(TypeTraitsClass::Compare) {
57
12.4k
}
_ZN2yb8TypeInfoC2INS_10TypeTraitsILNS_8DataTypeE23EEEEET_
Line
Count
Source
56
12.4k
    compare_func_(TypeTraitsClass::Compare) {
57
12.4k
}
_ZN2yb8TypeInfoC2INS_10TypeTraitsILNS_8DataTypeE24EEEEET_
Line
Count
Source
56
12.4k
    compare_func_(TypeTraitsClass::Compare) {
57
12.4k
}
_ZN2yb8TypeInfoC2INS_10TypeTraitsILNS_8DataTypeE5EEEEET_
Line
Count
Source
56
12.4k
    compare_func_(TypeTraitsClass::Compare) {
57
12.4k
}
_ZN2yb8TypeInfoC2INS_10TypeTraitsILNS_8DataTypeE6EEEEET_
Line
Count
Source
56
12.4k
    compare_func_(TypeTraitsClass::Compare) {
57
12.4k
}
_ZN2yb8TypeInfoC2INS_10TypeTraitsILNS_8DataTypeE7EEEEET_
Line
Count
Source
56
12.4k
    compare_func_(TypeTraitsClass::Compare) {
57
12.4k
}
_ZN2yb8TypeInfoC2INS_10TypeTraitsILNS_8DataTypeE8EEEEET_
Line
Count
Source
56
12.4k
    compare_func_(TypeTraitsClass::Compare) {
57
12.4k
}
_ZN2yb8TypeInfoC2INS_10TypeTraitsILNS_8DataTypeE9EEEEET_
Line
Count
Source
56
12.4k
    compare_func_(TypeTraitsClass::Compare) {
57
12.4k
}
_ZN2yb8TypeInfoC2INS_10TypeTraitsILNS_8DataTypeE13EEEEET_
Line
Count
Source
56
12.4k
    compare_func_(TypeTraitsClass::Compare) {
57
12.4k
}
_ZN2yb8TypeInfoC2INS_10TypeTraitsILNS_8DataTypeE25EEEEET_
Line
Count
Source
56
12.4k
    compare_func_(TypeTraitsClass::Compare) {
57
12.4k
}
_ZN2yb8TypeInfoC2INS_10TypeTraitsILNS_8DataTypeE15EEEEET_
Line
Count
Source
56
12.4k
    compare_func_(TypeTraitsClass::Compare) {
57
12.4k
}
_ZN2yb8TypeInfoC2INS_10TypeTraitsILNS_8DataTypeE16EEEEET_
Line
Count
Source
56
12.4k
    compare_func_(TypeTraitsClass::Compare) {
57
12.4k
}
_ZN2yb8TypeInfoC2INS_10TypeTraitsILNS_8DataTypeE14EEEEET_
Line
Count
Source
56
12.4k
    compare_func_(TypeTraitsClass::Compare) {
57
12.4k
}
_ZN2yb8TypeInfoC2INS_10TypeTraitsILNS_8DataTypeE11EEEEET_
Line
Count
Source
56
12.4k
    compare_func_(TypeTraitsClass::Compare) {
57
12.4k
}
_ZN2yb8TypeInfoC2INS_10TypeTraitsILNS_8DataTypeE17EEEEET_
Line
Count
Source
56
12.4k
    compare_func_(TypeTraitsClass::Compare) {
57
12.4k
}
_ZN2yb8TypeInfoC2INS_10TypeTraitsILNS_8DataTypeE18EEEEET_
Line
Count
Source
56
12.4k
    compare_func_(TypeTraitsClass::Compare) {
57
12.4k
}
_ZN2yb8TypeInfoC2INS_10TypeTraitsILNS_8DataTypeE21EEEEET_
Line
Count
Source
56
12.4k
    compare_func_(TypeTraitsClass::Compare) {
57
12.4k
}
_ZN2yb8TypeInfoC2INS_10TypeTraitsILNS_8DataTypeE22EEEEET_
Line
Count
Source
56
12.4k
    compare_func_(TypeTraitsClass::Compare) {
57
12.4k
}
58
59
47
void TypeInfo::AppendDebugStringForValue(const void *ptr, string *str) const {
60
47
  append_func_(ptr, str);
61
47
}
62
63
2
int TypeInfo::Compare(const void *lhs, const void *rhs) const {
64
2
  return compare_func_(lhs, rhs);
65
2
}
66
67
class TypeInfoResolver {
68
 public:
69
59.5M
  const TypeInfo* GetTypeInfo(DataType t) {
70
59.5M
    const TypeInfo *type_info = mapping_[t].get();
71
89.4k
    CHECK(type_info != nullptr) <<
72
89.4k
      "Bad type: " << t;
73
59.5M
    return type_info;
74
59.5M
  }
75
76
 private:
77
12.4k
  TypeInfoResolver() {
78
12.4k
    AddMapping<UINT8>();
79
12.4k
    AddMapping<INT8>();
80
12.4k
    AddMapping<UINT16>();
81
12.4k
    AddMapping<INT16>();
82
12.4k
    AddMapping<UINT32>();
83
12.4k
    AddMapping<INT32>();
84
12.4k
    AddMapping<UINT64>();
85
12.4k
    AddMapping<INT64>();
86
12.4k
    AddMapping<VARINT>();
87
12.4k
    AddMapping<TIMESTAMP>();
88
12.4k
    AddMapping<DATE>();
89
12.4k
    AddMapping<TIME>();
90
12.4k
    AddMapping<STRING>();
91
12.4k
    AddMapping<BOOL>();
92
12.4k
    AddMapping<FLOAT>();
93
12.4k
    AddMapping<DOUBLE>();
94
12.4k
    AddMapping<BINARY>();
95
12.4k
    AddMapping<INET>();
96
12.4k
    AddMapping<JSONB>();
97
12.4k
    AddMapping<MAP>();
98
12.4k
    AddMapping<SET>();
99
12.4k
    AddMapping<LIST>();
100
12.4k
    AddMapping<DECIMAL>();
101
12.4k
    AddMapping<UUID>();
102
12.4k
    AddMapping<TIMEUUID>();
103
12.4k
    AddMapping<USER_DEFINED_TYPE>();
104
12.4k
    AddMapping<FROZEN>();
105
12.4k
  }
106
107
335k
  template<DataType type> void AddMapping() {
108
335k
    TypeTraits<type> traits;
109
335k
    mapping_.insert(make_pair(type, shared_ptr<TypeInfo>(new TypeInfo(traits))));
110
335k
  }
_ZN2yb16TypeInfoResolver10AddMappingILNS_8DataTypeE100EEEvv
Line
Count
Source
107
12.4k
  template<DataType type> void AddMapping() {
108
12.4k
    TypeTraits<type> traits;
109
12.4k
    mapping_.insert(make_pair(type, shared_ptr<TypeInfo>(new TypeInfo(traits))));
110
12.4k
  }
_ZN2yb16TypeInfoResolver10AddMappingILNS_8DataTypeE1EEEvv
Line
Count
Source
107
12.4k
  template<DataType type> void AddMapping() {
108
12.4k
    TypeTraits<type> traits;
109
12.4k
    mapping_.insert(make_pair(type, shared_ptr<TypeInfo>(new TypeInfo(traits))));
110
12.4k
  }
_ZN2yb16TypeInfoResolver10AddMappingILNS_8DataTypeE101EEEvv
Line
Count
Source
107
12.4k
  template<DataType type> void AddMapping() {
108
12.4k
    TypeTraits<type> traits;
109
12.4k
    mapping_.insert(make_pair(type, shared_ptr<TypeInfo>(new TypeInfo(traits))));
110
12.4k
  }
_ZN2yb16TypeInfoResolver10AddMappingILNS_8DataTypeE2EEEvv
Line
Count
Source
107
12.4k
  template<DataType type> void AddMapping() {
108
12.4k
    TypeTraits<type> traits;
109
12.4k
    mapping_.insert(make_pair(type, shared_ptr<TypeInfo>(new TypeInfo(traits))));
110
12.4k
  }
_ZN2yb16TypeInfoResolver10AddMappingILNS_8DataTypeE102EEEvv
Line
Count
Source
107
12.4k
  template<DataType type> void AddMapping() {
108
12.4k
    TypeTraits<type> traits;
109
12.4k
    mapping_.insert(make_pair(type, shared_ptr<TypeInfo>(new TypeInfo(traits))));
110
12.4k
  }
_ZN2yb16TypeInfoResolver10AddMappingILNS_8DataTypeE3EEEvv
Line
Count
Source
107
12.4k
  template<DataType type> void AddMapping() {
108
12.4k
    TypeTraits<type> traits;
109
12.4k
    mapping_.insert(make_pair(type, shared_ptr<TypeInfo>(new TypeInfo(traits))));
110
12.4k
  }
_ZN2yb16TypeInfoResolver10AddMappingILNS_8DataTypeE103EEEvv
Line
Count
Source
107
12.4k
  template<DataType type> void AddMapping() {
108
12.4k
    TypeTraits<type> traits;
109
12.4k
    mapping_.insert(make_pair(type, shared_ptr<TypeInfo>(new TypeInfo(traits))));
110
12.4k
  }
_ZN2yb16TypeInfoResolver10AddMappingILNS_8DataTypeE4EEEvv
Line
Count
Source
107
12.4k
  template<DataType type> void AddMapping() {
108
12.4k
    TypeTraits<type> traits;
109
12.4k
    mapping_.insert(make_pair(type, shared_ptr<TypeInfo>(new TypeInfo(traits))));
110
12.4k
  }
_ZN2yb16TypeInfoResolver10AddMappingILNS_8DataTypeE12EEEvv
Line
Count
Source
107
12.4k
  template<DataType type> void AddMapping() {
108
12.4k
    TypeTraits<type> traits;
109
12.4k
    mapping_.insert(make_pair(type, shared_ptr<TypeInfo>(new TypeInfo(traits))));
110
12.4k
  }
_ZN2yb16TypeInfoResolver10AddMappingILNS_8DataTypeE10EEEvv
Line
Count
Source
107
12.4k
  template<DataType type> void AddMapping() {
108
12.4k
    TypeTraits<type> traits;
109
12.4k
    mapping_.insert(make_pair(type, shared_ptr<TypeInfo>(new TypeInfo(traits))));
110
12.4k
  }
_ZN2yb16TypeInfoResolver10AddMappingILNS_8DataTypeE23EEEvv
Line
Count
Source
107
12.4k
  template<DataType type> void AddMapping() {
108
12.4k
    TypeTraits<type> traits;
109
12.4k
    mapping_.insert(make_pair(type, shared_ptr<TypeInfo>(new TypeInfo(traits))));
110
12.4k
  }
_ZN2yb16TypeInfoResolver10AddMappingILNS_8DataTypeE24EEEvv
Line
Count
Source
107
12.4k
  template<DataType type> void AddMapping() {
108
12.4k
    TypeTraits<type> traits;
109
12.4k
    mapping_.insert(make_pair(type, shared_ptr<TypeInfo>(new TypeInfo(traits))));
110
12.4k
  }
_ZN2yb16TypeInfoResolver10AddMappingILNS_8DataTypeE5EEEvv
Line
Count
Source
107
12.4k
  template<DataType type> void AddMapping() {
108
12.4k
    TypeTraits<type> traits;
109
12.4k
    mapping_.insert(make_pair(type, shared_ptr<TypeInfo>(new TypeInfo(traits))));
110
12.4k
  }
_ZN2yb16TypeInfoResolver10AddMappingILNS_8DataTypeE6EEEvv
Line
Count
Source
107
12.4k
  template<DataType type> void AddMapping() {
108
12.4k
    TypeTraits<type> traits;
109
12.4k
    mapping_.insert(make_pair(type, shared_ptr<TypeInfo>(new TypeInfo(traits))));
110
12.4k
  }
_ZN2yb16TypeInfoResolver10AddMappingILNS_8DataTypeE7EEEvv
Line
Count
Source
107
12.4k
  template<DataType type> void AddMapping() {
108
12.4k
    TypeTraits<type> traits;
109
12.4k
    mapping_.insert(make_pair(type, shared_ptr<TypeInfo>(new TypeInfo(traits))));
110
12.4k
  }
_ZN2yb16TypeInfoResolver10AddMappingILNS_8DataTypeE8EEEvv
Line
Count
Source
107
12.4k
  template<DataType type> void AddMapping() {
108
12.4k
    TypeTraits<type> traits;
109
12.4k
    mapping_.insert(make_pair(type, shared_ptr<TypeInfo>(new TypeInfo(traits))));
110
12.4k
  }
_ZN2yb16TypeInfoResolver10AddMappingILNS_8DataTypeE9EEEvv
Line
Count
Source
107
12.4k
  template<DataType type> void AddMapping() {
108
12.4k
    TypeTraits<type> traits;
109
12.4k
    mapping_.insert(make_pair(type, shared_ptr<TypeInfo>(new TypeInfo(traits))));
110
12.4k
  }
_ZN2yb16TypeInfoResolver10AddMappingILNS_8DataTypeE13EEEvv
Line
Count
Source
107
12.4k
  template<DataType type> void AddMapping() {
108
12.4k
    TypeTraits<type> traits;
109
12.4k
    mapping_.insert(make_pair(type, shared_ptr<TypeInfo>(new TypeInfo(traits))));
110
12.4k
  }
_ZN2yb16TypeInfoResolver10AddMappingILNS_8DataTypeE25EEEvv
Line
Count
Source
107
12.4k
  template<DataType type> void AddMapping() {
108
12.4k
    TypeTraits<type> traits;
109
12.4k
    mapping_.insert(make_pair(type, shared_ptr<TypeInfo>(new TypeInfo(traits))));
110
12.4k
  }
_ZN2yb16TypeInfoResolver10AddMappingILNS_8DataTypeE15EEEvv
Line
Count
Source
107
12.4k
  template<DataType type> void AddMapping() {
108
12.4k
    TypeTraits<type> traits;
109
12.4k
    mapping_.insert(make_pair(type, shared_ptr<TypeInfo>(new TypeInfo(traits))));
110
12.4k
  }
_ZN2yb16TypeInfoResolver10AddMappingILNS_8DataTypeE16EEEvv
Line
Count
Source
107
12.4k
  template<DataType type> void AddMapping() {
108
12.4k
    TypeTraits<type> traits;
109
12.4k
    mapping_.insert(make_pair(type, shared_ptr<TypeInfo>(new TypeInfo(traits))));
110
12.4k
  }
_ZN2yb16TypeInfoResolver10AddMappingILNS_8DataTypeE14EEEvv
Line
Count
Source
107
12.4k
  template<DataType type> void AddMapping() {
108
12.4k
    TypeTraits<type> traits;
109
12.4k
    mapping_.insert(make_pair(type, shared_ptr<TypeInfo>(new TypeInfo(traits))));
110
12.4k
  }
_ZN2yb16TypeInfoResolver10AddMappingILNS_8DataTypeE11EEEvv
Line
Count
Source
107
12.4k
  template<DataType type> void AddMapping() {
108
12.4k
    TypeTraits<type> traits;
109
12.4k
    mapping_.insert(make_pair(type, shared_ptr<TypeInfo>(new TypeInfo(traits))));
110
12.4k
  }
_ZN2yb16TypeInfoResolver10AddMappingILNS_8DataTypeE17EEEvv
Line
Count
Source
107
12.4k
  template<DataType type> void AddMapping() {
108
12.4k
    TypeTraits<type> traits;
109
12.4k
    mapping_.insert(make_pair(type, shared_ptr<TypeInfo>(new TypeInfo(traits))));
110
12.4k
  }
_ZN2yb16TypeInfoResolver10AddMappingILNS_8DataTypeE18EEEvv
Line
Count
Source
107
12.4k
  template<DataType type> void AddMapping() {
108
12.4k
    TypeTraits<type> traits;
109
12.4k
    mapping_.insert(make_pair(type, shared_ptr<TypeInfo>(new TypeInfo(traits))));
110
12.4k
  }
_ZN2yb16TypeInfoResolver10AddMappingILNS_8DataTypeE21EEEvv
Line
Count
Source
107
12.4k
  template<DataType type> void AddMapping() {
108
12.4k
    TypeTraits<type> traits;
109
12.4k
    mapping_.insert(make_pair(type, shared_ptr<TypeInfo>(new TypeInfo(traits))));
110
12.4k
  }
_ZN2yb16TypeInfoResolver10AddMappingILNS_8DataTypeE22EEEvv
Line
Count
Source
107
12.4k
  template<DataType type> void AddMapping() {
108
12.4k
    TypeTraits<type> traits;
109
12.4k
    mapping_.insert(make_pair(type, shared_ptr<TypeInfo>(new TypeInfo(traits))));
110
12.4k
  }
111
112
  unordered_map<DataType,
113
                shared_ptr<const TypeInfo>,
114
                std::hash<size_t> > mapping_;
115
116
  friend class Singleton<TypeInfoResolver>;
117
  DISALLOW_COPY_AND_ASSIGN(TypeInfoResolver);
118
};
119
120
59.4M
const TypeInfo* GetTypeInfo(DataType type) {
121
59.4M
  return Singleton<TypeInfoResolver>::get()->GetTypeInfo(type);
122
59.4M
}
123
124
0
void DataTypeTraits<INET>::AppendDebugStringForValue(const void *val, std::string *str) {
125
0
  const Slice *s = reinterpret_cast<const Slice *>(val);
126
0
  InetAddress addr;
127
0
  DCHECK(addr.FromSlice(*s).ok());
128
0
  str->append(addr.ToString());
129
0
}
130
131
0
void DataTypeTraits<UUID>::AppendDebugStringForValue(const void *val, std::string *str) {
132
0
  const Slice *s = reinterpret_cast<const Slice *>(val);
133
0
  Uuid uuid;
134
0
  DCHECK(uuid.FromSlice(*s).ok());
135
0
  str->append(uuid.ToString());
136
0
}
137
138
0
void DataTypeTraits<TIMEUUID>::AppendDebugStringForValue(const void *val, std::string *str) {
139
0
  const Slice *s = reinterpret_cast<const Slice *>(val);
140
0
  Uuid uuid;
141
0
  DCHECK(uuid.FromSlice(*s).ok());
142
0
  str->append(uuid.ToString());
143
0
}
144
145
} // namespace yb