|
| template<> |
| void | EncodeData (data_ptr_t dataptr, bool value) |
| |
| template<> |
| void | EncodeData (data_ptr_t dataptr, int8_t value) |
| |
| template<> |
| void | EncodeData (data_ptr_t dataptr, int16_t value) |
| |
| template<> |
| void | EncodeData (data_ptr_t dataptr, int32_t value) |
| |
| template<> |
| void | EncodeData (data_ptr_t dataptr, int64_t value) |
| |
| template<> |
| void | EncodeData (data_ptr_t dataptr, uint8_t value) |
| |
| template<> |
| void | EncodeData (data_ptr_t dataptr, uint16_t value) |
| |
| template<> |
| void | EncodeData (data_ptr_t dataptr, uint32_t value) |
| |
| template<> |
| void | EncodeData (data_ptr_t dataptr, uint64_t value) |
| |
| template<> |
| void | EncodeData (data_ptr_t dataptr, hugeint_t value) |
| |
| template<> |
| void | EncodeData (data_ptr_t dataptr, uhugeint_t value) |
| |
| template<> |
| void | EncodeData (data_ptr_t dataptr, float value) |
| |
| template<> |
| void | EncodeData (data_ptr_t dataptr, double value) |
| |
| template<> |
| void | EncodeData (data_ptr_t dataptr, interval_t value) |
| |
| template<> |
| bool | DecodeData (const_data_ptr_t input) |
| |
| template<> |
| int8_t | DecodeData (const_data_ptr_t input) |
| |
| template<> |
| int16_t | DecodeData (const_data_ptr_t input) |
| |
| template<> |
| int32_t | DecodeData (const_data_ptr_t input) |
| |
| template<> |
| int64_t | DecodeData (const_data_ptr_t input) |
| |
| template<> |
| uint8_t | DecodeData (const_data_ptr_t input) |
| |
| template<> |
| uint16_t | DecodeData (const_data_ptr_t input) |
| |
| template<> |
| uint32_t | DecodeData (const_data_ptr_t input) |
| |
| template<> |
| uint64_t | DecodeData (const_data_ptr_t input) |
| |
| template<> |
| hugeint_t | DecodeData (const_data_ptr_t input) |
| |
| template<> |
| uhugeint_t | DecodeData (const_data_ptr_t input) |
| |
| template<> |
| float | DecodeData (const_data_ptr_t input) |
| |
| template<> |
| double | DecodeData (const_data_ptr_t input) |
| |
| template<> |
| interval_t | DecodeData (const_data_ptr_t input) |
| |
◆ EncodeData() [1/15]
| static void duckdb::Radix::EncodeData |
( |
data_ptr_t |
dataptr, |
|
|
T |
value |
|
) |
| |
|
inlinestatic |
58505 {
58506 throw NotImplementedException("Cannot create data from this type");
58507 }
◆ DecodeData() [1/15]
| static T duckdb::Radix::DecodeData |
( |
const_data_ptr_t |
input | ) |
|
|
inlinestatic |
58510 {
58511 throw NotImplementedException("Cannot read data from this type");
58512 }
◆ EncodeStringDataPrefix()
58514 {
58515 auto len = value.GetSize();
58516 memcpy(dataptr, value.GetData(), MinValue(len, prefix_len));
58517 if (len < prefix_len) {
58518 memset(dataptr + len, '\0', prefix_len - len);
58519 }
58520 }
◆ FlipSign()
58522 {
58523 return key_byte ^ 128;
58524 }
◆ EncodeFloat()
zero
infinity
-infinity
+0 and positive numbers
negative numbers
complement 1
58526 {
58529 if (x == 0) {
58530 buff = 0;
58531 buff |= (1u << 31);
58532 return buff;
58533 }
58534
58535
58536 if (Value::IsNan(x)) {
58537 return UINT_MAX;
58538 }
58540 if (x > FLT_MAX) {
58541 return UINT_MAX - 1;
58542 }
58544 if (x < -FLT_MAX) {
58545 return 0;
58546 }
58547 buff = Load<uint32_t>(const_data_ptr_cast(&x));
58548 if ((buff & (1U << 31)) == 0) {
58549 buff |= (1U << 31);
58550 } else {
58551 buff = ~buff;
58552 }
58553
58554 return buff;
58555 }
◆ DecodeFloat()
58557 {
58558
58559 if (input == UINT_MAX) {
58560 return std::numeric_limits<float>::quiet_NaN();
58561 }
58562 if (input == UINT_MAX - 1) {
58563 return std::numeric_limits<float>::infinity();
58564 }
58565 if (input == 0) {
58566 return -std::numeric_limits<float>::infinity();
58567 }
58568 float result;
58569 if (input & (1U << 31)) {
58570
58571 input = input ^ (1U << 31);
58572 } else {
58573
58574 input = ~input;
58575 }
58576 Store<uint32_t>(input, data_ptr_cast(&result));
58577 return result;
58578 }
◆ EncodeDouble()
zero
infinity
-infinity
+0 and positive numbers
negative numbers
complement 1
58580 {
58583 if (x == 0) {
58584 buff = 0;
58585 buff += (1ULL << 63);
58586 return buff;
58587 }
58588
58589 if (Value::IsNan(x)) {
58590 return ULLONG_MAX;
58591 }
58593 if (x > DBL_MAX) {
58594 return ULLONG_MAX - 1;
58595 }
58597 if (x < -DBL_MAX) {
58598 return 0;
58599 }
58600 buff = Load<uint64_t>(const_data_ptr_cast(&x));
58601 if (buff < (1ULL << 63)) {
58602 buff += (1ULL << 63);
58603 } else {
58604 buff = ~buff;
58605 }
58606 return buff;
58607 }
◆ DecodeDouble()
58608 {
58609
58610 if (input == ULLONG_MAX) {
58611 return std::numeric_limits<double>::quiet_NaN();
58612 }
58613 if (input == ULLONG_MAX - 1) {
58614 return std::numeric_limits<double>::infinity();
58615 }
58616 if (input == 0) {
58617 return -std::numeric_limits<double>::infinity();
58618 }
58619 double result;
58620 if (input & (1ULL << 63)) {
58621
58622 input = input ^ (1ULL << 63);
58623 } else {
58624
58625 input = ~input;
58626 }
58627 Store<uint64_t>(input, data_ptr_cast(&result));
58628 return result;
58629 }
◆ EncodeSigned()
| void duckdb::Radix::EncodeSigned |
( |
data_ptr_t |
dataptr, |
|
|
T |
value |
|
) |
| |
|
staticprivate |
58644 {
58645 using UNSIGNED = typename MakeUnsigned<T>::type;
58646 UNSIGNED bytes;
58647 Store<T>(value, data_ptr_cast(&bytes));
58648 Store<UNSIGNED>(BSwapIfLE(bytes), dataptr);
58649 dataptr[0] = FlipSign(dataptr[0]);
58650}
◆ DecodeSigned()
| T duckdb::Radix::DecodeSigned |
( |
const_data_ptr_t |
input | ) |
|
|
staticprivate |
58731 {
58732 using UNSIGNED = typename MakeUnsigned<T>::type;
58733 UNSIGNED bytes = Load<UNSIGNED>(input);
58734 auto bytes_data = data_ptr_cast(&bytes);
58735 bytes_data[0] = FlipSign(bytes_data[0]);
58736 T result;
58737 Store<UNSIGNED>(BSwapIfLE(bytes), data_ptr_cast(&result));
58738 return result;
58739}
◆ EncodeData() [2/15]
template<>
| void duckdb::Radix::EncodeData |
( |
data_ptr_t |
dataptr, |
|
|
bool |
value |
|
) |
| |
|
inline |
58639 {
58640 Store<uint8_t>(value ? 1 : 0, dataptr);
58641}
◆ EncodeData() [3/15]
template<>
| void duckdb::Radix::EncodeData |
( |
data_ptr_t |
dataptr, |
|
|
int8_t |
value |
|
) |
| |
|
inline |
58653 {
58654 EncodeSigned<int8_t>(dataptr, value);
58655}
◆ EncodeData() [4/15]
template<>
| void duckdb::Radix::EncodeData |
( |
data_ptr_t |
dataptr, |
|
|
int16_t |
value |
|
) |
| |
|
inline |
58658 {
58659 EncodeSigned<int16_t>(dataptr, value);
58660}
◆ EncodeData() [5/15]
template<>
| void duckdb::Radix::EncodeData |
( |
data_ptr_t |
dataptr, |
|
|
int32_t |
value |
|
) |
| |
|
inline |
58663 {
58664 EncodeSigned<int32_t>(dataptr, value);
58665}
◆ EncodeData() [6/15]
template<>
| void duckdb::Radix::EncodeData |
( |
data_ptr_t |
dataptr, |
|
|
int64_t |
value |
|
) |
| |
|
inline |
58668 {
58669 EncodeSigned<int64_t>(dataptr, value);
58670}
◆ EncodeData() [7/15]
template<>
| void duckdb::Radix::EncodeData |
( |
data_ptr_t |
dataptr, |
|
|
uint8_t |
value |
|
) |
| |
|
inline |
58673 {
58674 Store<uint8_t>(value, dataptr);
58675}
◆ EncodeData() [8/15]
template<>
| void duckdb::Radix::EncodeData |
( |
data_ptr_t |
dataptr, |
|
|
uint16_t |
value |
|
) |
| |
|
inline |
58678 {
58679 Store<uint16_t>(BSwapIfLE(value), dataptr);
58680}
◆ EncodeData() [9/15]
template<>
| void duckdb::Radix::EncodeData |
( |
data_ptr_t |
dataptr, |
|
|
uint32_t |
value |
|
) |
| |
|
inline |
58683 {
58684 Store<uint32_t>(BSwapIfLE(value), dataptr);
58685}
◆ EncodeData() [10/15]
template<>
| void duckdb::Radix::EncodeData |
( |
data_ptr_t |
dataptr, |
|
|
uint64_t |
value |
|
) |
| |
|
inline |
58688 {
58689 Store<uint64_t>(BSwapIfLE(value), dataptr);
58690}
◆ EncodeData() [11/15]
template<>
| void duckdb::Radix::EncodeData |
( |
data_ptr_t |
dataptr, |
|
|
hugeint_t |
value |
|
) |
| |
|
inline |
58693 {
58694 EncodeData<int64_t>(dataptr, value.upper);
58695 EncodeData<uint64_t>(dataptr + sizeof(value.upper), value.lower);
58696}
◆ EncodeData() [12/15]
template<>
| void duckdb::Radix::EncodeData |
( |
data_ptr_t |
dataptr, |
|
|
uhugeint_t |
value |
|
) |
| |
|
inline |
58699 {
58700 EncodeData<uint64_t>(dataptr, value.upper);
58701 EncodeData<uint64_t>(dataptr + sizeof(value.upper), value.lower);
58702}
◆ EncodeData() [13/15]
template<>
| void duckdb::Radix::EncodeData |
( |
data_ptr_t |
dataptr, |
|
|
float |
value |
|
) |
| |
|
inline |
58705 {
58707 Store<uint32_t>(BSwapIfLE(converted_value), dataptr);
58708}
static uint32_t EncodeFloat(float x)
Definition duckdb.cpp:58526
◆ EncodeData() [14/15]
template<>
| void duckdb::Radix::EncodeData |
( |
data_ptr_t |
dataptr, |
|
|
double |
value |
|
) |
| |
|
inline |
58711 {
58713 Store<uint64_t>(BSwapIfLE(converted_value), dataptr);
58714}
static uint64_t EncodeDouble(double x)
Definition duckdb.cpp:58580
◆ EncodeData() [15/15]
template<>
| void duckdb::Radix::EncodeData |
( |
data_ptr_t |
dataptr, |
|
|
interval_t |
value |
|
) |
| |
|
inline |
58717 {
58718 EncodeData<int32_t>(dataptr, value.months);
58719 dataptr += sizeof(value.months);
58720 EncodeData<int32_t>(dataptr, value.days);
58721 dataptr += sizeof(value.days);
58722 EncodeData<int64_t>(dataptr, value.micros);
58723}
◆ DecodeData() [2/15]
template<>
| bool duckdb::Radix::DecodeData |
( |
const_data_ptr_t |
input | ) |
|
|
inline |
58726 {
58727 return Load<uint8_t>(input) != 0;
58728}
◆ DecodeData() [3/15]
template<>
| int8_t duckdb::Radix::DecodeData |
( |
const_data_ptr_t |
input | ) |
|
|
inline |
58742 {
58743 return DecodeSigned<int8_t>(input);
58744}
◆ DecodeData() [4/15]
template<>
| int16_t duckdb::Radix::DecodeData |
( |
const_data_ptr_t |
input | ) |
|
|
inline |
58747 {
58748 return DecodeSigned<int16_t>(input);
58749}
◆ DecodeData() [5/15]
template<>
| int32_t duckdb::Radix::DecodeData |
( |
const_data_ptr_t |
input | ) |
|
|
inline |
58752 {
58753 return DecodeSigned<int32_t>(input);
58754}
◆ DecodeData() [6/15]
template<>
| int64_t duckdb::Radix::DecodeData |
( |
const_data_ptr_t |
input | ) |
|
|
inline |
58757 {
58758 return DecodeSigned<int64_t>(input);
58759}
◆ DecodeData() [7/15]
template<>
| uint8_t duckdb::Radix::DecodeData |
( |
const_data_ptr_t |
input | ) |
|
|
inline |
58762 {
58763 return Load<uint8_t>(input);
58764}
◆ DecodeData() [8/15]
template<>
| uint16_t duckdb::Radix::DecodeData |
( |
const_data_ptr_t |
input | ) |
|
|
inline |
58767 {
58768 return BSwapIfLE(Load<uint16_t>(input));
58769}
◆ DecodeData() [9/15]
template<>
| uint32_t duckdb::Radix::DecodeData |
( |
const_data_ptr_t |
input | ) |
|
|
inline |
58772 {
58773 return BSwapIfLE(Load<uint32_t>(input));
58774}
◆ DecodeData() [10/15]
template<>
| uint64_t duckdb::Radix::DecodeData |
( |
const_data_ptr_t |
input | ) |
|
|
inline |
58777 {
58778 return BSwapIfLE(Load<uint64_t>(input));
58779}
◆ DecodeData() [11/15]
template<>
| hugeint_t duckdb::Radix::DecodeData |
( |
const_data_ptr_t |
input | ) |
|
|
inline |
58782 {
58783 hugeint_t result;
58784 result.upper = DecodeData<int64_t>(input);
58785 result.lower = DecodeData<uint64_t>(input +
sizeof(
int64_t));
58786 return result;
58787}
◆ DecodeData() [12/15]
template<>
| uhugeint_t duckdb::Radix::DecodeData |
( |
const_data_ptr_t |
input | ) |
|
|
inline |
58790 {
58791 uhugeint_t result;
58792 result.upper = DecodeData<uint64_t>(input);
58793 result.lower = DecodeData<uint64_t>(input +
sizeof(
uint64_t));
58794 return result;
58795}
◆ DecodeData() [13/15]
template<>
| float duckdb::Radix::DecodeData |
( |
const_data_ptr_t |
input | ) |
|
|
inline |
58798 {
58799 return DecodeFloat(BSwapIfLE(Load<uint32_t>(input)));
58800}
◆ DecodeData() [14/15]
template<>
| double duckdb::Radix::DecodeData |
( |
const_data_ptr_t |
input | ) |
|
|
inline |
58803 {
58804 return DecodeDouble(BSwapIfLE(Load<uint64_t>(input)));
58805}
◆ DecodeData() [15/15]
template<>
| interval_t duckdb::Radix::DecodeData |
( |
const_data_ptr_t |
input | ) |
|
|
inline |
58808 {
58809 interval_t result;
58810 result.months = DecodeData<int32_t>(input);
58811 result.days = DecodeData<int32_t>(input +
sizeof(
int32_t));
58812 result.micros = DecodeData<int64_t>(input +
sizeof(
int32_t) +
sizeof(
int32_t));
58813 return result;
58814}
The documentation for this struct was generated from the following file:
- external/duckdb/duckdb.cpp