You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Steve Carlin (Jira)" <ji...@apache.org> on 2025/08/02 16:46:00 UTC

[jira] [Created] (CALCITE-7120) Allow SqlNumericLiteral to create more restrictive integer types

Steve Carlin created CALCITE-7120:
-------------------------------------

             Summary: Allow SqlNumericLiteral to create more restrictive integer types
                 Key: CALCITE-7120
                 URL: https://issues.apache.org/jira/browse/CALCITE-7120
             Project: Calcite
          Issue Type: Improvement
          Components: core
            Reporter: Steve Carlin


It would be nice if SqlNumericLiteral created more restrictive datatypes for integers. 

There is already some logic in there that differentiates between INTEGER and BIGINT



 
{code:java}
          if ((l >= Integer.MIN_VALUE) && (l <= Integer.MAX_VALUE)) {
            result = SqlTypeName.INTEGER;
          } else {
            result = SqlTypeName.BIGINT;
          }   
{code}
If we can enhance this for TINYINT and SMALLINT, oh how wonderful that would be for me.

Background: Without this, it is causing me to use various workarounds by overriding methods that are less than ideal.  Upon upgrade from 1.37 to 1.40, my current implementation failed.  A query such as ...

"SELECT 1 INTERSECT SELECT tinyint_col FROM my_tbl" 

... is generating a validated SQLNode tree which casts the tinyint_col to an INTEGER (when using type coercing) which causes me issues.  (side note, I need type coercing enabled for other issues so I can't just turn it off)

Should we do this via a config option?  Putting this in by default will probably break a lot of people's code.



 



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