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

Mihai Budiu commented on CALCITE-6706:
--------------------------------------

The test as written by [~zstan] gives the correct result.
This is because the default conformance does not use checked arithmetic, and 
without checked arithmetic -(-32768) returns -32768, ignoring the overflow.

For the test to produce a runtime failure one should use a conformance which 
requires checked arithmetic, e.g., rewrite the test as follows:

{code:java}
  @Test void testCastOverflow() {
    final SqlOperatorFixture f = 
fixture().withConformance(SqlConformanceEnum.BIG_QUERY);
    f.checkFails("SELECT -CAST(-32768 AS SMALLINT)",
        ".*Value -32768 does not fit in a SMALLINT", true);
  }
{code}

BIG_QUERY is one of the conformances which I could check always requires 
checked arithmetic.

And indeed, this test fails, because there *is* a bug. I will submit a fix for 
this bug right away. 

> Explicit cast to numeric type doesn't check overflow
> ----------------------------------------------------
>
>                 Key: CALCITE-6706
>                 URL: https://issues.apache.org/jira/browse/CALCITE-6706
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.38.0
>            Reporter: Evgeny Stanilovsky
>            Assignee: Mihai Budiu
>            Priority: Major
>
> Seems this issue need to be continuation of [1] issue
> This test (placed into SqlOperatorTest)  need to be failed but it passed:
> {noformat}
>   @Test void testCast0() {
>     final SqlOperatorFixture f = fixture();
>     f.checkFails("SELECT -CAST(-32768 AS SMALLINT)",
>         ".*Value 32768 out of range", true);
>   }
> {noformat}
> [1] https://issues.apache.org/jira/browse/CALCITE-5990



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

Reply via email to