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)