asdfgh19 created CALCITE-5563: --------------------------------- Summary: Add a break to the inner loop of RelSubset#getParents and RelSubset#getParentSubsets after we find a matching Relsubset from its parent input Key: CALCITE-5563 URL: https://issues.apache.org/jira/browse/CALCITE-5563 Project: Calcite Issue Type: Improvement Components: core Reporter: asdfgh19 Assignee: asdfgh19 Fix For: 1.34.0
{code:java} /** * Returns the collection of RelNodes one of whose inputs is in this * subset. */ Set<RelNode> getParents() { final Set<RelNode> list = new LinkedHashSet<>(); for (RelNode parent : set.getParentRels()) { for (RelSubset rel : inputSubsets(parent)) { // see usage of this method in propagateCostImprovements0() if (rel == this) { list.add(parent); break; } } } return list; } /** * Returns the collection of distinct subsets that contain a RelNode one * of whose inputs is in this subset. */ Set<RelSubset> getParentSubsets(VolcanoPlanner planner) { final Set<RelSubset> list = new LinkedHashSet<>(); for (RelNode parent : set.getParentRels()) { for (RelSubset rel : inputSubsets(parent)) { if (rel.set == set && rel.getTraitSet().equals(traitSet)) { list.add(planner.getSubsetNonNull(parent)); break; } } } return list; }{code} Once we have found a matching Relsubset from its parent input, we can immediately end the inner loop. -- This message was sent by Atlassian Jira (v8.20.10#820010)