ITADN

duckdb 1.5.0 breaks

#2276Opencatalamarti 创建于 2026-03-21
C
catalamarticommented
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 条评论