Added Select to process rows as they come over the wire

This was accomplished by promoting private query function to
public Select.

fixes #12
pgx-vs-pq
Jack Christensen 2013-04-19 16:10:14 -05:00
parent 6be77b4d64
commit 9a5c299563
2 changed files with 27 additions and 9 deletions

18
conn.go
View File

@ -90,7 +90,7 @@ func (c *Connection) Close() (err error) {
return
}
func (c *Connection) query(sql string, onDataRow func(*messageReader, []fieldDescription) error) (err error) {
func (c *Connection) Select(sql string, onDataRow func(*messageReader, []fieldDescription) error) (err error) {
if err = c.sendSimpleQuery(sql); err != nil {
return
}
@ -134,7 +134,7 @@ func (c *Connection) Query(sql string) (rows []map[string]string, err error) {
rows = append(rows, c.rxDataRow(r, fields))
return nil
}
err = c.query(sql, onDataRow)
err = c.Select(sql, onDataRow)
return
}
@ -143,7 +143,7 @@ func (c *Connection) SelectString(sql string) (s string, err error) {
s = c.rxDataRowFirstValue(r)
return nil
}
err = c.query(sql, onDataRow)
err = c.Select(sql, onDataRow)
return
}
@ -204,7 +204,7 @@ func (c *Connection) SelectAllString(sql string) (strings []string, err error) {
strings = append(strings, c.rxDataRowFirstValue(r))
return nil
}
err = c.query(sql, onDataRow)
err = c.Select(sql, onDataRow)
return
}
@ -216,7 +216,7 @@ func (c *Connection) SelectAllInt64(sql string) (ints []int64, err error) {
ints = append(ints, i)
return
}
err = c.query(sql, onDataRow)
err = c.Select(sql, onDataRow)
return
}
@ -228,7 +228,7 @@ func (c *Connection) SelectAllInt32(sql string) (ints []int32, err error) {
ints = append(ints, int32(i))
return
}
err = c.query(sql, onDataRow)
err = c.Select(sql, onDataRow)
return
}
@ -240,7 +240,7 @@ func (c *Connection) SelectAllInt16(sql string) (ints []int16, err error) {
ints = append(ints, int16(i))
return
}
err = c.query(sql, onDataRow)
err = c.Select(sql, onDataRow)
return
}
@ -252,7 +252,7 @@ func (c *Connection) SelectAllFloat64(sql string) (floats []float64, err error)
floats = append(floats, f)
return
}
err = c.query(sql, onDataRow)
err = c.Select(sql, onDataRow)
return
}
@ -264,7 +264,7 @@ func (c *Connection) SelectAllFloat32(sql string) (floats []float32, err error)
floats = append(floats, float32(f))
return
}
err = c.query(sql, onDataRow)
err = c.Select(sql, onDataRow)
return
}

View File

@ -115,6 +115,24 @@ func TestExecute(t *testing.T) {
}
}
func TestSelect(t *testing.T) {
conn := getSharedConnection()
rowCount := 0
onDataRow := func(r *messageReader, fields []fieldDescription) error {
rowCount++
return nil
}
err := conn.Select("select generate_series(1,10)", onDataRow)
if err != nil {
t.Fatal("Select failed: " + err.Error())
}
if rowCount != 10 {
t.Fatal("Select called onDataRow wrong number of times")
}
}
func TestQuery(t *testing.T) {
conn := getSharedConnection()