22template<
class... Funcs>
24 explicit overload(Funcs... funcs) : Funcs(funcs)... {}
25 using Funcs::operator()...;
30 template<
typename Func,
typename... Types,
size_t... indices>
33 ((func(indices, values)), ...);
36 template<
typename Func,
typename... Types>
39 std::forward<Types>(values)...);
46 static inline std::string
toString(
const T& val,
void* =
nullptr) {
47 if constexpr (std::is_same_v<T, std::string>) {
49 }
else if constexpr (std::is_same_v<T, ku_string_t>) {
50 return val.getAsString();
52 static_assert(std::is_same<T, int64_t>::value || std::is_same<T, int32_t>::value ||
53 std::is_same<T, int16_t>::value || std::is_same<T, int8_t>::value ||
54 std::is_same<T, uint64_t>::value || std::is_same<T, uint32_t>::value ||
55 std::is_same<T, uint16_t>::value || std::is_same<T, uint8_t>::value ||
56 std::is_same<T, double>::value || std::is_same<T, float>::value);
57 return std::to_string(val);
64 uint32_t pageOffset) {
65 memcpy(&overflowPtr, &pageIdx, 4);
66 memcpy(((uint8_t*)&overflowPtr) + 4, &pageOffset, 4);
69 uint32_t& pageOffset) {
71 memcpy(&pageIdx, &overflowPtr, 4);
72 memcpy(&pageOffset, ((uint8_t*)&overflowPtr) + 4, 4);
77 if constexpr (std::is_same_v<T, int64_t>) {
79 }
else if constexpr (std::is_same_v<T, int32_t>) {
81 }
else if constexpr (std::is_same_v<T, int16_t>) {
83 }
else if constexpr (std::is_same_v<T, int8_t>) {
85 }
else if constexpr (std::is_same_v<T, uint64_t>) {
87 }
else if constexpr (std::is_same_v<T, uint32_t>) {
89 }
else if constexpr (std::is_same_v<T, uint16_t>) {
91 }
else if constexpr (std::is_same_v<T, uint8_t>) {
93 }
else if constexpr (std::is_same_v<T, float>) {
95 }
else if constexpr (std::is_same_v<T, double>) {
97 }
else if constexpr (std::is_same_v<T, int128_t>) {
99 }
else if constexpr (std::is_same_v<T, interval_t>) {
101 }
else if constexpr (std::is_same_v<T, uint128_t>) {
103 }
else if constexpr (std::same_as<T, ku_string_t> || std::same_as<T, std::string> ||
104 std::same_as<T, std::string_view>) {
147 template<
typename... Fs>
155 return func(int8_t());
157 return func(uint8_t());
159 return func(int16_t());
161 return func(uint16_t());
163 return func(int32_t());
165 return func(uint32_t());
168 return func(int64_t());
170 return func(uint64_t());
176 return func(
double());
178 return func(
float());
182 return func(int16_t());
184 return func(int32_t());
186 return func(int64_t());
235 template<
typename... Fs>
243 return func(int8_t());
245 return func(uint8_t());
247 return func(int16_t());
249 return func(uint16_t());
251 return func(int32_t());
253 return func(uint32_t());
255 return func(int64_t());
257 return func(uint64_t());
263 return func(
double());
265 return func(
float());
287 return func(uint8_t());
#define KU_UNREACHABLE
Definition assert.h:30
PhysicalTypeID getPhysicalType() const
Definition types.h:292
LogicalTypeID getLogicalTypeID() const
Definition types.h:288
Definition type_utils.h:28
static auto visit(PhysicalTypeID dataType, Fs &&... funcs)
Definition type_utils.h:236
static void decodeOverflowPtr(uint64_t overflowPtr, page_idx_t &pageIdx, uint32_t &pageOffset)
Definition type_utils.h:68
static auto visit(const LogicalType &dataType, Fs... funcs)
Definition type_utils.h:148
static std::string entryToString(const LogicalType &dataType, const uint8_t *value, ValueVector *vector)
static std::string relToString(const struct_entry_t &val, ValueVector *vector)
static void paramPackForEachHelper(const Func &func, std::index_sequence< indices... >, Types &&... values)
Definition type_utils.h:31
static void paramPackForEach(const Func &func, Types &&... values)
Definition type_utils.h:37
static void encodeOverflowPtr(uint64_t &overflowPtr, page_idx_t pageIdx, uint32_t pageOffset)
Definition type_utils.h:63
static std::string nodeToString(const struct_entry_t &val, ValueVector *vector)
static std::string toString(const T &val, void *=nullptr)
Definition type_utils.h:46
static constexpr common::PhysicalTypeID getPhysicalTypeIDForType()
Definition type_utils.h:76
Definition value_vector.h:21
Definition array_utils.h:7
uint32_t page_idx_t
Definition types.h:33
struct LBUG_API int128_t
Definition int128_t.h:17
PhysicalTypeID
Definition types.h:230
@ UINT32
Definition types.h:239
@ INTERVAL
Definition types.h:245
@ ALP_EXCEPTION_DOUBLE
Definition types.h:248
@ LIST
Definition types.h:253
@ UINT16
Definition types.h:240
@ INT64
Definition types.h:234
@ INT16
Definition types.h:236
@ STRING
Definition types.h:252
@ INT32
Definition types.h:235
@ UINT64
Definition types.h:238
@ ANY
Definition types.h:232
@ INTERNAL_ID
Definition types.h:246
@ POINTER
Definition types.h:256
@ BOOL
Definition types.h:233
@ STRUCT
Definition types.h:255
@ INT128
Definition types.h:242
@ ARRAY
Definition types.h:254
@ ALP_EXCEPTION_FLOAT
Definition types.h:247
@ UINT128
Definition types.h:249
@ FLOAT
Definition types.h:244
@ UINT8
Definition types.h:241
@ INT8
Definition types.h:237
@ DOUBLE
Definition types.h:243
@ NODE
Definition types.h:186
@ DECIMAL
Definition types.h:212
@ BLOB
Definition types.h:217
@ UINT32
Definition types.h:199
@ INTERVAL
Definition types.h:211
@ LIST
Definition types.h:219
@ RECURSIVE_REL
Definition types.h:188
@ TIMESTAMP_NS
Definition types.h:209
@ UINT16
Definition types.h:200
@ INT64
Definition types.h:194
@ UUID
Definition types.h:226
@ MAP
Definition types.h:222
@ INT16
Definition types.h:196
@ DATE
Definition types.h:205
@ STRING
Definition types.h:216
@ INT32
Definition types.h:195
@ UINT64
Definition types.h:198
@ SERIAL
Definition types.h:191
@ TIMESTAMP
Definition types.h:206
@ INTERNAL_ID
Definition types.h:213
@ BOOL
Definition types.h:193
@ STRUCT
Definition types.h:221
@ TIMESTAMP_TZ
Definition types.h:210
@ INT128
Definition types.h:202
@ ARRAY
Definition types.h:220
@ UINT128
Definition types.h:214
@ TIMESTAMP_MS
Definition types.h:208
@ TIMESTAMP_SEC
Definition types.h:207
@ FLOAT
Definition types.h:204
@ REL
Definition types.h:187
@ UNION
Definition types.h:223
@ UINT8
Definition types.h:201
@ INT8
Definition types.h:197
@ DOUBLE
Definition types.h:203
Definition array_utils.h:7
Definition interval_t.h:35
Definition ku_string.h:12
Definition type_utils.h:23
overload(Funcs... funcs)
Definition type_utils.h:24
Definition timestamp_t.h:49
Definition timestamp_t.h:46
Definition timestamp_t.h:52
Definition timestamp_t.h:10
Definition timestamp_t.h:43
Definition uint128_t.h:15