diff --git a/client/conn.go b/client/conn.go index bcbb6f58c..5b65af892 100644 --- a/client/conn.go +++ b/client/conn.go @@ -328,22 +328,19 @@ func (c *Conn) FieldList(table string, wildcard string) ([]*Field, error) { return nil, errors.Trace(err) } - data, err := c.ReadPacket() - if err != nil { - return nil, errors.Trace(err) - } - fs := make([]*Field, 0, 4) var f *Field - if data[0] == ERR_HEADER { - return nil, c.handleErrorPacket(data) - } - for { - if data, err = c.ReadPacket(); err != nil { + data, err := c.ReadPacket() + if err != nil { return nil, errors.Trace(err) } + // ERR Packet + if data[0] == ERR_HEADER { + return nil, c.handleErrorPacket(data) + } + // EOF Packet if c.isEOFPacket(data) { return fs, nil diff --git a/client/conn_test.go b/client/conn_test.go index 338bb6ae3..e6979cea8 100644 --- a/client/conn_test.go +++ b/client/conn_test.go @@ -82,6 +82,12 @@ func (s *connTestSuite) testExecute_DropTable(c *C) { c.Assert(err, IsNil) } +func (s *connTestSuite) TestFieldList(c *C) { + fields, err := s.c.FieldList(testExecuteSelectStreamingTablename, "") + c.Assert(err, IsNil) + c.Assert(fields, HasLen, 2) +} + func (s *connTestSuite) TestExecuteMultiple(c *C) { queries := []string{ `INSERT INTO ` + testExecuteSelectStreamingTablename + ` (id, str) VALUES (999, "executemultiple")`,