@@ -1525,14 +1525,12 @@ impl MemberRules {
15251525 let meta_context = self . meta_context . clone ( ) ;
15261526
15271527 move |egraph, subst| {
1528- let empty_filters = & egraph
1529- . index ( subst[ filters_var] )
1528+ let empty_filters = & egraph[ subst[ filters_var] ]
15301529 . data
15311530 . is_empty_list
15321531 . unwrap_or ( true ) ;
1533- let ungrouped = var_iter ! ( egraph[ subst[ left_ungrouped_var] ] , CubeScanUngrouped )
1534- . into_iter ( )
1535- . any ( |v| * v) ;
1532+ let ungrouped =
1533+ var_iter ! ( egraph[ subst[ left_ungrouped_var] ] , CubeScanUngrouped ) . any ( |v| * v) ;
15361534
15371535 if !empty_filters && ungrouped {
15381536 return false ;
@@ -1559,23 +1557,17 @@ impl MemberRules {
15591557 None => {
15601558 // this might be the case of `SELECT DISTINCT *`
15611559 // we need to check that there are only dimensions defined in the referenced cube
1562- let aliases_to_cube: Vec < _ > =
1563- var_iter ! ( egraph[ subst[ alias_to_cube_var] ] , CubeScanAliasToCube )
1564- . cloned ( )
1565- . collect ( ) ;
1566-
1567- if let Some ( cube_name) = aliases_to_cube
1568- . first ( )
1569- . and_then ( |f| f. first ( ) . map ( |( _, c) | c) )
1570- {
1571- if let Some ( cube) = meta_context. find_cube_with_name ( cube_name) {
1572- cube. measures . len ( ) == 0 && cube. segments . len ( ) == 0
1573- } else {
1574- false
1575- }
1576- } else {
1577- false
1578- }
1560+ var_iter ! ( egraph[ subst[ alias_to_cube_var] ] , CubeScanAliasToCube )
1561+ . cloned ( )
1562+ . all ( |alias_to_cube| {
1563+ alias_to_cube. iter ( ) . all ( |( _, cube_name) | {
1564+ if let Some ( cube) = meta_context. find_cube_with_name ( & cube_name) {
1565+ cube. measures . len ( ) == 0 && cube. segments . len ( ) == 0
1566+ } else {
1567+ false
1568+ }
1569+ } )
1570+ } )
15791571 }
15801572 } ;
15811573
0 commit comments