[NO ISSUE][COMP] Optim rules comments + minor changes
- user model changes: no
- storage format changes: no
- interface changes: no
Details:
- CheckFilterExpressionTypeRule checks if the optimization
context has the output type environment before computing it.
- Minor addition/changes to rule comments.
Change-Id: I6f5cb78125657ff2bb4658af40bfc9d9cbff184e
Reviewed-on: https://asterix-gerrit.ics.uci.edu/3201
Sonar-Qube: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Contrib: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Dmitry Lychagin <dmitry.lychagin@couchbase.com>
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/CheckFilterExpressionTypeRule.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/CheckFilterExpressionTypeRule.java
index 4839ac3..fed54e2 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/CheckFilterExpressionTypeRule.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/CheckFilterExpressionTypeRule.java
@@ -61,7 +61,10 @@
}
SelectOperator select = (SelectOperator) op;
ILogicalExpression condition = select.getCondition().getValue();
- IVariableTypeEnvironment env = select.computeOutputTypeEnvironment(context);
+
+ // Get the output type environment
+ IVariableTypeEnvironment env = context.getOutputTypeEnvironment(select);
+
IAType condType = (IAType) env.getType(condition);
if (condType.getTypeTag() != ATypeTag.BOOLEAN && condType.getTypeTag() != ATypeTag.ANY
&& !isPossibleBoolean(condType)) {
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/TypeComputeUtils.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/TypeComputeUtils.java
index f1f1be3..e40975b 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/TypeComputeUtils.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/TypeComputeUtils.java
@@ -84,7 +84,7 @@
inputTypes[index++] = (IAType) env.getType(arg);
}
- // Checks input types and computes result types.
+ // Checks input types.
IAType[] knownInputTypes = TypeComputeUtils.getActualType(inputTypes);
boolean[] unknownable = TypeComputeUtils.isUnknownableType(inputTypes);
for (int argIndex = 0; argIndex < knownInputTypes.length; ++argIndex) {
@@ -97,7 +97,7 @@
}
// Computes the result type.
- byte category = TypeComputeUtils.resolveCateogry(inputTypes);
+ byte category = TypeComputeUtils.resolveCategory(inputTypes);
if (propagateNullAndMissing) {
if (category == MISSING) {
return BuiltinType.AMISSING;
@@ -126,7 +126,7 @@
}
}
- private static byte resolveCateogry(IAType... inputTypes) {
+ private static byte resolveCategory(IAType... inputTypes) {
byte category = CERTAIN;
boolean meetNull = false;
for (IAType inputType : inputTypes) {
diff --git a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/InferTypesRule.java b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/InferTypesRule.java
index 8d54a67..a17bbf7 100644
--- a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/InferTypesRule.java
+++ b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/InferTypesRule.java
@@ -25,6 +25,9 @@
import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
import org.apache.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
+/**
+ * This rule computes and sets the output type environment for each operator in the plan
+ */
public class InferTypesRule implements IAlgebraicRewriteRule {
@Override