예제 #1
0
 /**
  * Coalesce sort groups that have compatible partition-by exprs and have a prefix relationship.
  */
 private void mergeSortGroups(List<SortGroup> sortGroups) {
   boolean hasMerged = false;
   do {
     hasMerged = false;
     for (SortGroup sg1 : sortGroups) {
       for (SortGroup sg2 : sortGroups) {
         if (sg1 != sg2 && sg1.isPrefixOf(sg2)) {
           sg1.absorb(sg2);
           sortGroups.remove(sg2);
           hasMerged = true;
           break;
         }
       }
       if (hasMerged) break;
     }
   } while (hasMerged);
 }