-
Notifications
You must be signed in to change notification settings - Fork 14
Open
Description
Based on the limited documentation in the README, I thought using named parameters in the following way would work. I am not sure if this is a bug or if the named parameters feature is not capable of doing this. The error, which occurs when calling DBInterface.prepare as shown below, is pasted after the MWE.
using DuckDB, DataFrames
con = DBInterface.connect(DuckDB.DB, ":memory:")
DBInterface.execute(con, """
CREATE TABLE tab (
name TEXT PRIMARY KEY,
data INTEGER
);
""")
DBInterface.execute(con, """
INSERT INTO tab VALUES
('a', 5),
('b', 10);
""")
DBInterface.execute(con, "SELECT * FROM tab;") |> DataFrame
# fails
stmt = DBInterface.prepare(con, """
UPDATE tab
SET data = :dat
WHERE name IN :names;
""")
DBInterface.execute(stmt, (dat=50, names=["b"]))
# works
stmt = DBInterface.prepare(con, """
UPDATE tab
SET data = ?
WHERE name IN ?;
""")
DBInterface.execute(stmt, [50, ["b"]])
DBInterface.execute(con, "SELECT * FROM tab;") |> DataFrameError from DBInterface.prepare:
ERROR: Parser Error: syntax error at or near ":"
LINE 2: SET data = :dat
^
Stacktrace:
[1] DuckDB.Stmt(con::DuckDB.Connection, sql::String, result_type::Type)
@ DuckDB ~/.julia/packages/DuckDB/SPkZM/src/statement.jl:18
[2] prepare
@ ~/.julia/packages/DuckDB/SPkZM/src/result.jl:853 [inlined]
[3] prepare
@ ~/.julia/packages/DuckDB/SPkZM/src/result.jl:854 [inlined]
[4] prepare(db::DuckDB.DB, sql::String)
@ DuckDB ~/.julia/packages/DuckDB/SPkZM/src/result.jl:855
[5] top-level scope
@ ~/Desktop/misc/dbupdate.jl:20Metadata
Metadata
Assignees
Labels
No labels