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)