diff --git a/values_test.go b/values_test.go index a4c240ba..3f9fa023 100644 --- a/values_test.go +++ b/values_test.go @@ -223,6 +223,37 @@ func TestArrayDecoding(t *testing.T) { } } +type buggyScanner struct {} + +func (*buggyScanner) Scan(r *pgx.ValueReader) error { + r.ReadInt32() + return nil +} + +func TestBuggyScanner(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[]") + if err != nil { + t.Errorf(`error retrieving rows with array: %v`, err) + } + defer rows.Close() + + for rows.Next() { + var s string + var b buggyScanner + err = rows.Scan(&s, &b) + if err != nil { + t.Errorf(`error reading array: %v`, err) + } + } + + ensureConnValid(t, conn) +} + func TestEmptyArrayDecoding(t *testing.T) { t.Parallel()