@@ -110,6 +110,8 @@ func (o *stdConnOpener) Connect(ctx context.Context) (_ driver.Conn, err error)
110
110
return nil , err
111
111
}
112
112
113
+ var _ driver.Connector = (* stdConnOpener )(nil )
114
+
113
115
func init () {
114
116
var debugf = func (format string , v ... any ) {}
115
117
sql .Register ("clickhouse" , & stdDriver {debugf : debugf })
@@ -196,6 +198,12 @@ type stdDriver struct {
196
198
debugf func (format string , v ... any )
197
199
}
198
200
201
+ var _ driver.Conn = (* stdDriver )(nil )
202
+ var _ driver.ConnBeginTx = (* stdDriver )(nil )
203
+ var _ driver.ExecerContext = (* stdDriver )(nil )
204
+ var _ driver.QueryerContext = (* stdDriver )(nil )
205
+ var _ driver.ConnPrepareContext = (* stdDriver )(nil )
206
+
199
207
func (std * stdDriver ) Open (dsn string ) (_ driver.Conn , err error ) {
200
208
var opt Options
201
209
if err := opt .fromDSN (dsn ); err != nil {
@@ -211,6 +219,8 @@ func (std *stdDriver) Open(dsn string) (_ driver.Conn, err error) {
211
219
return (& stdConnOpener {opt : o , debugf : debugf }).Connect (context .Background ())
212
220
}
213
221
222
+ var _ driver.Driver = (* stdDriver )(nil )
223
+
214
224
func (std * stdDriver ) ResetSession (ctx context.Context ) error {
215
225
if std .conn .isBad () {
216
226
std .debugf ("Resetting session because connection is bad" )
@@ -219,9 +229,16 @@ func (std *stdDriver) ResetSession(ctx context.Context) error {
219
229
return nil
220
230
}
221
231
232
+ var _ driver.SessionResetter = (* stdDriver )(nil )
233
+
222
234
func (std * stdDriver ) Ping (ctx context.Context ) error { return std .conn .ping (ctx ) }
223
235
236
+ var _ driver.Pinger = (* stdDriver )(nil )
237
+
224
238
func (std * stdDriver ) Begin () (driver.Tx , error ) { return std , nil }
239
+ func (std * stdDriver ) BeginTx (ctx context.Context , opts driver.TxOptions ) (driver.Tx , error ) {
240
+ return std , nil
241
+ }
225
242
226
243
func (std * stdDriver ) Commit () error {
227
244
if std .commit == nil {
@@ -248,8 +265,12 @@ func (std *stdDriver) Rollback() error {
248
265
return nil
249
266
}
250
267
268
+ var _ driver.Tx = (* stdDriver )(nil )
269
+
251
270
func (std * stdDriver ) CheckNamedValue (nv * driver.NamedValue ) error { return nil }
252
271
272
+ var _ driver.NamedValueChecker = (* stdDriver )(nil )
273
+
253
274
func (std * stdDriver ) ExecContext (ctx context.Context , query string , args []driver.NamedValue ) (driver.Result , error ) {
254
275
if options := queryOptions (ctx ); options .async .ok {
255
276
return driver .RowsAffected (0 ), std .conn .asyncInsert (ctx , query , options .async .wait , rebind (args )... )
@@ -340,7 +361,10 @@ func (s *stdBatch) ExecContext(ctx context.Context, args []driver.NamedValue) (d
340
361
return s .Exec (values )
341
362
}
342
363
364
+ var _ driver.StmtExecContext = (* stdBatch )(nil )
365
+
343
366
func (s * stdBatch ) Query (args []driver.Value ) (driver.Rows , error ) {
367
+ // Note: not implementing driver.StmtQueryContext accordingly
344
368
return nil , errors .New ("only Exec method supported in batch mode" )
345
369
}
346
370
@@ -359,6 +383,8 @@ func (r *stdRows) ColumnTypeScanType(idx int) reflect.Type {
359
383
return r .rows .block .Columns [idx ].ScanType ()
360
384
}
361
385
386
+ var _ driver.RowsColumnTypeScanType = (* stdRows )(nil )
387
+
362
388
func (r * stdRows ) ColumnTypeDatabaseTypeName (idx int ) string {
363
389
return string (r .rows .block .Columns [idx ].Type ())
364
390
}
@@ -381,6 +407,12 @@ func (r *stdRows) ColumnTypePrecisionScale(idx int) (precision, scale int64, ok
381
407
return 0 , 0 , false
382
408
}
383
409
410
+ var _ driver.Rows = (* stdRows )(nil )
411
+ var _ driver.RowsNextResultSet = (* stdRows )(nil )
412
+ var _ driver.RowsColumnTypeDatabaseTypeName = (* stdRows )(nil )
413
+ var _ driver.RowsColumnTypeNullable = (* stdRows )(nil )
414
+ var _ driver.RowsColumnTypePrecisionScale = (* stdRows )(nil )
415
+
384
416
func (r * stdRows ) Next (dest []driver.Value ) error {
385
417
if len (r .rows .block .Columns ) != len (dest ) {
386
418
err := fmt .Errorf ("expected %d destination arguments in Next, not %d" , len (r .rows .block .Columns ), len (dest ))
@@ -429,10 +461,14 @@ func (r *stdRows) NextResultSet() error {
429
461
return nil
430
462
}
431
463
464
+ var _ driver.RowsNextResultSet = (* stdRows )(nil )
465
+
432
466
func (r * stdRows ) Close () error {
433
467
err := r .rows .Close ()
434
468
if err != nil {
435
469
r .debugf ("Rows Close error: %v\n " , err )
436
470
}
437
471
return err
438
472
}
473
+
474
+ var _ driver.Rows = (* stdRows )(nil )
0 commit comments