Skip to content

Commit 133e8d4

Browse files
author
James Cor
committed
make schema once
1 parent 006ebc8 commit 133e8d4

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

sql/rowexec/agg.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -127,12 +127,16 @@ func newGroupByGroupingIter(
127127
selectedExprs, groupByExprs []sql.Expression,
128128
child sql.RowIter,
129129
) *groupByGroupingIter {
130+
keySch := make(sql.Schema, len(groupByExprs))
131+
for i := range groupByExprs {
132+
keySch[i] = &sql.Column{Type: groupByExprs[i].Type()}
133+
}
130134
return &groupByGroupingIter{
131135
selectedExprs: selectedExprs,
132136
groupByExprs: groupByExprs,
133137
child: child,
134138
keyRow: make(sql.Row, len(groupByExprs)),
135-
keySch: make(sql.Schema, len(groupByExprs)),
139+
keySch: keySch,
136140
}
137141
}
138142

@@ -172,7 +176,7 @@ func (i *groupByGroupingIter) compute(ctx *sql.Context) error {
172176
return err
173177
}
174178

175-
key, err := i.groupingKey(ctx, i.groupByExprs, row)
179+
key, err := i.groupingKey(ctx, row)
176180
if err != nil {
177181
return err
178182
}
@@ -242,8 +246,8 @@ func (i *groupByGroupingIter) Dispose() {
242246
}
243247
}
244248

245-
func (i *groupByGroupingIter) groupingKey(ctx *sql.Context, exprs []sql.Expression, row sql.Row) (uint64, error) {
246-
for idx, expr := range exprs {
249+
func (i *groupByGroupingIter) groupingKey(ctx *sql.Context, row sql.Row) (uint64, error) {
250+
for idx, expr := range i.groupByExprs {
247251
v, err := expr.Eval(ctx, row)
248252
if err != nil {
249253
return 0, err
@@ -260,7 +264,6 @@ func (i *groupByGroupingIter) groupingKey(ctx *sql.Context, exprs []sql.Expressi
260264
}
261265

262266
i.keyRow[idx] = v
263-
i.keySch[idx] = &sql.Column{Type: typ}
264267
}
265268
return hash.HashOf(ctx, i.keySch, i.keyRow)
266269
}

0 commit comments

Comments
 (0)