[
https://issues.apache.org/jira/browse/IGNITE-20889?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Iurii Gerzhedovich updated IGNITE-20889:
----------------------------------------
Epic Link: IGNITE-22700
> Sql. Change type derivation for literals and expressions for overflowed BIGINT
> ------------------------------------------------------------------------------
>
> Key: IGNITE-20889
> URL: https://issues.apache.org/jira/browse/IGNITE-20889
> Project: Ignite
> Issue Type: Improvement
> Components: sql
> Affects Versions: 3.0.0-beta1
> Reporter: Evgeny Stanilovsky
> Priority: Major
> Labels: ignite-3
>
> After [1] will be merged, it become possible to control overflow with numeric
> operations, there are 3 places in code (will be notified under this issue)
> which have been changed but seems it`s all due to partially incorrect
> (calcite?) implementation. I spend a bit time and found that case with
> overflowed BIGINT insertion: *ItDmlTest#testInsertValueOverflow* can be fixed
> by correct implementing: *SqlNumericLiteral#createSqlType*, i fast check and
> seems it will began work properly well, without additional code changes (all
> core manipulations in scope of [1] can be reverted). The second case:
> insertion for overflowed SUM of BIGINT additional fix need to be done,
> check: *SqlValidatorImpl#getValidatedNodeType*
> Further research is required here.
> [1] https://issues.apache.org/jira/browse/IGNITE-18662
> Just for note, for all above checks - i made dirty hack here:
> IgniteSqlValidator#deriveType
> {code:java}
> if (expr instanceof SqlNumericLiteral) {
> SqlNumericLiteral expr0 = (SqlNumericLiteral) expr;
> if (expr0.toValue().length() > 10 && expr0.getTypeName() ==
> SqlTypeName.DECIMAL) {
> return typeFactory.createSqlType(
> SqlTypeName.DECIMAL,
> requireNonNull(20, "prec"),
> 0);
> }
> }
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)