Skip to content

Commit bcd1551

Browse files
committed
Make SessionResetter changes conditional compiled in go1.10+
1 parent 11efd5e commit bcd1551

File tree

5 files changed

+67
-29
lines changed

5 files changed

+67
-29
lines changed

sqlhooks.go

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -235,16 +235,6 @@ type SessionResetter struct {
235235
*Conn
236236
}
237237

238-
func isSessionResetter(conn driver.Conn) bool {
239-
_, ok := conn.(driver.SessionResetter)
240-
return ok
241-
}
242-
243-
func (s *SessionResetter) ResetSession(ctx context.Context) error {
244-
c := s.Conn.Conn.(driver.SessionResetter)
245-
return c.ResetSession(ctx)
246-
}
247-
248238
// Stmt implements a database/sql/driver.Stmt
249239
type Stmt struct {
250240
Stmt driver.Stmt

sqlhooks_1_10.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// +build go1.10
2+
3+
package sqlhooks
4+
5+
import (
6+
"context"
7+
"database/sql/driver"
8+
)
9+
10+
func isSessionResetter(conn driver.Conn) bool {
11+
_, ok := conn.(driver.SessionResetter)
12+
return ok
13+
}
14+
15+
func (s *SessionResetter) ResetSession(ctx context.Context) error {
16+
c := s.Conn.Conn.(driver.SessionResetter)
17+
return c.ResetSession(ctx)
18+
}

sqlhooks_1_10_interface_test.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// +build go1.10
2+
3+
package sqlhooks
4+
5+
import "database/sql/driver"
6+
7+
func init() {
8+
interfaceTestCases = append(interfaceTestCases,
9+
struct {
10+
name string
11+
expectedInterfaces []interface{}
12+
}{
13+
"ExecerQueryerContextSessionResetter", []interface{}{
14+
(*driver.ExecerContext)(nil),
15+
(*driver.QueryerContext)(nil),
16+
(*driver.SessionResetter)(nil)}})
17+
}

sqlhooks_interface_test.go

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,20 @@ import (
1010
"github.com/stretchr/testify/require"
1111
)
1212

13+
var interfaceTestCases = []struct {
14+
name string
15+
expectedInterfaces []interface{}
16+
}{
17+
{"Basic", []interface{}{(*driver.Conn)(nil)}},
18+
{"Execer", []interface{}{(*driver.Execer)(nil)}},
19+
{"ExecerContext", []interface{}{(*driver.ExecerContext)(nil)}},
20+
{"Queryer", []interface{}{(*driver.QueryerContext)(nil)}},
21+
{"QueryerContext", []interface{}{(*driver.QueryerContext)(nil)}},
22+
{"ExecerQueryerContext", []interface{}{
23+
(*driver.ExecerContext)(nil),
24+
(*driver.QueryerContext)(nil)}},
25+
}
26+
1327
type fakeDriver struct{}
1428

1529
func (d *fakeDriver) Open(dsn string) (driver.Conn, error) {
@@ -100,25 +114,7 @@ func (*FakeConnSessionResetter) ResetSession(ctx context.Context) error {
100114
func TestInterfaces(t *testing.T) {
101115
drv := Wrap(&fakeDriver{}, &testHooks{})
102116

103-
cases := []struct {
104-
name string
105-
expectedInterfaces []interface{}
106-
}{
107-
{"Basic", []interface{}{(*driver.Conn)(nil)}},
108-
{"Execer", []interface{}{(*driver.Execer)(nil)}},
109-
{"ExecerContext", []interface{}{(*driver.ExecerContext)(nil)}},
110-
{"Queryer", []interface{}{(*driver.QueryerContext)(nil)}},
111-
{"QueryerContext", []interface{}{(*driver.QueryerContext)(nil)}},
112-
{"ExecerQueryerContext", []interface{}{
113-
(*driver.ExecerContext)(nil),
114-
(*driver.QueryerContext)(nil)}},
115-
{"ExecerQueryerContextSessionResetter", []interface{}{
116-
(*driver.ExecerContext)(nil),
117-
(*driver.QueryerContext)(nil),
118-
(*driver.SessionResetter)(nil)}},
119-
}
120-
121-
for _, c := range cases {
117+
for _, c := range interfaceTestCases {
122118
conn, err := drv.Open(c.name)
123119
require.NoErrorf(t, err, "Driver name %s", c.name)
124120

sqlhooks_pre_1_10.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// +build !go1.10
2+
3+
package sqlhooks
4+
5+
import (
6+
"context"
7+
"database/sql/driver"
8+
"errors"
9+
)
10+
11+
func isSessionResetter(conn driver.Conn) bool {
12+
return false
13+
}
14+
15+
func (s *SessionResetter) ResetSession(ctx context.Context) error {
16+
return errors.New("SessionResetter not implemented")
17+
}

0 commit comments

Comments
 (0)