@Override public Expression optimize(Session session) { boolean allConst = isDeterministic(); for (int i = 0, len = args.length; i < len; i++) { Expression e = args[i].optimize(session); args[i] = e; allConst &= e.isConstant(); } if (allConst) { return ValueExpression.get(getValue(session)); } return this; }
@Override public boolean isEverything(ExpressionVisitor visitor) { switch (visitor.getType()) { case ExpressionVisitor.DETERMINISTIC: if (!isDeterministic()) { return false; } // only if all parameters are deterministic as well break; case ExpressionVisitor.GET_DEPENDENCIES: visitor.addDependency(functionAlias); break; default: } for (Expression e : args) { if (e != null && !e.isEverything(visitor)) { return false; } } return true; }
@Override public Expression optimize(Session session) { boolean allConst = isDeterministic(); for (int i = 0, len = args.length; i < len; i++) { Expression e = args[i].optimize(session); args[i] = e; allConst &= e.isConstant(); } if (allConst) { return ValueExpression.get(getValue(session)); } return this; }
@Override public Expression optimize(Session session) { boolean allConst = isDeterministic(); for (int i = 0, len = args.length; i < len; i++) { Expression e = args[i].optimize(session); args[i] = e; allConst &= e.isConstant(); } if (allConst) { return ValueExpression.get(getValue(session)); } return this; }
@Override public boolean isEverything(ExpressionVisitor visitor) { switch (visitor.getType()) { case ExpressionVisitor.DETERMINISTIC: if (!isDeterministic()) { return false; } // only if all parameters are deterministic as well break; case ExpressionVisitor.GET_DEPENDENCIES: visitor.addDependency(functionAlias); break; default: } for (Expression e : args) { if (e != null && !e.isEverything(visitor)) { return false; } } return true; }
@Override public boolean isEverything(ExpressionVisitor visitor) { switch (visitor.getType()) { case ExpressionVisitor.DETERMINISTIC: if (!isDeterministic()) { return false; } // only if all parameters are deterministic as well break; case ExpressionVisitor.GET_DEPENDENCIES: visitor.addDependency(functionAlias); break; default: } for (Expression e : args) { if (e != null && !e.isEverything(visitor)) { return false; } } return true; }