[FLINK-2814] [optimizer] DualInputPlanNode cannot be cast to SingleInputPlanNode

WorksetIterationNode#instantiate loops over all solution and work set
candidates. Since the solution set reference is modified in place when
the predecessor node can be used in its place, swith this variable to
the inner loop.

This closes #3563


Project: http://git-wip-us.apache.org/repos/asf/flink/repo
Commit: http://git-wip-us.apache.org/repos/asf/flink/commit/43158a86
Tree: http://git-wip-us.apache.org/repos/asf/flink/tree/43158a86
Diff: http://git-wip-us.apache.org/repos/asf/flink/diff/43158a86

Branch: refs/heads/table-retraction
Commit: 43158a86d9c3f3d6e3d612c8871625e9d22e7ba3
Parents: 2313a74
Author: Greg Hogan <c...@greghogan.com>
Authored: Fri Mar 17 12:09:34 2017 -0400
Committer: Greg Hogan <c...@greghogan.com>
Committed: Fri Mar 31 11:05:58 2017 -0400

----------------------------------------------------------------------
 .../org/apache/flink/optimizer/dag/WorksetIterationNode.java     | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flink/blob/43158a86/flink-optimizer/src/main/java/org/apache/flink/optimizer/dag/WorksetIterationNode.java
----------------------------------------------------------------------
diff --git 
a/flink-optimizer/src/main/java/org/apache/flink/optimizer/dag/WorksetIterationNode.java
 
b/flink-optimizer/src/main/java/org/apache/flink/optimizer/dag/WorksetIterationNode.java
index d7ccaca..e62e727 100644
--- 
a/flink-optimizer/src/main/java/org/apache/flink/optimizer/dag/WorksetIterationNode.java
+++ 
b/flink-optimizer/src/main/java/org/apache/flink/optimizer/dag/WorksetIterationNode.java
@@ -431,8 +431,8 @@ public class WorksetIterationNode extends TwoInputNode 
implements IterationNode
                LocalProperties lp = 
LocalProperties.EMPTY.addUniqueFields(this.solutionSetKeyFields);
                
                // take all combinations of solution set delta and workset plans
-               for (PlanNode solutionSetCandidate : 
solutionSetDeltaCandidates) {
-                       for (PlanNode worksetCandidate : worksetCandidates) {
+               for (PlanNode worksetCandidate : worksetCandidates) {
+                       for (PlanNode solutionSetCandidate : 
solutionSetDeltaCandidates) {
                                // check whether they have the same operator at 
their latest branching point
                                if 
(this.singleRoot.areBranchCompatible(solutionSetCandidate, worksetCandidate)) {
                                        

Reply via email to