/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 |