@@ -189,3 +189,43 @@ func (t *respConnTestSuite) TestConnWriteFieldList(c *check.C) {
189
189
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 })
190
190
c .Assert (clientConn .WriteBuffered [27 :], check .BytesEquals , []byte {1 , 0 , 0 , 1 , mysql .EOF_HEADER })
191
191
}
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