Vladimir Sitnikov created CALCITE-4678:
------------------------------------------

             Summary: AssertionError: result mismatch when simplifying 
case+search+isdistinctfrom+isnottrue
                 Key: CALCITE-4678
                 URL: https://issues.apache.org/jira/browse/CALCITE-4678
             Project: Calcite
          Issue Type: Improvement
          Components: core
            Reporter: Vladimir Sitnikov


Frankly speaking, I do not know what triggers the issue. so the issue summary 
is abstract for now.

I do not know the expected outcome, however, I expect that Calcite should not 
fail with AssertionErrors.

Test case:

{code:java}
    checkSimplifyAs(
        isNotTrue(
            case_(
                rexBuilder.makeCall(
                    SqlStdOperatorTable.SEARCH,
                    vInt(1),
                    rexBuilder.makeSearchArgumentLiteral(
                        Sarg.of(
                            RexUnknownAs.TRUE,
                            
ImmutableRangeSet.of(Range.lessThan(BigDecimal.ZERO))),
                        tInt())),
                trueLiteral,
                le(trueLiteral, isDistinctFrom(literal(0), literal(0))))),
        RexUnknownAs.TRUE,
        is("no idea what is expected"));
{code}

Error:

{noformat}
result mismatch (unknown as TRUE): when applied to {?0.int1=NULL},
IS NOT TRUE(CASE(SEARCH(?0.int1, Sarg[(-∞..0); NULL AS TRUE]), true, <=(true, 
IS DISTINCT FROM(0, 0)))) yielded false;
AND(IS NOT DISTINCT FROM(0, 0), >=(?0.int1, 0)) yielded true
java.lang.AssertionError: result mismatch (unknown as TRUE): when applied to 
{?0.int1=NULL},
IS NOT TRUE(CASE(SEARCH(?0.int1, Sarg[(-∞..0); NULL AS TRUE]), true, <=(true, 
IS DISTINCT FROM(0, 0)))) yielded false;
AND(IS NOT DISTINCT FROM(0, 0), >=(?0.int1, 0)) yielded true
        at org.apache.calcite.rex.RexSimplify.verify(RexSimplify.java:2098)
        at 
org.apache.calcite.rex.RexSimplify.simplifyUnknownAs(RexSimplify.java:250)
        at 
org.apache.calcite.rex.RexProgramTestBase.checkSimplifyAs(RexProgramTestBase.java:152){noformat}


The relevant fuzzer-driven case is
{code:java}
  @Test void singleFuzzyTest() {
    Random r = new Random();
    r.setSeed(6192825841324574146L);
    RexFuzzer fuzzer = new RexFuzzer(rexBuilder, typeFactory);
    generateRexAndCheckTrueFalse(fuzzer, r);
  }{code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to