You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Vladimir Sitnikov (Jira)" <ji...@apache.org> on 2019/11/13 22:17:00 UTC

[jira] [Commented] (CALCITE-3500) Validator infers incorrect type for "IS NOT DISTINCT FROM"

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

Vladimir Sitnikov commented on CALCITE-3500:
--------------------------------------------

https://github.com/apache/calcite/blob/9c7c3ecaa604b68af4522def10365de1f1bbd2fa/core/src/main/java/org/apache/calcite/plan/Strong.java#L232

map.put(SqlKind.IS_NOT_DISTINCT_FROM, Policy.NOT_NULL);

It seems to be ok.

{noformat}Caused by: java.lang.AssertionError{noformat}
If only there was an understandable message...

> Validator infers incorrect type for "IS NOT DISTINCT FROM"
> ----------------------------------------------------------
>
>                 Key: CALCITE-3500
>                 URL: https://issues.apache.org/jira/browse/CALCITE-3500
>             Project: Calcite
>          Issue Type: Bug
>            Reporter: Julian Hyde
>            Priority: Major
>
> Validator infers incorrect type for "IS NOT DISTINCT FROM". I got the following output from a test:
> {noformat}
> [INFO] Running org.apache.calcite.test.fuzzer.RexProgramFuzzyTest
> 2019-11-13 13:30:16,459 [pool-1-thread-3] INFO  - Using seed 44 for rex fuzzing
> 2019-11-13 13:30:19,869 [pool-1-thread-3] INFO  - Rex fuzzing results: number of cases tested=2000, failed cases=0, duplicate failures=0, fuzz rate=586 per second
> Shrinked to 36669 chars, time remaining 19997
> Shrinked to 9704 chars, time remaining 19996
> Shrinked to 9631 chars, time remaining 19993
> Shrinked to 9287 chars, time remaining 19992
> Shrinked to 7058 chars, time remaining 19989
> Shrinked to 6507 chars, time remaining 19986
> Shrinked to 5317 chars, time remaining 19985
> Shrinked to 5191 chars, time remaining 19985
> Shrinked to 4990 chars, time remaining 19984
> Shrinked to 4844 chars, time remaining 19984
> Shrinked to 3877 chars, time remaining 19981
> Shrinked to 3628 chars, time remaining 19981
> Shrinked to 275 chars, time remaining 19980
> Shrinked to 258 chars, time remaining 19980
> Shrinked to 239 chars, time remaining 19980
> Shrinked to 188 chars, time remaining 19979
> 2019-11-13 13:30:20,616 [pool-1-thread-1] INFO  - Rex fuzzing results: number of cases tested=406, failed cases=1, duplicate failures=0, fuzz rate=100 per second
> 2019-11-13 13:30:20,617 [pool-1-thread-1] INFO  - Randomized test identified a potential defect. Feel free to fix that issue
> java.lang.IllegalStateException: Unable to simplify unknownAsFalse<(IS NOT DISTINCT FROM(>(+(CAST(0):INTEGER), +(0)), true), true)
> lt(isNotDistinctFrom(gt(unaryPlus(abstractCast(literal(0), tInt(true))), unaryPlus(literal(0))), trueLiteral), trueLiteral)
> 	at org.apache.calcite.test.fuzzer.RexProgramFuzzyTest.checkUnknownAs(RexProgramFuzzyTest.java:228)
> 	at org.apache.calcite.test.fuzzer.RexProgramFuzzyTest.checkUnknownAsAndShrink(RexProgramFuzzyTest.java:209)
> 	at org.apache.calcite.test.fuzzer.RexProgramFuzzyTest.checkUnknownAs(RexProgramFuzzyTest.java:172)
> 	at org.apache.calcite.test.fuzzer.RexProgramFuzzyTest.generateRexAndCheckTrueFalse(RexProgramFuzzyTest.java:462)
> 	Suppressed: org.apache.calcite.test.fuzzer.RexProgramFuzzyTest$1: seed -104518976443406885
> Caused by: java.lang.AssertionError
> 	at org.apache.calcite.rex.RexSimplify.validateStrongPolicy(RexSimplify.java:843)
> 	at org.apache.calcite.rex.RexSimplify.simplifyIs2(RexSimplify.java:682)
> 	at org.apache.calcite.rex.RexSimplify.simplifyIs(RexSimplify.java:653)
> 	at org.apache.calcite.rex.RexSimplify.simplify(RexSimplify.java:281)
> {noformat}
> I believe that it means that a particular call to {{IS NOT DISTINCT FROM}} has a not-null return and has nullable arguments and this contradict's the Strong.ANY policy. I suspect that the policy for that operator should not be Strong.ANY.
> Discovered by the {{validateStrongPolicy}} method added in CALCITE-3457.



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