|
26 | 26 | import java.time.OffsetDateTime; |
27 | 27 | import java.time.ZoneOffset; |
28 | 28 | import java.util.Collections; |
29 | | -import java.util.Iterator; |
30 | 29 | import java.util.List; |
31 | 30 | import java.util.Map; |
32 | 31 | import java.util.Optional; |
@@ -780,37 +779,31 @@ private static Pair<List<FileScanTask>, String> planFilesFor( |
780 | 779 | TableScan tableScan, String planId, int tasksPerPlanTask) { |
781 | 780 | Iterable<List<FileScanTask>> taskGroupings = |
782 | 781 | Iterables.partition(tableScan.planFiles(), tasksPerPlanTask); |
783 | | - Iterator<List<FileScanTask>> taskIterator = taskGroupings.iterator(); |
784 | | - String planTaskKeyPrefix = planId + "-" + tableScan.table().uuid() + "-"; |
785 | | - |
786 | | - if (!taskIterator.hasNext()) { |
787 | | - // Handle empty table scans |
788 | | - String emptyPlanTaskKey = planTaskKeyPrefix + 0; |
789 | | - IN_MEMORY_PLANNING_STATE.addPlanTask(emptyPlanTaskKey, Collections.emptyList()); |
790 | | - return Pair.of(Collections.emptyList(), null); |
791 | | - } |
792 | | - |
793 | 782 | int planTaskSequence = 0; |
794 | 783 | String previousPlanTask = null; |
795 | 784 | String firstPlanTaskKey = null; |
796 | 785 | List<FileScanTask> initialFileScanTasks = null; |
| 786 | + boolean hasPlanTasks = false; |
797 | 787 |
|
798 | | - do { |
799 | | - List<FileScanTask> taskGrouping = taskIterator.next(); |
800 | | - String planTaskKey = planTaskKeyPrefix + planTaskSequence++; |
| 788 | + for (List<FileScanTask> taskGrouping : taskGroupings) { |
| 789 | + hasPlanTasks = true; |
| 790 | + String planTaskKey = |
| 791 | + String.format("%s-%s-%s", planId, tableScan.table().uuid(), planTaskSequence++); |
801 | 792 | IN_MEMORY_PLANNING_STATE.addPlanTask(planTaskKey, taskGrouping); |
802 | 793 |
|
803 | | - if (firstPlanTaskKey == null) { |
804 | | - firstPlanTaskKey = planTaskKey; |
805 | | - initialFileScanTasks = taskGrouping; |
806 | | - } |
807 | | - |
808 | 794 | if (previousPlanTask != null) { |
809 | 795 | IN_MEMORY_PLANNING_STATE.addNextPlanTask(previousPlanTask, planTaskKey); |
| 796 | + } else { |
| 797 | + firstPlanTaskKey = planTaskKey; |
| 798 | + initialFileScanTasks = taskGrouping; |
810 | 799 | } |
811 | 800 |
|
812 | 801 | previousPlanTask = planTaskKey; |
813 | | - } while (taskIterator.hasNext()); |
| 802 | + } |
| 803 | + |
| 804 | + if (!hasPlanTasks) { |
| 805 | + return Pair.of(Collections.emptyList(), null); |
| 806 | + } |
814 | 807 |
|
815 | 808 | return Pair.of(initialFileScanTasks, firstPlanTaskKey); |
816 | 809 | } |
|
0 commit comments