MCPcopy Create free account
hub / github.com/IceFireDB/IceFireDB / readResultStreaming

Method readResultStreaming

IceFireDB-SQLProxy/pkg/mysql/client/resp.go:238–273  ·  view source on GitHub ↗
(binary bool, result *Result, perRowCb SelectPerRowCallback)

Source from the content-addressed store, hash-verified

236}
237
238func (c *Conn) readResultStreaming(binary bool, result *Result, perRowCb SelectPerRowCallback) error {
239 firstPkgBuf, err := c.ReadPacketReuseMem(utils.ByteSliceGet(16)[:0])
240 defer utils.ByteSlicePut(firstPkgBuf)
241
242 if err != nil {
243 return errors.Trace(err)
244 }
245
246 if firstPkgBuf[0] == OK_HEADER {
247 // https://dev.mysql.com/doc/internals/en/com-query-response.html
248 // 14.6.4.1 COM_QUERY Response
249 // If the number of columns in the resultset is 0, this is a OK_Packet.
250
251 okResult, err := c.handleOKPacket(firstPkgBuf)
252 if err != nil {
253 return errors.Trace(err)
254 }
255
256 result.Status = okResult.Status
257 result.AffectedRows = okResult.AffectedRows
258 result.InsertId = okResult.InsertId
259 result.Warnings = okResult.Warnings
260 if result.Resultset == nil {
261 result.Resultset = NewResultset(0)
262 } else {
263 result.Reset(0)
264 }
265 return nil
266 } else if firstPkgBuf[0] == ERR_HEADER {
267 return c.handleErrorPacket(append([]byte{}, firstPkgBuf...))
268 } else if firstPkgBuf[0] == LocalInFile_HEADER {
269 return ErrMalformPacket
270 }
271
272 return c.readResultsetStreaming(firstPkgBuf, binary, result, perRowCb)
273}
274
275func (c *Conn) readResultset(data []byte, binary bool) (*Result, error) {
276 // column count

Callers 1

Calls 8

ReadPacketReuseMemMethod · 0.95
handleOKPacketMethod · 0.95
handleErrorPacketMethod · 0.95
ByteSliceGetFunction · 0.92
ByteSlicePutFunction · 0.92
NewResultsetFunction · 0.50
ResetMethod · 0.45

Tested by

no test coverage detected