Pavel Pereslegin created IGNITE-21557:
-----------------------------------------
Summary: Sql. Fix TIMESTAMP_WITH_LOCAL_TIME_ZONE arithmetic.
Key: IGNITE-21557
URL: https://issues.apache.org/jira/browse/IGNITE-21557
Project: Ignite
Issue Type: Bug
Reporter: Pavel Pereslegin
The following interval arithmetic works incorrectly
{code:SQL}
select TIMESTAMP WITH LOCAL TIME ZONE '2021-01-01 00:00:00' + INTERVAL 1 MONTH
-- result 2021-01-01 00:00:00.001
select TIMESTAMP WITH LOCAL TIME ZONE '2021-01-01 00:00:00' + INTERVAL 1 YEAR
-- result 2021-01-01 00:00:00.012
{code}
Looks like the main issue is near StandardConvertletTable#convertPlus
{code:java}
switch (rex.getType().getSqlTypeName()) {
case DATE:
case TIME:
case TIMESTAMP:
// *_WITH_LOCAL_TIME_ZONE types missed
{code}
and in DatetimeArithmeticImplementor#implementSafe
{code:java}
default:
final BuiltInMethod method =
operand0.getType().getSqlTypeName() == SqlTypeName.TIMESTAMP
? BuiltInMethod.ADD_MONTHS
: BuiltInMethod.ADD_MONTHS_INT;
return Expressions.call(method.method, trop0, trop1);
{code}
TBD: Calcite issue
--
This message was sent by Atlassian Jira
(v8.20.10#820010)