Skip to content

Commit 7442b92

Browse files
author
James Cor
committed
some buffer?
1 parent 7ad8470 commit 7442b92

File tree

4 files changed

+24
-24
lines changed

4 files changed

+24
-24
lines changed

sql/rowexec/agg.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,8 +238,9 @@ func (i *groupByGroupingIter) Dispose() {
238238
}
239239

240240
func groupingKey(ctx *sql.Context, exprs []sql.Expression, row sql.Row) (uint64, error) {
241-
var keyRow = make(sql.Row, len(exprs))
242241
var keySch = make(sql.Schema, len(exprs))
242+
keyRow := sql.GetRow(len(exprs))
243+
defer sql.PutRow(keyRow)
243244
for i, expr := range exprs {
244245
v, err := expr.Eval(ctx, row)
245246
if err != nil {

sql/rowexec/builder.go

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,9 @@
1515
package rowexec
1616

1717
import (
18-
"runtime/trace"
19-
"sync"
20-
2118
"github.com/dolthub/go-mysql-server/sql"
2219
"github.com/dolthub/go-mysql-server/sql/plan"
20+
"runtime/trace"
2321
)
2422

2523
var DefaultBuilder = &BaseBuilder{}
@@ -59,19 +57,3 @@ func FinalizeIters(ctx *sql.Context, analyzed sql.Node, qFlags *sql.QueryFlags,
5957
iter = AddExpressionCloser(analyzed, iter)
6058
return iter, sch, nil
6159
}
62-
63-
// TODO: find a proper place for this
64-
var rowBuffers = sync.Pool{
65-
New: func() interface{} {
66-
return make(sql.Row, 0, 4096) // TODO: this is apparently max number of columns
67-
},
68-
}
69-
70-
func GetRow(length int) sql.Row {
71-
row := rowBuffers.Get().(sql.Row)
72-
return row[:length]
73-
}
74-
75-
func PutRow(row sql.Row) {
76-
rowBuffers.Put(row[:0])
77-
}

sql/rowexec/merge_join.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ func newMergeJoinIter(ctx *sql.Context, b sql.NodeExecBuilder, j *plan.JoinNode,
4646
return nil, err
4747
}
4848

49-
fullRow := GetRow(len(row) + len(j.Left().Schema()) + len(j.Right().Schema()))
50-
// TODO: what is this for
49+
fullRow := sql.GetRow(len(row) + len(j.Left().Schema()) + len(j.Right().Schema()))
50+
// TODO: what is this for?
5151
fullRow[0] = row
5252
if len(row) > 0 {
5353
copy(fullRow[0:], row[:])
@@ -264,7 +264,7 @@ func (i *mergeJoinIter) Next(ctx *sql.Context) (sql.Row, error) {
264264
}
265265
nextState = msExhaustCheck
266266
case msSelect:
267-
ret = i.copyReturnRow()
267+
ret = i.copyReturnRow() // TODO: only copy once we know we're going to return this
268268
currLeftMatched := i.leftMatched
269269

270270
ok, err := i.sel(ctx, ret)
@@ -587,6 +587,6 @@ func (i *mergeJoinIter) Close(ctx *sql.Context) (err error) {
587587
}
588588
}
589589

590-
PutRow(i.fullRow)
590+
sql.PutRow(i.fullRow)
591591
return err
592592
}

sql/rows.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"github.com/dolthub/vitess/go/vt/proto/query"
2121
"io"
2222
"strings"
23+
"sync"
2324
)
2425

2526
// Row is a tuple of values.
@@ -67,6 +68,22 @@ func (r Row) Equals(ctx *Context, row Row, schema Schema) (bool, error) {
6768
return true, nil
6869
}
6970

71+
// TODO: find a proper place for this
72+
var rowBuffers = sync.Pool{
73+
New: func() interface{} {
74+
return make(Row, 0, 4096) // max number of columns for a table
75+
},
76+
}
77+
78+
func GetRow(length int) Row {
79+
row := rowBuffers.Get().(Row)
80+
return row[:length]
81+
}
82+
83+
func PutRow(row Row) {
84+
rowBuffers.Put(row[:0])
85+
}
86+
7087
// FormatRow returns a formatted string representing this row's values
7188
func FormatRow(row Row) string {
7289
var sb strings.Builder

0 commit comments

Comments
 (0)