Skip to content

Commit 2bb1195

Browse files
committed
Remove some old Go version specific logic
This fork doesn't aim at supporting very old Go versions, so the logic that existed to keep the implementation backwards compatible with those old Go versions was removed.
1 parent 44f026d commit 2bb1195

12 files changed

Lines changed: 236 additions & 281 deletions

conn.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ var (
2020
_ driver.Pinger = wrappedConn{}
2121
_ driver.Queryer = wrappedConn{}
2222
_ driver.QueryerContext = wrappedConn{}
23+
_ driver.NamedValueChecker = wrappedConn{}
24+
_ driver.SessionResetter = wrappedConn{}
2325
)
2426

2527
func (c wrappedConn) Prepare(query string) (driver.Stmt, error) {
@@ -179,3 +181,35 @@ func (c wrappedParentConn) QueryContext(ctx context.Context, query string, args
179181
return c.Conn.(driver.Queryer).Query(query, dargs)
180182
}
181183
}
184+
185+
func defaultCheckNamedValue(nv *driver.NamedValue) (err error) {
186+
nv.Value, err = driver.DefaultParameterConverter.ConvertValue(nv.Value)
187+
return err
188+
}
189+
190+
func (c wrappedConn) CheckNamedValue(v *driver.NamedValue) error {
191+
if checker, ok := c.parent.(driver.NamedValueChecker); ok {
192+
return checker.CheckNamedValue(v)
193+
}
194+
195+
return defaultCheckNamedValue(v)
196+
}
197+
198+
func (c wrappedConn) ResetSession(ctx context.Context) error {
199+
conn, ok := c.parent.(driver.SessionResetter)
200+
if !ok {
201+
return nil
202+
}
203+
204+
return conn.ResetSession(ctx)
205+
}
206+
207+
func (c wrappedConn) IsValid() bool {
208+
conn, ok := c.parent.(driver.Validator)
209+
if !ok {
210+
// the default if driver.Validator is not supported
211+
return true
212+
}
213+
214+
return conn.IsValid()
215+
}

conn_go110.go

Lines changed: 0 additions & 19 deletions
This file was deleted.

conn_go115.go

Lines changed: 0 additions & 19 deletions
This file was deleted.

conn_go19.go

Lines changed: 0 additions & 22 deletions
This file was deleted.

connector.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
// +build go1.10
2-
31
package sqlmw
42

53
import (

connector_test.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
// +build go1.10
2-
31
package sqlmw
42

53
import (

driver.go

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,16 @@ package sqlmw
22

33
import "database/sql/driver"
44

5-
// driver wraps a sql.Driver with an interceptor.
5+
// wrappedDriver wraps a sql.Driver with an interceptor.
66
type wrappedDriver struct {
77
intr Interceptor
88
parent driver.Driver
99
}
1010

1111
// Compile time validation that our types implement the expected interfaces
1212
var (
13-
_ driver.Driver = wrappedDriver{}
13+
_ driver.Driver = wrappedDriver{}
14+
_ driver.DriverContext = wrappedDriver{}
1415
)
1516

1617
// WrapDriver will wrap the passed SQL driver and return a new sql driver that uses it and also logs and traces calls using the passed logger and tracer
@@ -36,3 +37,21 @@ func (d wrappedDriver) Open(name string) (driver.Conn, error) {
3637

3738
return wrappedConn{intr: d.intr, parent: conn}, nil
3839
}
40+
41+
// OpenConnector implements the database/sql/driver.Driver interface for WrappedDriver.
42+
func (d wrappedDriver) OpenConnector(name string) (driver.Connector, error) {
43+
driver, ok := d.parent.(driver.DriverContext)
44+
if !ok {
45+
return wrappedConnector{
46+
parent: dsnConnector{dsn: name, driver: d.parent},
47+
driverRef: &d,
48+
}, nil
49+
}
50+
51+
conn, err := driver.OpenConnector(name)
52+
if err != nil {
53+
return nil, err
54+
}
55+
56+
return wrappedConnector{parent: conn, driverRef: &d}, nil
57+
}

driver_go110.go

Lines changed: 0 additions & 23 deletions
This file was deleted.

stmt.go

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,11 @@ type wrappedStmt struct {
1515

1616
// Compile time validation that our types implement the expected interfaces
1717
var (
18-
_ driver.Stmt = wrappedStmt{}
19-
_ driver.StmtExecContext = wrappedStmt{}
20-
_ driver.StmtQueryContext = wrappedStmt{}
21-
_ driver.ColumnConverter = wrappedStmt{}
18+
_ driver.Stmt = wrappedStmt{}
19+
_ driver.StmtExecContext = wrappedStmt{}
20+
_ driver.StmtQueryContext = wrappedStmt{}
21+
_ driver.ColumnConverter = wrappedStmt{}
22+
_ driver.NamedValueChecker = wrappedStmt{}
2223
)
2324

2425
func (s wrappedStmt) Close() (err error) {
@@ -108,3 +109,15 @@ func (s wrappedParentStmt) ExecContext(ctx context.Context, args []driver.NamedV
108109
}
109110
return s.Exec(dargs)
110111
}
112+
113+
func (s wrappedStmt) CheckNamedValue(v *driver.NamedValue) error {
114+
if checker, ok := s.parent.(driver.NamedValueChecker); ok {
115+
return checker.CheckNamedValue(v)
116+
}
117+
118+
if checker, ok := s.conn.parent.(driver.NamedValueChecker); ok {
119+
return checker.CheckNamedValue(v)
120+
}
121+
122+
return defaultCheckNamedValue(v)
123+
}

stmt_go19.go

Lines changed: 0 additions & 17 deletions
This file was deleted.

0 commit comments

Comments
 (0)