disable constant folding for non-functional functions
diff --git a/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/rules/ConstantFoldingRule.java b/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/rules/ConstantFoldingRule.java
index a219024..a42507c 100644
--- a/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/rules/ConstantFoldingRule.java
+++ b/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/rules/ConstantFoldingRule.java
@@ -164,11 +164,8 @@
@Override
public Pair<Boolean, ILogicalExpression> visitScalarFunctionCallExpression(ScalarFunctionCallExpression expr,
Void arg) throws AlgebricksException {
- if (!expr.isFunctional()) {
- return new Pair<Boolean, ILogicalExpression>(false, null);
- }
boolean changed = changeRec(expr, arg);
- if (!checkArgs(expr)) {
+ if (!checkArgs(expr) || !expr.isFunctional()) {
return new Pair<Boolean, ILogicalExpression>(changed, expr);
}
//Current ARecord SerDe assumes a closed record, so we do not constant fold open record constructors
@@ -224,9 +221,6 @@
@Override
public Pair<Boolean, ILogicalExpression> visitAggregateFunctionCallExpression(
AggregateFunctionCallExpression expr, Void arg) throws AlgebricksException {
- if (!expr.isFunctional()) {
- return new Pair<Boolean, ILogicalExpression>(false, null);
- }
boolean changed = changeRec(expr, arg);
return new Pair<Boolean, ILogicalExpression>(changed, expr);
}
@@ -234,9 +228,6 @@
@Override
public Pair<Boolean, ILogicalExpression> visitStatefulFunctionCallExpression(
StatefulFunctionCallExpression expr, Void arg) throws AlgebricksException {
- if (!expr.isFunctional()) {
- return new Pair<Boolean, ILogicalExpression>(false, null);
- }
boolean changed = changeRec(expr, arg);
return new Pair<Boolean, ILogicalExpression>(changed, expr);
}
@@ -244,9 +235,6 @@
@Override
public Pair<Boolean, ILogicalExpression> visitUnnestingFunctionCallExpression(
UnnestingFunctionCallExpression expr, Void arg) throws AlgebricksException {
- if (!expr.isFunctional()) {
- return new Pair<Boolean, ILogicalExpression>(false, null);
- }
boolean changed = changeRec(expr, arg);
return new Pair<Boolean, ILogicalExpression>(changed, expr);
}