@@ -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