Details
-
Improvement
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
None
Description
void add(RelNode rel) { if (set.rels.contains(rel)) { return; } VolcanoPlanner planner = (VolcanoPlanner) rel.getCluster().getPlanner(); if (planner.getListener() != null) { RelOptListener.RelEquivalenceEvent event = new RelOptListener.RelEquivalenceEvent( planner, rel, this, true); planner.getListener().relEquivalenceFound(event); } // If this isn't the first rel in the set, it must have compatible // row type. if (set.rel != null) { RelOptUtil.equal("rowtype of new rel", rel.getRowType(), "rowtype of set", getRowType(), Litmus.THROW); } set.addInternal(rel); if (false) { Set<CorrelationId> variablesSet = RelOptUtil.getVariablesSet(rel); Set<CorrelationId> variablesStopped = rel.getVariablesSet(); Set<CorrelationId> variablesPropagated = Util.minus(variablesSet, variablesStopped); assert set.variablesPropagated.containsAll(variablesPropagated); Set<CorrelationId> variablesUsed = RelOptUtil.getVariablesUsed(rel); assert set.variablesUsed.containsAll(variablesUsed); } }
Double checking relset rowtype and input parameter relNode rowtype may be unnecessary