duckdb 1.5.0 breaks
Hi @krlmlr the package CohortCharacteristics breaks due to duckdb 1.5.0 release (https://github.com/darwin-eu/CohortCharacteristics/issues/15) I have found a work around and will submit to cran soon, but I think error is not in CohortCharacteristics. Sharing reprex that used to work in duckdb older versions.
Sorry that I could not reduce it more
``` r
con <- duckdb::dbConnect(duckdb::duckdb())
x <- dplyr::tibble(subject_id = 1L, day = as.Date("2010-01-01"), cohort_id = 1L)
DBI::dbWriteTable(conn = con, name = "test", value = x)
x <- dplyr::tbl(con, "test")
y <- dplyr::tibble(cohort_id = 1L, cohort_name = "cohort_1")
DBI::dbWriteTable(conn = con, name = "test2", value = y)
y <- dplyr::tbl(con, "test2")
x <- x |>
dplyr::left_join(y, by = "cohort_id")
x |>
dplyr::select("day", "subject_id") |>
dplyr::inner_join(
x |>
dplyr::select("day_2" = "day", "subject_id"),
by = c("subject_id")
)
#> Error in `collect()`:
#> ! Failed to collect lazy table.
#> Caused by error in `dbSendQuery()`:
#> ! INTERNAL Error: Failed to bind column reference "day_2" [24.0]: inequal types (DATE != INTEGER)
#>
#> Stack Trace:
#>
#> 0 duckdb::Exception::Exception(duckdb::ExceptionType, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) + 52
#> 1 duckdb::InternalException::InternalException(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) + 20
#> 2 duckdb::InternalException::InternalException<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned long long&, unsigned long long&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned long long&, unsigned long long&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&&) + 64
#> 3 duckdb::ColumnBindingResolver::VisitReplace(duckdb::BoundColumnRefExpression&, duckdb::unique_ptr<duckdb::Expression, std::__1::default_delete<duckdb::Expression>, true>*) + 644
#> 4 duckdb::LogicalOperatorVisitor::VisitExpression(duckdb::unique_ptr<duckdb::Expression, std::__1::default_delete<duckdb::Expression>, true>*) + 476
#> 5 duckdb::LogicalOperatorVisitor::EnumerateExpressions(duckdb::LogicalOperator&, std::__1::function<void (duckdb::unique_ptr<duckdb::Expression, std::__1::default_delete<duckdb::Expression>, true>*)> const&) + 1188
#> 6 duckdb::LogicalOperatorVisitor::VisitOperatorExpressions(duckdb::LogicalOperator&) + 68
#> 7 duckdb::ColumnBindingResolver::VisitOperator(duckdb::LogicalOperator&) + 1624
#> 8 duckdb::ColumnBindingResolver::VisitOperator(duckdb::LogicalOperator&) + 244
#> 9 duckdb::LogicalOperatorVisitor::VisitOperatorChildren(duckdb::LogicalOperator&) + 108
#> 10 duckdb::ColumnBindingResolver::VisitOperator(duckdb::LogicalOperator&) + 1612
#> 11 duckdb::LogicalOperatorVisitor::VisitOperatorChildren(duckdb::LogicalOperator&) + 108
#> 12 duckdb::ColumnBindingResolver::VisitOperator(duckdb::LogicalOperator&) + 1612
#> 13 duckdb::LogicalOperatorVisitor::VisitOperatorChildren(duckdb::LogicalOperator&) + 108
#> 14 duckdb::ColumnBindingResolver::VisitOperator(duckdb::LogicalOperator&) + 1612
#> 15 duckdb::LogicalOperatorVisitor::VisitOperatorChildren(duckdb::LogicalOperator&) + 108
#> 16 duckdb::ColumnBindingResolver::VisitOperator(duckdb::LogicalOperator&) + 1612
#> 17 duckdb::PhysicalPlanGenerator::ResolveAndPlan(duckdb::unique_ptr<duckdb::LogicalOperator, std::__1::default_delete<duckdb::LogicalOperator>, true>) + 136
#> 18 duckdb::PhysicalPlanGenerator::Plan(duckdb::unique_ptr<duckdb::LogicalOperator, std::__1::default_delete<duckdb::LogicalOperator>, true>) + 48
#> 19 duckdb::ClientContext::CreatePreparedStatementInternal(duckdb::ClientContextLock&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, duckdb::unique_ptr<duckdb::SQLStatement, std::__1::default_delete<duckdb::SQLStatement>, true>, duckdb::PendingQueryParameters) + 2048
#> 20 duckdb::ClientContext::CreatePreparedStatement(duckdb::ClientContextLock&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, duckdb::unique_ptr<duckdb::SQLStatement, std::__1::default_delete<duckdb::SQLStatement>, true>, duckdb::PendingQueryParameters, duckdb::PreparedStatementMode) + 716
#> 21 std::__1::__function::__func<duckdb::ClientContext::PrepareInternal(duckdb::ClientContextLock&, duckdb::unique_ptr<duckdb::SQLStatement, std::__1::default_delete<duckdb::SQLStatement>, true>)::$_2, std::__1::allocator<duckdb::ClientContext::PrepareInternal(duckdb::ClientContextLock&, duckdb::unique_ptr<duckdb::SQLStatement, std::__1::default_delete<duckdb::SQLStatement>, true>)::$_2>, void ()>::operator()() + 64
#> 22 duckdb::ClientContext::RunFunctionInTransactionInternal(duckdb::ClientContextLock&, std::__1::function<void ()> const&, bool) + 124
#> 23 duckdb::ClientContext::PrepareInternal(duckdb::ClientContextLock&, duckdb::unique_ptr<duckdb::SQLStatement, std::__1::default_delete<duckdb::SQLStatement>, true>) + 196
#> 24 duckdb::ClientContext::Prepare(duckdb::unique_ptr<duckdb::SQLStatement, std::__1::default_delete<duckdb::SQLStatement>, true>) + 164
#> 25 duckdb::Connection::Prepare(duckdb::unique_ptr<duckdb::SQLStatement, std::__1::default_delete<duckdb::SQLStatement>, true>) + 52
#> 26 rapi_prepare(cpp11::external_pointer<duckdb::ConnWrapper, &duckdb::ConnDeleter(duckdb::ConnWrapper*)>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, cpp11::environment) + 1236
#> 27 _duckdb_rapi_prepare + 260
#> 28 R_doDotCall + 1588
#> 29 bcEval_loop + 128100
#> 30 bcEval + 684
#> 31 Rf_eval + 556
#> 32 forcePromise + 232
#> 33 Rf_eval + 660
#> 34 forcePromise + 232
#> 35 bcEval_loop + 19728
#> 36 bcEval + 684
#> 37 Rf_eval + 556
#> 38 R_execClosure + 812
#> 39 applyClosure_core + 164
#> 40 Rf_eval + 1224
#> 41 forcePromise + 232
#> 42 bcEval_loop + 19728
#> 43 bcEval + 684
#> 44 Rf_eval + 556
#> 45 R_execClosure + 812
#> 46 applyClosure_core + 164
#> 47 Rf_eval + 1224
#> 48 ffi_try_fetch + 832
#> 49 do_External + 300
#> 50 bcEval_loop + 40204
#> 51 bcEval + 684
#> 52 Rf_eval + 556
#> 53 R_execClosure + 812
#> 54 applyClosure_core + 164
#> 55 Rf_eval + 1224
#> 56 do_set + 360
#> 57 Rf_eval + 1012
#> 58 do_begin + 396
#> 59 Rf_eval + 1012
#> 60 R_execClosure + 812
#> 61 applyClosure_core + 164
#> 62 bcEval_loop + 37320
#> 63 bcEval + 684
#> 64 Rf_eval + 556
#> 65 R_execClosure + 812
#> 66 R_execMethod + 668
#> 67 R_dispatchGeneric + 2408
#> 68 do_standardGeneric + 440
#> 69 bcEval_loop + 37744
#> 70 bcEval + 684
#> 71 Rf_eval + 556
#> 72 R_execClosure + 812
#> 73 applyClosure_core + 164
#> 74 Rf_applyClosure + 12
#> 75 dispatchMethod + 1228
#> 76 Rf_usemethod + 520
#> 77 do_usemethod + 596
#> 78 bcEval_loop + 40764
#> 79 bcEval + 684
#> 80 Rf_eval + 556
#> 81 R_execClosure + 812
#> 82 applyClosure_core + 164
#> 83 Rf_applyClosure + 12
#> 84 dispatchMethod + 1228
#> 85 Rf_usemethod + 520
#> 86 do_usemethod + 596
#> 87 bcEval_loop + 40764
#> 88 bcEval + 684
#> 89 Rf_eval + 556
#> 90 R_execClosure + 812
#> 91 applyClosure_core + 164
#> 92 Rf_applyClosure + 12
#> 93 dispatchMethod + 1228
#> 94 Rf_usemethod + 520
#> 95 do_usemethod + 596
#> 96 bcEval_loop + 40764
#> 97 bcEval + 684
#> 98 Rf_eval + 556
#> 99 R_execClosure + 812
#> 100 applyClosure_core + 164
#> 101 Rf_applyClosure + 12
#> 102 dispatchMethod + 1228
#> 103 Rf_usemethod + 520
#> 104 do_usemethod + 596
#> 105 bcEval_loop + 40764
#> 106 bcEval + 684
#> 107 Rf_eval + 556
#> 108 R_execClosure + 812
#> 109 applyClosure_core + 164
#> 110 Rf_applyClosure + 12
#> 111 dispatchMethod + 1228
#> 112 Rf_usemethod + 520
#> 113 do_usemethod + 596
#> 114 bcEval_loop + 40764
#> 115 bcEval + 684
#> 116 Rf_eval + 556
#> 117 forcePromise + 232
#>
#> This error signals an assertion failure within DuckDB. This usually occurs due to unexpected conditions or errors in the program's logic.
#> For more information, see https://duckdb.org/docs/stable/dev/internal_errors
#> ℹ Context: rapi_prepare
#> ℹ Error type: INTERNAL
```
<sup>Created on 2026-03-21 with [reprex v2.1.1](https://reprex.tidyverse.org)</sup>
0 条评论