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)

Reply via email to