File tree Expand file tree Collapse file tree
datafusion/sql/src/unparser Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -239,6 +239,7 @@ fn find_agg_expr<'a>(agg: &'a Aggregate, column: &Column) -> Result<Option<&'a E
239239 if matches ! ( agg. group_expr. as_slice( ) , [ Expr :: GroupingSet ( _) ] ) {
240240 // For grouping set expr, we must operate by expression list from the grouping set
241241 let grouping_expr = grouping_set_to_exprlist ( agg. group_expr . as_slice ( ) ) ?;
242+ let internal_grouping_columns = 2 ;
242243 match index. cmp ( & grouping_expr. len ( ) ) {
243244 Ordering :: Less => Ok ( grouping_expr. into_iter ( ) . nth ( index) ) ,
244245 Ordering :: Equal => {
@@ -247,7 +248,14 @@ fn find_agg_expr<'a>(agg: &'a Aggregate, column: &Column) -> Result<Option<&'a E
247248 )
248249 }
249250 Ordering :: Greater => {
250- Ok ( agg. aggr_expr . get ( index - grouping_expr. len ( ) - 1 ) )
251+ if index < grouping_expr. len ( ) + internal_grouping_columns {
252+ return internal_err ! (
253+ "Tried to unproject column referring to internal grouping column"
254+ ) ;
255+ }
256+ Ok ( agg
257+ . aggr_expr
258+ . get ( index - grouping_expr. len ( ) - internal_grouping_columns) )
251259 }
252260 }
253261 } else {
You can’t perform that action at this time.
0 commit comments