Skip to content

Commit aaa6de0

Browse files
committed
Make binaryExpression() handle empty list
Change ExpressionUtils.binaryExpression to return TRUE on an empty list
1 parent e110baa commit aaa6de0

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

presto-main/src/main/java/com/facebook/presto/sql/ExpressionUtils.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import com.facebook.presto.sql.tree.LogicalBinaryExpression;
2727
import com.facebook.presto.sql.tree.NotExpression;
2828
import com.facebook.presto.sql.tree.SymbolReference;
29-
import com.google.common.base.Preconditions;
3029
import com.google.common.collect.ImmutableList;
3130
import com.google.common.collect.Iterables;
3231

@@ -103,7 +102,17 @@ public static Expression binaryExpression(LogicalBinaryExpression.Type type, Col
103102
{
104103
requireNonNull(type, "type is null");
105104
requireNonNull(expressions, "expressions is null");
106-
Preconditions.checkArgument(!expressions.isEmpty(), "expressions is empty");
105+
106+
if (expressions.isEmpty()) {
107+
switch (type) {
108+
case AND:
109+
return TRUE_LITERAL;
110+
case OR:
111+
return FALSE_LITERAL;
112+
default:
113+
throw new IllegalArgumentException("Unsupported LogicalBinaryExpression type");
114+
}
115+
}
107116

108117
// Build balanced tree for efficient recursive processing that
109118
// preserves the evaluation order of the input expressions.
@@ -309,7 +318,8 @@ public static Expression normalize(Expression expression)
309318

310319
public static Expression rewriteIdentifiersToSymbolReferences(Expression expression)
311320
{
312-
return ExpressionTreeRewriter.rewriteWith(new ExpressionRewriter<Void>() {
321+
return ExpressionTreeRewriter.rewriteWith(new ExpressionRewriter<Void>()
322+
{
313323
@Override
314324
public Expression rewriteIdentifier(Identifier node, Void context, ExpressionTreeRewriter<Void> treeRewriter)
315325
{

0 commit comments

Comments
 (0)