/src/duckdb/src/function/cast/numeric_casts.cpp
Line | Count | Source |
1 | | #include "duckdb/function/cast/default_casts.hpp" |
2 | | #include "duckdb/function/cast/vector_cast_helpers.hpp" |
3 | | #include "duckdb/common/operator/string_cast.hpp" |
4 | | #include "duckdb/common/operator/numeric_cast.hpp" |
5 | | #include "duckdb/common/types/bignum.hpp" |
6 | | |
7 | | namespace duckdb { |
8 | | |
9 | | template <class SRC> |
10 | 1.00M | static BoundCastInfo InternalNumericCastSwitch(const LogicalType &source, const LogicalType &target) { |
11 | | // now switch on the result type |
12 | 1.00M | switch (target.id()) { |
13 | 19.1k | case LogicalTypeId::BOOLEAN: |
14 | 19.1k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, bool, duckdb::NumericTryCast>); |
15 | 44.3k | case LogicalTypeId::TINYINT: |
16 | 44.3k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, int8_t, duckdb::NumericTryCast>); |
17 | 46.6k | case LogicalTypeId::SMALLINT: |
18 | 46.6k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, int16_t, duckdb::NumericTryCast>); |
19 | 10.8k | case LogicalTypeId::INTEGER: |
20 | 10.8k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, int32_t, duckdb::NumericTryCast>); |
21 | 78.2k | case LogicalTypeId::BIGINT: |
22 | 78.2k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, int64_t, duckdb::NumericTryCast>); |
23 | 94.9k | case LogicalTypeId::UTINYINT: |
24 | 94.9k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uint8_t, duckdb::NumericTryCast>); |
25 | 45.3k | case LogicalTypeId::USMALLINT: |
26 | 45.3k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uint16_t, duckdb::NumericTryCast>); |
27 | 46.9k | case LogicalTypeId::UINTEGER: |
28 | 46.9k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uint32_t, duckdb::NumericTryCast>); |
29 | 73.7k | case LogicalTypeId::UBIGINT: |
30 | 73.7k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uint64_t, duckdb::NumericTryCast>); |
31 | 68.6k | case LogicalTypeId::HUGEINT: |
32 | 68.6k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, hugeint_t, duckdb::NumericTryCast>); |
33 | 47.2k | case LogicalTypeId::UHUGEINT: |
34 | 47.2k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uhugeint_t, duckdb::NumericTryCast>); |
35 | 760 | case LogicalTypeId::FLOAT: |
36 | 760 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, float, duckdb::NumericTryCast>); |
37 | 18.6k | case LogicalTypeId::DOUBLE: |
38 | 18.6k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, double, duckdb::NumericTryCast>); |
39 | 48.9k | case LogicalTypeId::DECIMAL: |
40 | 48.9k | return BoundCastInfo(&VectorCastHelpers::ToDecimalCast<SRC>); |
41 | 356k | case LogicalTypeId::VARCHAR: |
42 | 356k | return BoundCastInfo(&VectorCastHelpers::StringCast<SRC, duckdb::StringCast>); |
43 | 0 | case LogicalTypeId::BIT: |
44 | 0 | return BoundCastInfo(&VectorCastHelpers::StringCast<SRC, duckdb::NumericTryCastToBit>); |
45 | 0 | case LogicalTypeId::BIGNUM: |
46 | 0 | return Bignum::NumericToBignumCastSwitch(source); |
47 | 42 | default: |
48 | 42 | return DefaultCasts::TryVectorNullCast; |
49 | 1.00M | } |
50 | 1.00M | } ub_duckdb_func_cast.cpp:duckdb::BoundCastInfo duckdb::InternalNumericCastSwitch<bool>(duckdb::LogicalType const&, duckdb::LogicalType const&) Line | Count | Source | 10 | 13.6k | static BoundCastInfo InternalNumericCastSwitch(const LogicalType &source, const LogicalType &target) { | 11 | | // now switch on the result type | 12 | 13.6k | switch (target.id()) { | 13 | 0 | case LogicalTypeId::BOOLEAN: | 14 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, bool, duckdb::NumericTryCast>); | 15 | 0 | case LogicalTypeId::TINYINT: | 16 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, int8_t, duckdb::NumericTryCast>); | 17 | 0 | case LogicalTypeId::SMALLINT: | 18 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, int16_t, duckdb::NumericTryCast>); | 19 | 2.08k | case LogicalTypeId::INTEGER: | 20 | 2.08k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, int32_t, duckdb::NumericTryCast>); | 21 | 83 | case LogicalTypeId::BIGINT: | 22 | 83 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, int64_t, duckdb::NumericTryCast>); | 23 | 0 | case LogicalTypeId::UTINYINT: | 24 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uint8_t, duckdb::NumericTryCast>); | 25 | 0 | case LogicalTypeId::USMALLINT: | 26 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uint16_t, duckdb::NumericTryCast>); | 27 | 0 | case LogicalTypeId::UINTEGER: | 28 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uint32_t, duckdb::NumericTryCast>); | 29 | 0 | case LogicalTypeId::UBIGINT: | 30 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uint64_t, duckdb::NumericTryCast>); | 31 | 13 | case LogicalTypeId::HUGEINT: | 32 | 13 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, hugeint_t, duckdb::NumericTryCast>); | 33 | 0 | case LogicalTypeId::UHUGEINT: | 34 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uhugeint_t, duckdb::NumericTryCast>); | 35 | 0 | case LogicalTypeId::FLOAT: | 36 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, float, duckdb::NumericTryCast>); | 37 | 0 | case LogicalTypeId::DOUBLE: | 38 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, double, duckdb::NumericTryCast>); | 39 | 87 | case LogicalTypeId::DECIMAL: | 40 | 87 | return BoundCastInfo(&VectorCastHelpers::ToDecimalCast<SRC>); | 41 | 11.3k | case LogicalTypeId::VARCHAR: | 42 | 11.3k | return BoundCastInfo(&VectorCastHelpers::StringCast<SRC, duckdb::StringCast>); | 43 | 0 | case LogicalTypeId::BIT: | 44 | 0 | return BoundCastInfo(&VectorCastHelpers::StringCast<SRC, duckdb::NumericTryCastToBit>); | 45 | 0 | case LogicalTypeId::BIGNUM: | 46 | 0 | return Bignum::NumericToBignumCastSwitch(source); | 47 | 0 | default: | 48 | 0 | return DefaultCasts::TryVectorNullCast; | 49 | 13.6k | } | 50 | 13.6k | } |
Unexecuted instantiation: ub_duckdb_func_cast.cpp:duckdb::BoundCastInfo duckdb::InternalNumericCastSwitch<signed char>(duckdb::LogicalType const&, duckdb::LogicalType const&) Unexecuted instantiation: ub_duckdb_func_cast.cpp:duckdb::BoundCastInfo duckdb::InternalNumericCastSwitch<short>(duckdb::LogicalType const&, duckdb::LogicalType const&) ub_duckdb_func_cast.cpp:duckdb::BoundCastInfo duckdb::InternalNumericCastSwitch<int>(duckdb::LogicalType const&, duckdb::LogicalType const&) Line | Count | Source | 10 | 777k | static BoundCastInfo InternalNumericCastSwitch(const LogicalType &source, const LogicalType &target) { | 11 | | // now switch on the result type | 12 | 777k | switch (target.id()) { | 13 | 16.2k | case LogicalTypeId::BOOLEAN: | 14 | 16.2k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, bool, duckdb::NumericTryCast>); | 15 | 37.2k | case LogicalTypeId::TINYINT: | 16 | 37.2k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, int8_t, duckdb::NumericTryCast>); | 17 | 39.2k | case LogicalTypeId::SMALLINT: | 18 | 39.2k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, int16_t, duckdb::NumericTryCast>); | 19 | 0 | case LogicalTypeId::INTEGER: | 20 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, int32_t, duckdb::NumericTryCast>); | 21 | 71.8k | case LogicalTypeId::BIGINT: | 22 | 71.8k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, int64_t, duckdb::NumericTryCast>); | 23 | 62.5k | case LogicalTypeId::UTINYINT: | 24 | 62.5k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uint8_t, duckdb::NumericTryCast>); | 25 | 38.1k | case LogicalTypeId::USMALLINT: | 26 | 38.1k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uint16_t, duckdb::NumericTryCast>); | 27 | 39.2k | case LogicalTypeId::UINTEGER: | 28 | 39.2k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uint32_t, duckdb::NumericTryCast>); | 29 | 62.7k | case LogicalTypeId::UBIGINT: | 30 | 62.7k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uint64_t, duckdb::NumericTryCast>); | 31 | 62.8k | case LogicalTypeId::HUGEINT: | 32 | 62.8k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, hugeint_t, duckdb::NumericTryCast>); | 33 | 39.7k | case LogicalTypeId::UHUGEINT: | 34 | 39.7k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uhugeint_t, duckdb::NumericTryCast>); | 35 | 570 | case LogicalTypeId::FLOAT: | 36 | 570 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, float, duckdb::NumericTryCast>); | 37 | 16.0k | case LogicalTypeId::DOUBLE: | 38 | 16.0k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, double, duckdb::NumericTryCast>); | 39 | 43.1k | case LogicalTypeId::DECIMAL: | 40 | 43.1k | return BoundCastInfo(&VectorCastHelpers::ToDecimalCast<SRC>); | 41 | 248k | case LogicalTypeId::VARCHAR: | 42 | 248k | return BoundCastInfo(&VectorCastHelpers::StringCast<SRC, duckdb::StringCast>); | 43 | 0 | case LogicalTypeId::BIT: | 44 | 0 | return BoundCastInfo(&VectorCastHelpers::StringCast<SRC, duckdb::NumericTryCastToBit>); | 45 | 0 | case LogicalTypeId::BIGNUM: | 46 | 0 | return Bignum::NumericToBignumCastSwitch(source); | 47 | 28 | default: | 48 | 28 | return DefaultCasts::TryVectorNullCast; | 49 | 777k | } | 50 | 777k | } |
ub_duckdb_func_cast.cpp:duckdb::BoundCastInfo duckdb::InternalNumericCastSwitch<long>(duckdb::LogicalType const&, duckdb::LogicalType const&) Line | Count | Source | 10 | 114k | static BoundCastInfo InternalNumericCastSwitch(const LogicalType &source, const LogicalType &target) { | 11 | | // now switch on the result type | 12 | 114k | switch (target.id()) { | 13 | 1.33k | case LogicalTypeId::BOOLEAN: | 14 | 1.33k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, bool, duckdb::NumericTryCast>); | 15 | 3.25k | case LogicalTypeId::TINYINT: | 16 | 3.25k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, int8_t, duckdb::NumericTryCast>); | 17 | 3.44k | case LogicalTypeId::SMALLINT: | 18 | 3.44k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, int16_t, duckdb::NumericTryCast>); | 19 | 4.29k | case LogicalTypeId::INTEGER: | 20 | 4.29k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, int32_t, duckdb::NumericTryCast>); | 21 | 0 | case LogicalTypeId::BIGINT: | 22 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, int64_t, duckdb::NumericTryCast>); | 23 | 3.11k | case LogicalTypeId::UTINYINT: | 24 | 3.11k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uint8_t, duckdb::NumericTryCast>); | 25 | 3.17k | case LogicalTypeId::USMALLINT: | 26 | 3.17k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uint16_t, duckdb::NumericTryCast>); | 27 | 3.53k | case LogicalTypeId::UINTEGER: | 28 | 3.53k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uint32_t, duckdb::NumericTryCast>); | 29 | 5.51k | case LogicalTypeId::UBIGINT: | 30 | 5.51k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uint64_t, duckdb::NumericTryCast>); | 31 | 5.58k | case LogicalTypeId::HUGEINT: | 32 | 5.58k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, hugeint_t, duckdb::NumericTryCast>); | 33 | 3.67k | case LogicalTypeId::UHUGEINT: | 34 | 3.67k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uhugeint_t, duckdb::NumericTryCast>); | 35 | 190 | case LogicalTypeId::FLOAT: | 36 | 190 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, float, duckdb::NumericTryCast>); | 37 | 1.79k | case LogicalTypeId::DOUBLE: | 38 | 1.79k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, double, duckdb::NumericTryCast>); | 39 | 4.72k | case LogicalTypeId::DECIMAL: | 40 | 4.72k | return BoundCastInfo(&VectorCastHelpers::ToDecimalCast<SRC>); | 41 | 71.0k | case LogicalTypeId::VARCHAR: | 42 | 71.0k | return BoundCastInfo(&VectorCastHelpers::StringCast<SRC, duckdb::StringCast>); | 43 | 0 | case LogicalTypeId::BIT: | 44 | 0 | return BoundCastInfo(&VectorCastHelpers::StringCast<SRC, duckdb::NumericTryCastToBit>); | 45 | 0 | case LogicalTypeId::BIGNUM: | 46 | 0 | return Bignum::NumericToBignumCastSwitch(source); | 47 | 0 | default: | 48 | 0 | return DefaultCasts::TryVectorNullCast; | 49 | 114k | } | 50 | 114k | } |
Unexecuted instantiation: ub_duckdb_func_cast.cpp:duckdb::BoundCastInfo duckdb::InternalNumericCastSwitch<unsigned char>(duckdb::LogicalType const&, duckdb::LogicalType const&) Unexecuted instantiation: ub_duckdb_func_cast.cpp:duckdb::BoundCastInfo duckdb::InternalNumericCastSwitch<unsigned short>(duckdb::LogicalType const&, duckdb::LogicalType const&) Unexecuted instantiation: ub_duckdb_func_cast.cpp:duckdb::BoundCastInfo duckdb::InternalNumericCastSwitch<unsigned int>(duckdb::LogicalType const&, duckdb::LogicalType const&) ub_duckdb_func_cast.cpp:duckdb::BoundCastInfo duckdb::InternalNumericCastSwitch<unsigned long>(duckdb::LogicalType const&, duckdb::LogicalType const&) Line | Count | Source | 10 | 26.0k | static BoundCastInfo InternalNumericCastSwitch(const LogicalType &source, const LogicalType &target) { | 11 | | // now switch on the result type | 12 | 26.0k | switch (target.id()) { | 13 | 0 | case LogicalTypeId::BOOLEAN: | 14 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, bool, duckdb::NumericTryCast>); | 15 | 0 | case LogicalTypeId::TINYINT: | 16 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, int8_t, duckdb::NumericTryCast>); | 17 | 0 | case LogicalTypeId::SMALLINT: | 18 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, int16_t, duckdb::NumericTryCast>); | 19 | 0 | case LogicalTypeId::INTEGER: | 20 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, int32_t, duckdb::NumericTryCast>); | 21 | 0 | case LogicalTypeId::BIGINT: | 22 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, int64_t, duckdb::NumericTryCast>); | 23 | 25.5k | case LogicalTypeId::UTINYINT: | 24 | 25.5k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uint8_t, duckdb::NumericTryCast>); | 25 | 207 | case LogicalTypeId::USMALLINT: | 26 | 207 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uint16_t, duckdb::NumericTryCast>); | 27 | 230 | case LogicalTypeId::UINTEGER: | 28 | 230 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uint32_t, duckdb::NumericTryCast>); | 29 | 0 | case LogicalTypeId::UBIGINT: | 30 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uint64_t, duckdb::NumericTryCast>); | 31 | 0 | case LogicalTypeId::HUGEINT: | 32 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, hugeint_t, duckdb::NumericTryCast>); | 33 | 0 | case LogicalTypeId::UHUGEINT: | 34 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uhugeint_t, duckdb::NumericTryCast>); | 35 | 0 | case LogicalTypeId::FLOAT: | 36 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, float, duckdb::NumericTryCast>); | 37 | 0 | case LogicalTypeId::DOUBLE: | 38 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, double, duckdb::NumericTryCast>); | 39 | 0 | case LogicalTypeId::DECIMAL: | 40 | 0 | return BoundCastInfo(&VectorCastHelpers::ToDecimalCast<SRC>); | 41 | 12 | case LogicalTypeId::VARCHAR: | 42 | 12 | return BoundCastInfo(&VectorCastHelpers::StringCast<SRC, duckdb::StringCast>); | 43 | 0 | case LogicalTypeId::BIT: | 44 | 0 | return BoundCastInfo(&VectorCastHelpers::StringCast<SRC, duckdb::NumericTryCastToBit>); | 45 | 0 | case LogicalTypeId::BIGNUM: | 46 | 0 | return Bignum::NumericToBignumCastSwitch(source); | 47 | 0 | default: | 48 | 0 | return DefaultCasts::TryVectorNullCast; | 49 | 26.0k | } | 50 | 26.0k | } |
ub_duckdb_func_cast.cpp:duckdb::BoundCastInfo duckdb::InternalNumericCastSwitch<duckdb::hugeint_t>(duckdb::LogicalType const&, duckdb::LogicalType const&) Line | Count | Source | 10 | 57.0k | static BoundCastInfo InternalNumericCastSwitch(const LogicalType &source, const LogicalType &target) { | 11 | | // now switch on the result type | 12 | 57.0k | switch (target.id()) { | 13 | 600 | case LogicalTypeId::BOOLEAN: | 14 | 600 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, bool, duckdb::NumericTryCast>); | 15 | 3.76k | case LogicalTypeId::TINYINT: | 16 | 3.76k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, int8_t, duckdb::NumericTryCast>); | 17 | 3.82k | case LogicalTypeId::SMALLINT: | 18 | 3.82k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, int16_t, duckdb::NumericTryCast>); | 19 | 4.36k | case LogicalTypeId::INTEGER: | 20 | 4.36k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, int32_t, duckdb::NumericTryCast>); | 21 | 6.09k | case LogicalTypeId::BIGINT: | 22 | 6.09k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, int64_t, duckdb::NumericTryCast>); | 23 | 3.62k | case LogicalTypeId::UTINYINT: | 24 | 3.62k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uint8_t, duckdb::NumericTryCast>); | 25 | 3.67k | case LogicalTypeId::USMALLINT: | 26 | 3.67k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uint16_t, duckdb::NumericTryCast>); | 27 | 3.76k | case LogicalTypeId::UINTEGER: | 28 | 3.76k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uint32_t, duckdb::NumericTryCast>); | 29 | 5.39k | case LogicalTypeId::UBIGINT: | 30 | 5.39k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uint64_t, duckdb::NumericTryCast>); | 31 | 0 | case LogicalTypeId::HUGEINT: | 32 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, hugeint_t, duckdb::NumericTryCast>); | 33 | 3.84k | case LogicalTypeId::UHUGEINT: | 34 | 3.84k | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uhugeint_t, duckdb::NumericTryCast>); | 35 | 0 | case LogicalTypeId::FLOAT: | 36 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, float, duckdb::NumericTryCast>); | 37 | 655 | case LogicalTypeId::DOUBLE: | 38 | 655 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, double, duckdb::NumericTryCast>); | 39 | 1.03k | case LogicalTypeId::DECIMAL: | 40 | 1.03k | return BoundCastInfo(&VectorCastHelpers::ToDecimalCast<SRC>); | 41 | 16.4k | case LogicalTypeId::VARCHAR: | 42 | 16.4k | return BoundCastInfo(&VectorCastHelpers::StringCast<SRC, duckdb::StringCast>); | 43 | 0 | case LogicalTypeId::BIT: | 44 | 0 | return BoundCastInfo(&VectorCastHelpers::StringCast<SRC, duckdb::NumericTryCastToBit>); | 45 | 0 | case LogicalTypeId::BIGNUM: | 46 | 0 | return Bignum::NumericToBignumCastSwitch(source); | 47 | 0 | default: | 48 | 0 | return DefaultCasts::TryVectorNullCast; | 49 | 57.0k | } | 50 | 57.0k | } |
ub_duckdb_func_cast.cpp:duckdb::BoundCastInfo duckdb::InternalNumericCastSwitch<duckdb::uhugeint_t>(duckdb::LogicalType const&, duckdb::LogicalType const&) Line | Count | Source | 10 | 1.75k | static BoundCastInfo InternalNumericCastSwitch(const LogicalType &source, const LogicalType &target) { | 11 | | // now switch on the result type | 12 | 1.75k | switch (target.id()) { | 13 | 45 | case LogicalTypeId::BOOLEAN: | 14 | 45 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, bool, duckdb::NumericTryCast>); | 15 | 132 | case LogicalTypeId::TINYINT: | 16 | 132 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, int8_t, duckdb::NumericTryCast>); | 17 | 132 | case LogicalTypeId::SMALLINT: | 18 | 132 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, int16_t, duckdb::NumericTryCast>); | 19 | 143 | case LogicalTypeId::INTEGER: | 20 | 143 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, int32_t, duckdb::NumericTryCast>); | 21 | 171 | case LogicalTypeId::BIGINT: | 22 | 171 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, int64_t, duckdb::NumericTryCast>); | 23 | 124 | case LogicalTypeId::UTINYINT: | 24 | 124 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uint8_t, duckdb::NumericTryCast>); | 25 | 124 | case LogicalTypeId::USMALLINT: | 26 | 124 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uint16_t, duckdb::NumericTryCast>); | 27 | 132 | case LogicalTypeId::UINTEGER: | 28 | 132 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uint32_t, duckdb::NumericTryCast>); | 29 | 139 | case LogicalTypeId::UBIGINT: | 30 | 139 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uint64_t, duckdb::NumericTryCast>); | 31 | 166 | case LogicalTypeId::HUGEINT: | 32 | 166 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, hugeint_t, duckdb::NumericTryCast>); | 33 | 0 | case LogicalTypeId::UHUGEINT: | 34 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uhugeint_t, duckdb::NumericTryCast>); | 35 | 0 | case LogicalTypeId::FLOAT: | 36 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, float, duckdb::NumericTryCast>); | 37 | 166 | case LogicalTypeId::DOUBLE: | 38 | 166 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, double, duckdb::NumericTryCast>); | 39 | 14 | case LogicalTypeId::DECIMAL: | 40 | 14 | return BoundCastInfo(&VectorCastHelpers::ToDecimalCast<SRC>); | 41 | 267 | case LogicalTypeId::VARCHAR: | 42 | 267 | return BoundCastInfo(&VectorCastHelpers::StringCast<SRC, duckdb::StringCast>); | 43 | 0 | case LogicalTypeId::BIT: | 44 | 0 | return BoundCastInfo(&VectorCastHelpers::StringCast<SRC, duckdb::NumericTryCastToBit>); | 45 | 0 | case LogicalTypeId::BIGNUM: | 46 | 0 | return Bignum::NumericToBignumCastSwitch(source); | 47 | 0 | default: | 48 | 0 | return DefaultCasts::TryVectorNullCast; | 49 | 1.75k | } | 50 | 1.75k | } |
Unexecuted instantiation: ub_duckdb_func_cast.cpp:duckdb::BoundCastInfo duckdb::InternalNumericCastSwitch<float>(duckdb::LogicalType const&, duckdb::LogicalType const&) ub_duckdb_func_cast.cpp:duckdb::BoundCastInfo duckdb::InternalNumericCastSwitch<double>(duckdb::LogicalType const&, duckdb::LogicalType const&) Line | Count | Source | 10 | 10.4k | static BoundCastInfo InternalNumericCastSwitch(const LogicalType &source, const LogicalType &target) { | 11 | | // now switch on the result type | 12 | 10.4k | switch (target.id()) { | 13 | 944 | case LogicalTypeId::BOOLEAN: | 14 | 944 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, bool, duckdb::NumericTryCast>); | 15 | 0 | case LogicalTypeId::TINYINT: | 16 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, int8_t, duckdb::NumericTryCast>); | 17 | 0 | case LogicalTypeId::SMALLINT: | 18 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, int16_t, duckdb::NumericTryCast>); | 19 | 0 | case LogicalTypeId::INTEGER: | 20 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, int32_t, duckdb::NumericTryCast>); | 21 | 10 | case LogicalTypeId::BIGINT: | 22 | 10 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, int64_t, duckdb::NumericTryCast>); | 23 | 0 | case LogicalTypeId::UTINYINT: | 24 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uint8_t, duckdb::NumericTryCast>); | 25 | 0 | case LogicalTypeId::USMALLINT: | 26 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uint16_t, duckdb::NumericTryCast>); | 27 | 0 | case LogicalTypeId::UINTEGER: | 28 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uint32_t, duckdb::NumericTryCast>); | 29 | 0 | case LogicalTypeId::UBIGINT: | 30 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uint64_t, duckdb::NumericTryCast>); | 31 | 0 | case LogicalTypeId::HUGEINT: | 32 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, hugeint_t, duckdb::NumericTryCast>); | 33 | 0 | case LogicalTypeId::UHUGEINT: | 34 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, uhugeint_t, duckdb::NumericTryCast>); | 35 | 0 | case LogicalTypeId::FLOAT: | 36 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, float, duckdb::NumericTryCast>); | 37 | 0 | case LogicalTypeId::DOUBLE: | 38 | 0 | return BoundCastInfo(&VectorCastHelpers::TryCastLoop<SRC, double, duckdb::NumericTryCast>); | 39 | 0 | case LogicalTypeId::DECIMAL: | 40 | 0 | return BoundCastInfo(&VectorCastHelpers::ToDecimalCast<SRC>); | 41 | 9.46k | case LogicalTypeId::VARCHAR: | 42 | 9.46k | return BoundCastInfo(&VectorCastHelpers::StringCast<SRC, duckdb::StringCast>); | 43 | 0 | case LogicalTypeId::BIT: | 44 | 0 | return BoundCastInfo(&VectorCastHelpers::StringCast<SRC, duckdb::NumericTryCastToBit>); | 45 | 0 | case LogicalTypeId::BIGNUM: | 46 | 0 | return Bignum::NumericToBignumCastSwitch(source); | 47 | 14 | default: | 48 | 14 | return DefaultCasts::TryVectorNullCast; | 49 | 10.4k | } | 50 | 10.4k | } |
|
51 | | |
52 | | BoundCastInfo DefaultCasts::NumericCastSwitch(BindCastInput &input, const LogicalType &source, |
53 | 1.00M | const LogicalType &target) { |
54 | 1.00M | switch (source.id()) { |
55 | 13.6k | case LogicalTypeId::BOOLEAN: |
56 | 13.6k | return InternalNumericCastSwitch<bool>(source, target); |
57 | 0 | case LogicalTypeId::TINYINT: |
58 | 0 | return InternalNumericCastSwitch<int8_t>(source, target); |
59 | 0 | case LogicalTypeId::SMALLINT: |
60 | 0 | return InternalNumericCastSwitch<int16_t>(source, target); |
61 | 777k | case LogicalTypeId::INTEGER: |
62 | 777k | return InternalNumericCastSwitch<int32_t>(source, target); |
63 | 114k | case LogicalTypeId::BIGINT: |
64 | 114k | return InternalNumericCastSwitch<int64_t>(source, target); |
65 | 0 | case LogicalTypeId::UTINYINT: |
66 | 0 | return InternalNumericCastSwitch<uint8_t>(source, target); |
67 | 0 | case LogicalTypeId::USMALLINT: |
68 | 0 | return InternalNumericCastSwitch<uint16_t>(source, target); |
69 | 0 | case LogicalTypeId::UINTEGER: |
70 | 0 | return InternalNumericCastSwitch<uint32_t>(source, target); |
71 | 26.0k | case LogicalTypeId::UBIGINT: |
72 | 26.0k | return InternalNumericCastSwitch<uint64_t>(source, target); |
73 | 57.0k | case LogicalTypeId::HUGEINT: |
74 | 57.0k | return InternalNumericCastSwitch<hugeint_t>(source, target); |
75 | 1.75k | case LogicalTypeId::UHUGEINT: |
76 | 1.75k | return InternalNumericCastSwitch<uhugeint_t>(source, target); |
77 | 0 | case LogicalTypeId::FLOAT: |
78 | 0 | return InternalNumericCastSwitch<float>(source, target); |
79 | 10.4k | case LogicalTypeId::DOUBLE: |
80 | 10.4k | return InternalNumericCastSwitch<double>(source, target); |
81 | 0 | default: |
82 | 0 | throw InternalException("NumericCastSwitch called with non-numeric argument"); |
83 | 1.00M | } |
84 | 1.00M | } |
85 | | |
86 | | } // namespace duckdb |