Skip to content

Conversation

era127
Copy link
Contributor

@era127 era127 commented Mar 4, 2025

Add support for appending duckdb List types.

Except Vector{UInt8} types are currently converted to BLOB and not UTINYINT[], which would be a breaking change.

…es are currently converted to BLOB and not UTINYINT[].
@era127 era127 changed the title Add support for appending duckdb List types [Julia] Add support for appending duckdb List types Mar 4, 2025
@duckdb-draftbot duckdb-draftbot marked this pull request as draft March 4, 2025 16:30
@era127 era127 marked this pull request as ready for review March 5, 2025 04:53
@Mytherin Mytherin merged commit b55ed25 into duckdb:main Mar 11, 2025
8 checks passed
@Mytherin
Copy link
Collaborator

Thanks!

Mytherin added a commit that referenced this pull request Mar 18, 2025
Hi DuckDB team!

I am submitting a very small PR to improve value binding to parameters
in prepared statements. This is especially important when using the SQL
`IN` operator, for example. I have tried to follow the contribution
guide, and included a small test.

Previously we could not bind vectors to parameters, the code in the
tests would fail (relevant snippet below). This PR fixes this behavior.

```julia
stmt = DBInterface.prepare(con, "FROM test_table WHERE i IN ?;")
results = DBInterface.execute(stmt, ([1,2], ))
df = DataFrame(results)
```

With the following error:

```julia
ERROR: unsupported type for bind
Stacktrace:
 [1] duckdb_bind_internal(stmt::DuckDB.Stmt, i::Int64, val::Vector{Int64})
   @ DuckDB ~/.julia/packages/DuckDB/vI6tj/src/statement.jl:72
 [2] bind_parameters(stmt::DuckDB.Stmt, params::Tuple{Vector{Int64}})
   @ DuckDB ~/.julia/packages/DuckDB/vI6tj/src/statement.jl:78
 [3] execute(stmt::DuckDB.Stmt, params::Tuple{Vector{Int64}})
   @ DuckDB ~/.julia/packages/DuckDB/vI6tj/src/result.jl:709
 [4] execute(stmt::DuckDB.Stmt, params::Tuple{Vector{Int64}})
   @ DuckDB ~/.julia/packages/DuckDB/vI6tj/src/result.jl:872
 [5] top-level scope
   @ ~/some-path-removed-for-security
```

Thanks to the new support for List types provided in
#16512 the same code now returns:

```julia
julia> df = DataFrame(results)
4×2 DataFrame
 Row │ i      j       
     │ Int32  Float64 
─────┼────────────────
   1 │     1      3.5
   2 │     2      0.5
   3 │     1      1.0
   4 │     2      2.0
```
krlmlr added a commit to duckdb/duckdb-r that referenced this pull request May 15, 2025
regex_replace no longer swallows regex errors (duckdb/duckdb#16380)
[PySpark] - Add  `expr` function (duckdb/duckdb#16468)
[Julia] Add support for appending duckdb List types (duckdb/duckdb#16512)
krlmlr added a commit to duckdb/duckdb-r that referenced this pull request May 15, 2025
regex_replace no longer swallows regex errors (duckdb/duckdb#16380)
[PySpark] - Add  `expr` function (duckdb/duckdb#16468)
[Julia] Add support for appending duckdb List types (duckdb/duckdb#16512)
krlmlr added a commit to duckdb/duckdb-r that referenced this pull request May 16, 2025
regex_replace no longer swallows regex errors (duckdb/duckdb#16380)
[PySpark] - Add  `expr` function (duckdb/duckdb#16468)
[Julia] Add support for appending duckdb List types (duckdb/duckdb#16512)
krlmlr added a commit to duckdb/duckdb-r that referenced this pull request May 17, 2025
regex_replace no longer swallows regex errors (duckdb/duckdb#16380)
[PySpark] - Add  `expr` function (duckdb/duckdb#16468)
[Julia] Add support for appending duckdb List types (duckdb/duckdb#16512)
krlmlr added a commit to duckdb/duckdb-r that referenced this pull request May 18, 2025
regex_replace no longer swallows regex errors (duckdb/duckdb#16380)
[PySpark] - Add  `expr` function (duckdb/duckdb#16468)
[Julia] Add support for appending duckdb List types (duckdb/duckdb#16512)
krlmlr added a commit to duckdb/duckdb-r that referenced this pull request May 18, 2025
regex_replace no longer swallows regex errors (duckdb/duckdb#16380)
[PySpark] - Add  `expr` function (duckdb/duckdb#16468)
[Julia] Add support for appending duckdb List types (duckdb/duckdb#16512)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants