File tree Expand file tree Collapse file tree 1 file changed +11
-4
lines changed
datafusion/sql/src/unparser Expand file tree Collapse file tree 1 file changed +11
-4
lines changed Original file line number Diff line number Diff line change 1515// specific language governing permissions and limitations
1616// under the License.
1717
18+ use std:: cmp:: Ordering ;
19+
1820use datafusion_common:: {
1921 internal_err,
2022 tree_node:: { Transformed , TreeNode } ,
@@ -166,10 +168,15 @@ fn find_agg_expr<'a>(agg: &'a Aggregate, column: &Column) -> Result<Option<&'a E
166168 if matches ! ( agg. group_expr. as_slice( ) , [ Expr :: GroupingSet ( _) ] ) {
167169 // For grouping set expr, we must operate by expression list from the grouping set
168170 let grouping_expr = grouping_set_to_exprlist ( agg. group_expr . as_slice ( ) ) ?;
169- Ok ( grouping_expr
170- . into_iter ( )
171- . chain ( agg. aggr_expr . iter ( ) )
172- . nth ( index) )
171+ match index. cmp ( & grouping_expr. len ( ) ) {
172+ Ordering :: Less => Ok ( grouping_expr. into_iter ( ) . nth ( index) ) ,
173+ Ordering :: Equal => {
174+ internal_err ! ( "Tried to unproject column refereing to internal grouping id" )
175+ }
176+ Ordering :: Greater => {
177+ Ok ( agg. aggr_expr . get ( index - grouping_expr. len ( ) - 1 ) )
178+ }
179+ }
173180 } else {
174181 Ok ( agg. group_expr . iter ( ) . chain ( agg. aggr_expr . iter ( ) ) . nth ( index) )
175182 }
You can’t perform that action at this time.
0 commit comments