Skip to content

Commit 3d92d36

Browse files
committed
test writeFieldValues with null value
1 parent f285a0f commit 3d92d36

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

server/resp_test.go

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,3 +189,43 @@ func (t *respConnTestSuite) TestConnWriteFieldList(c *check.C) {
189189
c.Assert(clientConn.WriteBuffered[:27], check.BytesEquals, []byte{23, 0, 0, 0, 3, 100, 101, 102, 0, 0, 0, 1, 'c', 0, 12, 33, 0, 0, 0, 0, 0, 253, 0, 0, 0, 0, 0})
190190
c.Assert(clientConn.WriteBuffered[27:], check.BytesEquals, []byte{1, 0, 0, 1, mysql.EOF_HEADER})
191191
}
192+
193+
func (t *respConnTestSuite) TestConnWriteFieldValues(c *check.C) {
194+
clientConn := &mockconn.MockConn{MultiWrite: true}
195+
conn := &Conn{Conn: packet.NewConn(clientConn)}
196+
197+
r, err := mysql.BuildSimpleTextResultset([]string{"c"}, [][]interface{}{
198+
[]interface{}{"d"},
199+
[]interface{}{nil},
200+
})
201+
202+
c.Assert(err, check.IsNil)
203+
err = conn.writeFieldList(r.Fields, nil)
204+
c.Assert(err, check.IsNil)
205+
206+
// fields and EOF
207+
c.Assert(clientConn.WriteBuffered[:27], check.BytesEquals, []byte{23, 0, 0, 0, 3, 100, 101, 102, 0, 0, 0, 1, 'c', 0, 12, 33, 0, 0, 0, 0, 0, 253, 0, 0, 0, 0, 0})
208+
c.Assert(clientConn.WriteBuffered[27:32], check.BytesEquals, []byte{1, 0, 0, 1, mysql.EOF_HEADER})
209+
210+
r.Values = make([][]mysql.FieldValue, len(r.RowDatas))
211+
for i := range r.Values {
212+
r.Values[i], err = r.RowDatas[i].Parse(r.Fields, false, r.Values[i])
213+
214+
c.Assert(err, check.IsNil)
215+
216+
err = conn.writeFieldValues(r.Values[i])
217+
c.Assert(err, check.IsNil)
218+
}
219+
220+
err = conn.writeEOF()
221+
c.Assert(err, check.IsNil)
222+
223+
// first row
224+
c.Assert(clientConn.WriteBuffered[32:38], check.BytesEquals, []byte{2, 0, 0, 2, 1, 'd'})
225+
226+
// second row with NULL value
227+
c.Assert(clientConn.WriteBuffered[38:43], check.BytesEquals, []byte{1, 0, 0, 3, 251})
228+
229+
// EOF
230+
c.Assert(clientConn.WriteBuffered[43:], check.BytesEquals, []byte{1, 0, 0, 4, mysql.EOF_HEADER})
231+
}

0 commit comments

Comments
 (0)