Francesco Guardiani created FLINK-24847: -------------------------------------------
Summary: Decide the overflows behaviour Key: FLINK-24847 URL: https://issues.apache.org/jira/browse/FLINK-24847 Project: Flink Issue Type: Sub-task Components: Table SQL / API, Table SQL / Planner, Table SQL / Runtime Affects Versions: 1.14.0 Reporter: Francesco Guardiani Right now we have inconsistent behavior when it comes down to overflows, depending on whether the value comes from a literal or from a value generated by the runtime (eg after a sum). In particular, I tracked down an issue when trying to execute {{CAST(9.2345682E9):INTEGER}} which returns {{644633299}} instead of {{2147483647}} (the result of {{(int)9234567891.12f}}, because Calcite changes the type of the literal to INTEGER, skipping completely our casting logic in codegen and just forcing us to generate a literal using {{literal.getValue().intValue()}} (Note that Calcite uses {{BigDecimal}} for every numeric, no matter the type). Relevant code related to the issue: * {{RexBuilder#makeCast}} * {{GenerateUtils#generateLiteral}} This issue brings me to the following questions: * Should we throw an error on overflows? ** If yes, should this be the default behavior or just something we configure behind a flag? ** If no, should we have consistent and useful results when overflows (e.g. max value)? *** If yes, what should be those overflow values? *** If no, do we keep everything as it is and document that the user needs to be careful about overflows? -- This message was sent by Atlassian Jira (v8.20.1#820001)