From f4e843a47981cbfb45f7df3515a6e7c7b5d2af2d Mon Sep 17 00:00:00 2001 From: DuckDB Labs GitHub Bot Date: Tue, 14 Oct 2025 05:47:50 +0000 Subject: [PATCH] Update vendored DuckDB sources to 50f3d64620 --- .../src/function/table/version/pragma_version.cpp | 6 +++--- .../src/include/duckdb/main/capi/capi_internal.hpp | 2 ++ .../src/include/duckdb/planner/bound_statement.hpp | 1 + src/duckdb/src/main/capi/prepared-c.cpp | 11 +++++++++-- src/duckdb/src/parallel/task_executor.cpp | 6 ++++-- 5 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/duckdb/src/function/table/version/pragma_version.cpp b/src/duckdb/src/function/table/version/pragma_version.cpp index 627a4b360..72c95b9f6 100644 --- a/src/duckdb/src/function/table/version/pragma_version.cpp +++ b/src/duckdb/src/function/table/version/pragma_version.cpp @@ -1,5 +1,5 @@ #ifndef DUCKDB_PATCH_VERSION -#define DUCKDB_PATCH_VERSION "2-dev56" +#define DUCKDB_PATCH_VERSION "2-dev63" #endif #ifndef DUCKDB_MINOR_VERSION #define DUCKDB_MINOR_VERSION 4 @@ -8,10 +8,10 @@ #define DUCKDB_MAJOR_VERSION 1 #endif #ifndef DUCKDB_VERSION -#define DUCKDB_VERSION "v1.4.2-dev56" +#define DUCKDB_VERSION "v1.4.2-dev63" #endif #ifndef DUCKDB_SOURCE_ID -#define DUCKDB_SOURCE_ID "f707ac5f0a" +#define DUCKDB_SOURCE_ID "50f3d64620" #endif #include "duckdb/function/table/system_functions.hpp" #include "duckdb/main/database.hpp" diff --git a/src/duckdb/src/include/duckdb/main/capi/capi_internal.hpp b/src/duckdb/src/include/duckdb/main/capi/capi_internal.hpp index 8307b70a3..3b736d88a 100644 --- a/src/duckdb/src/include/duckdb/main/capi/capi_internal.hpp +++ b/src/duckdb/src/include/duckdb/main/capi/capi_internal.hpp @@ -51,6 +51,8 @@ struct PreparedStatementWrapper { //! Map of name -> values case_insensitive_map_t values; unique_ptr statement; + bool success = true; + ErrorData error_data; }; struct ExtractStatementsWrapper { diff --git a/src/duckdb/src/include/duckdb/planner/bound_statement.hpp b/src/duckdb/src/include/duckdb/planner/bound_statement.hpp index bb1f7bfec..baa3fd610 100644 --- a/src/duckdb/src/include/duckdb/planner/bound_statement.hpp +++ b/src/duckdb/src/include/duckdb/planner/bound_statement.hpp @@ -9,6 +9,7 @@ #pragma once #include "duckdb/common/string.hpp" +#include "duckdb/common/unique_ptr.hpp" #include "duckdb/common/vector.hpp" namespace duckdb { diff --git a/src/duckdb/src/main/capi/prepared-c.cpp b/src/duckdb/src/main/capi/prepared-c.cpp index 28b2f011f..37f6f2355 100644 --- a/src/duckdb/src/main/capi/prepared-c.cpp +++ b/src/duckdb/src/main/capi/prepared-c.cpp @@ -88,7 +88,13 @@ duckdb_state duckdb_prepare(duckdb_connection connection, const char *query, const char *duckdb_prepare_error(duckdb_prepared_statement prepared_statement) { auto wrapper = reinterpret_cast(prepared_statement); - if (!wrapper || !wrapper->statement || !wrapper->statement->HasError()) { + if (!wrapper) { + return nullptr; + } + if (!wrapper->success) { + return wrapper->error_data.Message().c_str(); + } + if (!wrapper->statement || !wrapper->statement->HasError()) { return nullptr; } return wrapper->statement->error.Message().c_str(); @@ -229,9 +235,10 @@ duckdb_state duckdb_bind_value(duckdb_prepared_statement prepared_statement, idx return DuckDBError; } if (param_idx <= 0 || param_idx > wrapper->statement->named_param_map.size()) { - wrapper->statement->error = + wrapper->error_data = duckdb::InvalidInputException("Can not bind to parameter number %d, statement only has %d parameter(s)", param_idx, wrapper->statement->named_param_map.size()); + wrapper->success = false; return DuckDBError; } auto identifier = duckdb_parameter_name_internal(prepared_statement, param_idx); diff --git a/src/duckdb/src/parallel/task_executor.cpp b/src/duckdb/src/parallel/task_executor.cpp index fa2c0087c..9487a1427 100644 --- a/src/duckdb/src/parallel/task_executor.cpp +++ b/src/duckdb/src/parallel/task_executor.cpp @@ -69,8 +69,10 @@ TaskExecutionResult BaseExecutorTask::Execute(TaskExecutionMode mode) { return TaskExecutionResult::TASK_FINISHED; } try { - TaskNotifier task_notifier {executor.context}; - ExecuteTask(); + { + TaskNotifier task_notifier {executor.context}; + ExecuteTask(); + } executor.FinishTask(); return TaskExecutionResult::TASK_FINISHED; } catch (std::exception &ex) {