@@ -3,6 +3,7 @@ package duckdb
3
3
import (
4
4
"context"
5
5
"database/sql"
6
+ "database/sql/driver"
6
7
"errors"
7
8
"testing"
8
9
@@ -56,6 +57,27 @@ func TestPrepareQuery(t *testing.T) {
56
57
require .ErrorContains (t , err , paramIndexErrMsg )
57
58
require .Equal (t , TYPE_INVALID , paramType )
58
59
60
+ rows , err := stmt .QueryBound (context .Background ())
61
+ require .Nil (t , rows )
62
+ require .ErrorIs (t , err , errNotBound )
63
+
64
+ err = stmt .Bind ([]driver.NamedValue {{Ordinal : 1 , Value : 0 }})
65
+ require .NoError (t , err )
66
+
67
+ rows , err = stmt .QueryBound (context .Background ())
68
+ require .NoError (t , err )
69
+ require .NotNil (t , rows )
70
+
71
+ badRows , err := stmt .QueryBound (context .Background ())
72
+ require .ErrorIs (t , err , errActiveRows )
73
+ require .Nil (t , badRows )
74
+
75
+ badResults , err := stmt .ExecBound (context .Background ())
76
+ require .ErrorIs (t , err , errActiveRows )
77
+ require .Nil (t , badResults )
78
+
79
+ require .NoError (t , rows .Close ())
80
+
59
81
require .NoError (t , stmt .Close ())
60
82
61
83
stmtType , err = stmt .StatementType ()
@@ -66,6 +88,10 @@ func TestPrepareQuery(t *testing.T) {
66
88
require .ErrorIs (t , err , errClosedStmt )
67
89
require .Equal (t , TYPE_INVALID , paramType )
68
90
91
+ err = stmt .Bind ([]driver.NamedValue {{Ordinal : 1 , Value : 0 }})
92
+ require .ErrorIs (t , err , errCouldNotBind )
93
+ require .ErrorIs (t , err , errClosedStmt )
94
+
69
95
return nil
70
96
})
71
97
require .NoError (t , err )
@@ -146,6 +172,17 @@ func TestPrepareQueryPositional(t *testing.T) {
146
172
require .ErrorContains (t , err , paramIndexErrMsg )
147
173
require .Equal (t , TYPE_INVALID , paramType )
148
174
175
+ result , err := stmt .ExecBound (context .Background ())
176
+ require .Nil (t , result )
177
+ require .ErrorIs (t , err , errNotBound )
178
+
179
+ err = stmt .Bind ([]driver.NamedValue {{Ordinal : 1 , Value : 0 }, {Ordinal : 2 , Value : "hello" }})
180
+ require .NoError (t , err )
181
+
182
+ result , err = stmt .ExecBound (context .Background ())
183
+ require .NoError (t , err )
184
+ require .NotNil (t , result )
185
+
149
186
require .NoError (t , stmt .Close ())
150
187
151
188
stmtType , err = stmt .StatementType ()
@@ -160,6 +197,10 @@ func TestPrepareQueryPositional(t *testing.T) {
160
197
require .ErrorIs (t , err , errClosedStmt )
161
198
require .Equal (t , TYPE_INVALID , paramType )
162
199
200
+ err = stmt .Bind ([]driver.NamedValue {{Ordinal : 1 , Value : 0 }, {Ordinal : 2 , Value : "hello" }})
201
+ require .ErrorIs (t , err , errCouldNotBind )
202
+ require .ErrorIs (t , err , errClosedStmt )
203
+
163
204
return nil
164
205
})
165
206
require .NoError (t , err )
@@ -245,6 +286,17 @@ func TestPrepareQueryNamed(t *testing.T) {
245
286
require .ErrorContains (t , err , paramIndexErrMsg )
246
287
require .Equal (t , TYPE_INVALID , paramType )
247
288
289
+ result , err := stmt .ExecBound (context .Background ())
290
+ require .Nil (t , result )
291
+ require .ErrorIs (t , err , errNotBound )
292
+
293
+ err = stmt .Bind ([]driver.NamedValue {{Name : "bar" , Value : "hello" }, {Name : "baz" , Value : 0 }})
294
+ require .NoError (t , err )
295
+
296
+ result , err = stmt .ExecBound (context .Background ())
297
+ require .NoError (t , err )
298
+ require .NotNil (t , result )
299
+
248
300
require .NoError (t , stmt .Close ())
249
301
250
302
stmtType , err = stmt .StatementType ()
@@ -259,6 +311,10 @@ func TestPrepareQueryNamed(t *testing.T) {
259
311
require .ErrorIs (t , err , errClosedStmt )
260
312
require .Equal (t , TYPE_INVALID , paramType )
261
313
314
+ err = stmt .Bind ([]driver.NamedValue {{Name : "bar" , Value : "hello" }, {Name : "baz" , Value : 0 }})
315
+ require .ErrorIs (t , err , errCouldNotBind )
316
+ require .ErrorIs (t , err , errClosedStmt )
317
+
262
318
return nil
263
319
})
264
320
require .NoError (t , err )
@@ -280,6 +336,13 @@ func TestUninitializedStmt(t *testing.T) {
280
336
paramName , err := stmt .ParamName (1 )
281
337
require .ErrorIs (t , err , errUninitializedStmt )
282
338
require .Equal (t , "" , paramName )
339
+
340
+ err = stmt .Bind ([]driver.NamedValue {{Ordinal : 1 , Value : 0 }})
341
+ require .ErrorIs (t , err , errCouldNotBind )
342
+ require .ErrorIs (t , err , errUninitializedStmt )
343
+
344
+ _ , err = stmt .ExecBound (context .Background ())
345
+ require .ErrorIs (t , err , errNotBound )
283
346
}
284
347
285
348
func TestPrepareWithError (t * testing.T ) {
0 commit comments