[ 
https://issues.apache.org/jira/browse/CALCITE-7120?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Steve Carlin updated CALCITE-7120:
----------------------------------
    Description: 
Currently, i
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.

 

  was:
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.



 


> Allow finer granularity for integer literals
> --------------------------------------------
>
>                 Key: CALCITE-7120
>                 URL: https://issues.apache.org/jira/browse/CALCITE-7120
>             Project: Calcite
>          Issue Type: Improvement
>          Components: core
>            Reporter: Steve Carlin
>            Priority: Major
>
> Currently, i
> 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)

Reply via email to