[ 
https://issues.apache.org/jira/browse/CALCITE-5722?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17726464#comment-17726464
 ] 

Julian Hyde commented on CALCITE-5722:
--------------------------------------

Cancel that. I see that the javadoc for [class 
Range|https://guava.dev/releases/23.0/api/docs/com/google/common/collect/Range.html]
 says 
{quote}
Your value type's comparison method should be consistent with equals if at all 
possible. Otherwise, be aware that concepts used throughout this documentation 
such as "equal", "same", "unique" and so on actually refer to whether compareTo 
returns zero, not whether equals returns true
{quote}

{{RangeSet}} should likewise use {{compareTo}} rather than {{equals}}.

> Sarg.isComplementedPoints fails with anti-points which are equal under 
> `compareTo` but not `equals`
> ---------------------------------------------------------------------------------------------------
>
>                 Key: CALCITE-5722
>                 URL: https://issues.apache.org/jira/browse/CALCITE-5722
>             Project: Calcite
>          Issue Type: Bug
>    Affects Versions: 1.34.0
>            Reporter: Ian Bertolacci
>            Assignee: Ian Bertolacci
>            Priority: Minor
>
> Example:
> {code:java}
> final Sarg<BigDecimal> badComplimentPointsSarg =
>   Sarg.of(
>     RexUnknownAs.UNKNOWN,
>     TreeRangeSet.create(
>       Arrays.asList(
>         // Create anti-point around 1, with different scales
>         Range.lessThan(new BigDecimal("1")),
>         Range.greaterThan(new BigDecimal("1.00000000000"))
>       )
>     )
>   );
> assertThat(badComplimentPointsSarg.isComplementedPoints(), is(true));
> {code}
> will fail.
> This is because [RangeSets.isPoints uses direct equality and not 
> `Comparable.compareTo` 
> equality|https://github.com/apache/calcite/blob/main/core/src/main/java/org/apache/calcite/util/RangeSets.java#LL132C1-L133C1]
> The values {{`1`}} and {{`1.00000000000`}} are not equal under 
> `BigDecimal.equals` but are equal under `BigDecimal.compareTo`.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to