You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@calcite.apache.org by "Vladimir Sitnikov (Jira)" <ji...@apache.org> on 2021/07/06 10:02:00 UTC
[jira] [Created] (CALCITE-4678) AssertionError: result mismatch
when simplifying case+search+isdistinctfrom+isnottrue
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)