diff --git a/rows.go b/rows.go index 5268254..94eb036 100644 --- a/rows.go +++ b/rows.go @@ -84,7 +84,7 @@ func (r *textRows) Next(dest []driver.Value) error { // skip row before WITH TOTALS, // not but do not skip an empty line if it is part of the result - if len(row) == 1 && row[0] == "" && len(dest) != 1 { + if len(row) == 1 && row[0] == "" { row, err = r.tsv.Read() if err != nil { return err diff --git a/rows_test.go b/rows_test.go index dd8e995..d514308 100644 --- a/rows_test.go +++ b/rows_test.go @@ -83,21 +83,6 @@ func TestTextRowsNewLine(t *testing.T) { assert.Equal(t, []driver.Value{"Hello\nThere"}, dest) } -func TestTextRowsEmpty(t *testing.T) { - buf := bytes.NewReader([]byte("text\nString\n\n")) - rows, err := newTextRows(&conn{}, &bufReadCloser{buf}, time.Local, false) - if !assert.NoError(t, err) { - return - } - assert.Equal(t, []string{"text"}, rows.Columns()) - assert.Equal(t, []string{"String"}, rows.types) - dest := make([]driver.Value, 1) - if !assert.NoError(t, rows.Next(dest)) { - return - } - assert.Equal(t, []driver.Value{""}, dest) -} - func TestTextRowsWithStartsDoubleQuotes(t *testing.T) { buf := bytes.NewReader([]byte("text\nString\n\"\n")) rows, err := newTextRows(&conn{}, &bufReadCloser{buf}, time.Local, false) @@ -146,3 +131,33 @@ func TestTextRowsWithEmptyQuotes(t *testing.T) { } assert.Equal(t, []driver.Value{`""`}, dest) } + +func TestInt32RowsEmpty(t *testing.T) { + buf := bytes.NewReader([]byte("text\nInt64\n\n1\n")) + rows, err := newTextRows(&conn{}, &bufReadCloser{buf}, time.Local, false) + if !assert.NoError(t, err) { + return + } + assert.Equal(t, []string{"text"}, rows.Columns()) + assert.Equal(t, []string{"Int64"}, rows.types) + dest := make([]driver.Value, 1) + if !assert.NoError(t, rows.Next(dest)) { + return + } + assert.Equal(t, []driver.Value{int64(1)}, dest) +} + +func TestFloat64RowsEmpty(t *testing.T) { + buf := bytes.NewReader([]byte("text\nFloat64\n\n1.0\n")) + rows, err := newTextRows(&conn{}, &bufReadCloser{buf}, time.Local, false) + if !assert.NoError(t, err) { + return + } + assert.Equal(t, []string{"text"}, rows.Columns()) + assert.Equal(t, []string{"Float64"}, rows.types) + dest := make([]driver.Value, 1) + if !assert.NoError(t, rows.Next(dest)) { + return + } + assert.Equal(t, []driver.Value{float64(1)}, dest) +}