Skip to content

Commit a1572ee

Browse files
committed
Update Open func to support keepalive
Got rid of OpenConnector for simplicity's sake.
1 parent 51502e0 commit a1572ee

File tree

2 files changed

+46
-19
lines changed

2 files changed

+46
-19
lines changed

Diff for: conn.go

+5-7
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,6 @@ func (d *Driver) Open(name string) (driver.Conn, error) {
4848
return Open(name)
4949
}
5050

51-
// OpenConnector parses the name in the same format that Driver.Open
52-
// parses the name parameter.
53-
func (d *Driver) OpenConnector(name string) (driver.Connector, error) {
54-
return NewConnector(name)
55-
}
56-
5751
func init() {
5852
sql.Register("postgres", &Driver{})
5953
}
@@ -278,7 +272,11 @@ func (cn *conn) writeBuf(b byte) *writeBuf {
278272
// Most users should only use it through database/sql package from the standard
279273
// library.
280274
func Open(dsn string) (_ driver.Conn, err error) {
281-
return DialOpen(defaultDialer{}, dsn)
275+
c, err := NewConnector(dsn)
276+
if err != nil {
277+
return nil, err
278+
}
279+
return c.open(context.Background())
282280
}
283281

284282
// DialOpen opens a new connection to the database using a dialer.

Diff for: conn_test.go

+41-12
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,6 @@ import (
1414
"time"
1515
)
1616

17-
// testDriver is the Postgres database driver that doesn't implement DriverContext interface.
18-
type testDriver struct{}
19-
20-
func (d *testDriver) Open(name string) (driver.Conn, error) {
21-
return Open(name)
22-
}
23-
24-
func init() {
25-
sql.Register("postgres-test", &testDriver{})
26-
}
27-
2817
type Fatalistic interface {
2918
Fatal(args ...interface{})
3019
}
@@ -59,7 +48,7 @@ func testConninfo(conninfo string) string {
5948
}
6049

6150
func openTestConnConninfo(conninfo string) (*sql.DB, error) {
62-
return sql.Open("postgres-test", testConninfo(conninfo))
51+
return sql.Open("postgres", testConninfo(conninfo))
6352
}
6453

6554
func openTestConn(t Fatalistic) *sql.DB {
@@ -151,6 +140,46 @@ func TestOpenURL(t *testing.T) {
151140
testURL("postgresql://")
152141
}
153142

143+
func TestOpen(t *testing.T) {
144+
dsn := "keepalives_interval=10"
145+
c, err := Open(dsn)
146+
if err != nil {
147+
t.Fatal(err)
148+
}
149+
defer c.Close()
150+
151+
d := c.(*conn).dialer.(defaultDialer)
152+
want := 10 * time.Second
153+
if want != d.d.KeepAlive {
154+
t.Fatalf("expected: %v, got: %v", want, d.d.KeepAlive)
155+
}
156+
}
157+
158+
func TestSQLOpen(t *testing.T) {
159+
dsn := "keepalives_interval=10"
160+
db, err := sql.Open("postgres", dsn)
161+
if err != nil {
162+
t.Fatal(err)
163+
}
164+
defer db.Close()
165+
if err = db.Ping(); err != nil {
166+
t.Fatal(err)
167+
}
168+
169+
drv := db.Driver()
170+
c, err := drv.Open(dsn)
171+
if err != nil {
172+
t.Fatal(err)
173+
}
174+
defer c.Close()
175+
176+
d := c.(*conn).dialer.(defaultDialer)
177+
want := 10 * time.Second
178+
if want != d.d.KeepAlive {
179+
t.Fatalf("expected: %v, got: %v", want, d.d.KeepAlive)
180+
}
181+
}
182+
154183
const pgpassFile = "/tmp/pqgotest_pgpass"
155184

156185
func TestPgpass(t *testing.T) {

0 commit comments

Comments
 (0)