Coverage Report

Created: 2025-12-16 09:45

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/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