@@ -98,6 +98,7 @@ const StatementParams = Union{PositionalStatementParams, NamedStatementParams}
98
98
DBInterface.execute(conn::DBInterface.Connection, sql::AbstractString, [params]) => DBInterface.Cursor
99
99
DBInterface.execute(stmt::DBInterface.Statement, [params]) => DBInterface.Cursor
100
100
DBInterface.execute(f::Callable, conn::DBInterface.Connection, sql::AbstractString, [params])
101
+ DBInterface.execute(f::Callable, stmt::DBInterface.Statement, [params])
101
102
102
103
Database packages should overload `DBInterface.execute` for a valid, prepared `DBInterface.Statement` subtype (the first method
103
104
signature is defined in DBInterface.jl using `DBInterface.prepare`), which takes an optional `params` argument, which should be
@@ -120,11 +121,19 @@ function execute end
120
121
121
122
execute (conn:: Connection , sql:: AbstractString , params) = execute (prepare (conn, sql), params)
122
123
124
+ function execute (f:: Base.Callable , stmt:: Statement , params)
125
+ cursor = execute (stmt, params)
126
+ try
127
+ return f (cursor)
128
+ finally
129
+ close! (cursor)
130
+ end
131
+ end
132
+
123
133
function execute (f:: Base.Callable , conn:: Connection , sql:: AbstractString , params)
124
134
stmt = prepare (conn, sql)
125
135
try
126
- cursor = execute (stmt, params)
127
- return f (cursor)
136
+ return execute (f, stmt, params)
128
137
finally
129
138
close! (stmt)
130
139
end
134
143
execute (stmt:: Statement ; kwargs... ) = execute (stmt, kwargs. data)
135
144
execute (conn:: Connection , sql:: AbstractString ; kwargs... ) = execute (conn, sql, kwargs. data)
136
145
execute (f:: Base.Callable , conn:: Connection , sql:: AbstractString ; kwargs... ) = execute (f, conn, sql, kwargs. data)
146
+ execute (f:: Base.Callable , stmt:: Statement ; kwargs... ) = execute (f, stmt, kwargs. data)
137
147
138
148
struct LazyIndex{T} <: AbstractVector{Any}
139
149
x:: T
0 commit comments