Connect via TCP

fixes #15
pgx-vs-pq
Jack Christensen 2013-04-23 08:15:05 -05:00
parent 460acd7757
commit d1a56c95d2
2 changed files with 24 additions and 9 deletions

View File

@ -12,6 +12,8 @@ import (
type ConnectionParameters struct {
socket string // path to unix domain socket (e.g. /private/tmp/.s.PGSQL.5432)
host string
port uint16 // default: 5432
database string
user string
password string
@ -27,28 +29,29 @@ type Connection struct {
txStatus byte
}
// options:
// socket: path to unix domain socket
// host: TCP address
// port:
// database: name of database
func Connect(paramaters ConnectionParameters) (c *Connection, err error) {
func Connect(parameters ConnectionParameters) (c *Connection, err error) {
c = new(Connection)
c.parameters = paramaters
c.parameters = parameters
if c.parameters.port == 0 {
c.parameters.port = 5432
}
if c.parameters.socket != "" {
c.conn, err = net.Dial("unix", c.parameters.socket)
if err != nil {
return nil, err
}
} else if c.parameters.host != "" {
c.conn, err = net.Dial("tcp", fmt.Sprintf("%s:%d", c.parameters.host, c.parameters.port))
if err != nil {
return nil, err
}
}
c.buf = make([]byte, 1024)
c.runtimeParams = make(map[string]string)
// conn, err := net.Dial("tcp", "localhost:5432")
msg := newStartupMessage()
msg.options["user"] = c.parameters.user
if c.parameters.database != "" {

View File

@ -53,6 +53,18 @@ func TestConnect(t *testing.T) {
}
}
func TestConnectWithTcp(t *testing.T) {
conn, err := Connect(ConnectionParameters{host: "127.0.0.1", user: "pgx_md5", password: "secret", database: "pgx_test"})
if err != nil {
t.Fatal("Unable to establish connection: " + err.Error())
}
err = conn.Close()
if err != nil {
t.Fatal("Unable to close connection")
}
}
func TestConnectWithInvalidUser(t *testing.T) {
_, err := Connect(ConnectionParameters{socket: "/private/tmp/.s.PGSQL.5432", user: "invalid_user", database: "pgx_test"})
pgErr := err.(PgError)