You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by jh...@apache.org on 2023/06/08 21:20:47 UTC

[calcite] 02/03: oops, forgot test

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

jhyde pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/calcite.git

commit ebf8cb2940ee04d23cf5ce25c421c3cade9b81ec
Author: Julian Hyde <jh...@apache.org>
AuthorDate: Fri Jun 2 17:20:01 2023 -0700

    oops, forgot test
---
 .../java/org/apache/calcite/rex/RexProgramTest.java   | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/core/src/test/java/org/apache/calcite/rex/RexProgramTest.java b/core/src/test/java/org/apache/calcite/rex/RexProgramTest.java
index 1a356e75a9..e4f10df2aa 100644
--- a/core/src/test/java/org/apache/calcite/rex/RexProgramTest.java
+++ b/core/src/test/java/org/apache/calcite/rex/RexProgramTest.java
@@ -15,6 +15,9 @@
  * limitations under the License.
  */
 package org.apache.calcite.rex;
+
+import com.google.common.collect.TreeRangeSet;
+
 import org.apache.calcite.avatica.util.ByteString;
 import org.apache.calcite.plan.RelOptPredicateList;
 import org.apache.calcite.plan.RelOptUtil;
@@ -3078,6 +3081,22 @@ class RexProgramTest extends RexProgramTestBase {
         is(2), is("Sarg[[3..8], [10..20]]"));
   }
 
+  /** Unit test for
+   * <a href="https://issues.apache.org/jira/browse/CALCITE-5722">[CALCITE-5722]
+   * {@code Sarg.isComplementedPoints} fails with anti-points which are equal
+   * under {@code compareTo} but not {@code equals}</a>. */
+  @SuppressWarnings("UnstableApiUsage")
+  @Test void testSargAntiPoint() {
+    final Sarg<BigDecimal> sarg =
+        Sarg.of(RexUnknownAs.UNKNOWN,
+            // Create anti-point around 1, with different scales
+            ImmutableRangeSet.<BigDecimal>builder()
+                .add(Range.lessThan(new BigDecimal("1")))
+                .add(Range.greaterThan(new BigDecimal("1.00000000000")))
+                .build());
+    assertThat(sarg.isComplementedPoints(), is(true));
+  }
+
   @Test void testInterpreter() {
     assertThat(eval(trueLiteral), is(true));
     assertThat(eval(nullInt), is(NullSentinel.INSTANCE));