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);
         }