Github user JamesRTaylor commented on a diff in the pull request:
https://github.com/apache/phoenix/pull/314#discussion_r205981903
--- Diff:
phoenix-core/src/main/java/org/apache/phoenix/util/ExpressionUtil.java ---
@@ -68,4 +74,85 @@ public static boolean isPkPositionChanging(TableRef
tableRef, List<Expression> p
return false;
}
+ public static boolean isColumnConstant(Expression columnExpression,
Expression whereExpression) {
+ if(whereExpression == null) {
+ return false;
+ }
+ IsColumnConstantExpressionVisitor
isColumnConstantExpressionVisitor =
+ new IsColumnConstantExpressionVisitor(columnExpression);
+ whereExpression.accept(isColumnConstantExpressionVisitor);
+ return isColumnConstantExpressionVisitor.isConstant();
+ }
+
+ private static class IsColumnConstantExpressionVisitor extends
StatelessTraverseNoExpressionVisitor<Void> {
--- End diff --
I'm hoping we don't need a new visitor here. There are probably other cases
to check for besides ComparisonExpression. For example, InListExpression, maybe
CoerceExpression, etc.
---