[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)) {