Skip to content

Commit 6eb914a

Browse files
author
James Cor
committed
Reset BytesBuffer after each rowBatch
1 parent 4af32d1 commit 6eb914a

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

server/handler.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -634,6 +634,12 @@ func (h *Handler) resultForDefaultIter(ctx *sql.Context, c *mysql.Conn, schema s
634634
timer := time.NewTimer(waitTime)
635635
defer timer.Stop()
636636

637+
// Wrap the callback to include a BytesBuffer.Reset() to clean out rows that have already been spooled
638+
resetCallback := func(r *sqltypes.Result, more bool) error {
639+
defer buf.Reset()
640+
return callback(r, more)
641+
}
642+
637643
// Reads rows from the channel, converts them to wire format,
638644
// and calls |callback| to give them to vitess.
639645
eg.Go(func() error {
@@ -645,7 +651,7 @@ func (h *Handler) resultForDefaultIter(ctx *sql.Context, c *mysql.Conn, schema s
645651
r = &sqltypes.Result{Fields: resultFields}
646652
}
647653
if r.RowsAffected == rowsBatch {
648-
if err := callback(r, more); err != nil {
654+
if err := resetCallback(r, more); err != nil {
649655
return err
650656
}
651657
r = nil
@@ -674,6 +680,9 @@ func (h *Handler) resultForDefaultIter(ctx *sql.Context, c *mysql.Conn, schema s
674680
}
675681

676682
ctx.GetLogger().Tracef("spooling result row %s", outputRow)
683+
if len(r.Rows) == 0 {
684+
print()
685+
}
677686
r.Rows = append(r.Rows, outputRow)
678687
r.RowsAffected++
679688
case <-timer.C:

0 commit comments

Comments
 (0)