You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iceberg.apache.org by bl...@apache.org on 2019/07/18 15:52:53 UTC

[incubator-iceberg] branch master updated: Add multi AND helper method (#294)

This is an automated email from the ASF dual-hosted git repository.

blue pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-iceberg.git


The following commit(s) were added to refs/heads/master by this push:
     new 40bb3c0  Add multi AND helper method (#294)
40bb3c0 is described below

commit 40bb3c077a90f0094673e8b59afe59911baa2de3
Author: Arina Ielchiieva <ar...@gmail.com>
AuthorDate: Thu Jul 18 18:52:49 2019 +0300

    Add multi AND helper method (#294)
---
 .../java/org/apache/iceberg/expressions/Expressions.java |  6 ++++++
 .../iceberg/expressions/TestExpressionHelpers.java       | 16 ++++++++++++++++
 2 files changed, 22 insertions(+)

diff --git a/api/src/main/java/org/apache/iceberg/expressions/Expressions.java b/api/src/main/java/org/apache/iceberg/expressions/Expressions.java
index c42e9fa..d280f89 100644
--- a/api/src/main/java/org/apache/iceberg/expressions/Expressions.java
+++ b/api/src/main/java/org/apache/iceberg/expressions/Expressions.java
@@ -20,6 +20,7 @@
 package org.apache.iceberg.expressions;
 
 import com.google.common.base.Preconditions;
+import java.util.stream.Stream;
 import org.apache.iceberg.expressions.Expression.Operation;
 
 /**
@@ -42,6 +43,11 @@ public class Expressions {
     return new And(left, right);
   }
 
+  public static Expression and(Expression left, Expression right, Expression... expressions) {
+    return Stream.of(expressions)
+      .reduce(and(left, right), Expressions::and);
+  }
+
   public static Expression or(Expression left, Expression right) {
     Preconditions.checkNotNull(left, "Left expression cannot be null.");
     Preconditions.checkNotNull(right, "Right expression cannot be null.");
diff --git a/api/src/test/java/org/apache/iceberg/expressions/TestExpressionHelpers.java b/api/src/test/java/org/apache/iceberg/expressions/TestExpressionHelpers.java
index 6ca11ad..456a967 100644
--- a/api/src/test/java/org/apache/iceberg/expressions/TestExpressionHelpers.java
+++ b/api/src/test/java/org/apache/iceberg/expressions/TestExpressionHelpers.java
@@ -76,4 +76,20 @@ public class TestExpressionHelpers {
     TestHelpers.assertThrows("Should catch null column names when creating expressions",
         NullPointerException.class, "Name cannot be null", () -> equal(null, 5));
   }
+
+  @Test
+  public void testMultiAnd() {
+    Expression expected = and(
+        and(
+          equal("a", 1),
+          equal("b", 2)),
+        equal("c", 3));
+
+    Expression actual = and(
+        equal("a", 1),
+        equal("b", 2),
+        equal("c", 3));
+
+    Assert.assertEquals(expected.toString(), actual.toString());
+  }
 }