You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by ch...@apache.org on 2020/02/25 13:26:51 UTC
[calcite] branch master updated: [CALCITE-3817] VolcanoPlanner does
not remove the entry in ruleNames when removing a rule
This is an automated email from the ASF dual-hosted git repository.
chunwei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/calcite.git
The following commit(s) were added to refs/heads/master by this push:
new 089a3f6 [CALCITE-3817] VolcanoPlanner does not remove the entry in ruleNames when removing a rule
089a3f6 is described below
commit 089a3f61b7d2e85b2101eaa2869c866639f1abe5
Author: Chunwei Lei <ch...@gmail.com>
AuthorDate: Mon Feb 24 16:02:06 2020 +0800
[CALCITE-3817] VolcanoPlanner does not remove the entry in ruleNames when removing a rule
---
.../calcite/plan/volcano/VolcanoPlanner.java | 22 ++++++++++------------
1 file changed, 10 insertions(+), 12 deletions(-)
diff --git a/core/src/main/java/org/apache/calcite/plan/volcano/VolcanoPlanner.java b/core/src/main/java/org/apache/calcite/plan/volcano/VolcanoPlanner.java
index a858aa0..d3bb2ec 100644
--- a/core/src/main/java/org/apache/calcite/plan/volcano/VolcanoPlanner.java
+++ b/core/src/main/java/org/apache/calcite/plan/volcano/VolcanoPlanner.java
@@ -58,11 +58,9 @@ import org.apache.calcite.util.PartiallyOrderedSet;
import org.apache.calcite.util.Util;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.LinkedHashMultimap;
import com.google.common.collect.LinkedListMultimap;
import com.google.common.collect.Multimap;
import com.google.common.collect.Ordering;
-import com.google.common.collect.SetMultimap;
import java.io.PrintWriter;
import java.io.StringWriter;
@@ -239,8 +237,8 @@ public class VolcanoPlanner extends AbstractRelOptPlanner {
/** Maps rule classes to their name, to ensure that the names are unique and
* conform to rules. */
- private final SetMultimap<String, Class> ruleNames =
- LinkedHashMultimap.create();
+ private final Map<String, RelOptRule> ruleNames = new HashMap<>();
+
//~ Constructors -----------------------------------------------------------
@@ -451,12 +449,9 @@ public class VolcanoPlanner extends AbstractRelOptPlanner {
assert added;
final String ruleName = rule.toString();
- if (ruleNames.put(ruleName, rule.getClass())) {
- Set<Class> x = ruleNames.get(ruleName);
- if (x.size() > 1) {
- throw new RuntimeException("Rule description '" + ruleName
- + "' is not unique; classes: " + x);
- }
+ if (ruleNames.put(ruleName, rule) != null) {
+ throw new RuntimeException("Rule description '" + ruleName
+ + "' is not unique. ");
}
mapRuleDescription(rule);
@@ -493,6 +488,9 @@ public class VolcanoPlanner extends AbstractRelOptPlanner {
return false;
}
+ // Remove rule name.
+ ruleNames.remove(rule.toString());
+
// Remove description.
unmapRuleDescription(rule);
@@ -948,8 +946,8 @@ public class VolcanoPlanner extends AbstractRelOptPlanner {
/**
* Sets whether this planner should consider rel nodes with Convention.NONE
- * to have inifinte cost or not.
- * @param infinite Whether to make none convention rel nodes inifite cost
+ * to have infinite cost or not.
+ * @param infinite Whether to make none convention rel nodes infinite cost
*/
public void setNoneConventionHasInfiniteCost(boolean infinite) {
this.noneConventionHasInfiniteCost = infinite;