2
0

Fix Scanner that does not read entire value

This commit is contained in:
Jack Christensen
2015-04-09 17:46:58 -05:00
parent e511c267de
commit 879ca97228
2 changed files with 10 additions and 10 deletions
+1
View File
@@ -153,6 +153,7 @@ func (rows *Rows) Next() bool {
rows.rowCount++ rows.rowCount++
rows.columnIdx = 0 rows.columnIdx = 0
rows.vr = ValueReader{}
for { for {
t, r, err := rows.conn.rxMsg() t, r, err := rows.conn.rxMsg()
+9 -10
View File
@@ -223,31 +223,30 @@ func TestArrayDecoding(t *testing.T) {
} }
} }
type buggyScanner struct {} type shortScanner struct{}
func (*buggyScanner) Scan(r *pgx.ValueReader) error { func (*shortScanner) Scan(r *pgx.ValueReader) error {
r.ReadInt32() r.ReadByte()
return nil return nil
} }
func TestBuggyScanner(t *testing.T) { func TestShortScanner(t *testing.T) {
t.Parallel() t.Parallel()
conn := mustConnect(t, *defaultConnConfig) conn := mustConnect(t, *defaultConnConfig)
defer closeConn(t, conn) 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 { if err != nil {
t.Errorf(`error retrieving rows with array: %v`, err) t.Error(err)
} }
defer rows.Close() defer rows.Close()
for rows.Next() { for rows.Next() {
var s string var s1, s2 shortScanner
var b buggyScanner err = rows.Scan(&s1, &s2)
err = rows.Scan(&s, &b)
if err != nil { if err != nil {
t.Errorf(`error reading array: %v`, err) t.Error(err)
} }
} }