Fix Scanner that does not read entire value

pull/79/head
Jack Christensen 2015-04-09 17:46:58 -05:00
parent e511c267de
commit 879ca97228
2 changed files with 10 additions and 10 deletions

View File

@ -153,6 +153,7 @@ func (rows *Rows) Next() bool {
rows.rowCount++
rows.columnIdx = 0
rows.vr = ValueReader{}
for {
t, r, err := rows.conn.rxMsg()

View File

@ -223,31 +223,30 @@ func TestArrayDecoding(t *testing.T) {
}
}
type buggyScanner struct {}
type shortScanner struct{}
func (*buggyScanner) Scan(r *pgx.ValueReader) error {
r.ReadInt32()
func (*shortScanner) Scan(r *pgx.ValueReader) error {
r.ReadByte()
return nil
}
func TestBuggyScanner(t *testing.T) {
func TestShortScanner(t *testing.T) {
t.Parallel()
conn := mustConnect(t, *defaultConnConfig)
defer closeConn(t, conn)
rows, err := conn.Query("select 'tevvvvvzvzst', array[]::text[] union select 'ko', array[]::text[]")
rows, err := conn.Query("select 'ab', 'cd' union select 'cd', 'ef'")
if err != nil {
t.Errorf(`error retrieving rows with array: %v`, err)
t.Error(err)
}
defer rows.Close()
for rows.Next() {
var s string
var b buggyScanner
err = rows.Scan(&s, &b)
var s1, s2 shortScanner
err = rows.Scan(&s1, &s2)
if err != nil {
t.Errorf(`error reading array: %v`, err)
t.Error(err)
}
}