[ 
https://issues.apache.org/jira/browse/IGNITE-23772?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Vladimir Steshin updated IGNITE-23772:
--------------------------------------
    Description: 
Consider:
*1)* {code:java}
assertQuery("SELECT DATE '1582-10-05' + INTERVAL 1 
DAYS").returns(Date.valueOf("1582-10-06")).check();
{code}
Result:
{code:java}
class org.apache.ignite.internal.processors.query.IgniteSQLException: Failed to 
validate query. From line 1, column 25 to line 1, column 41: Illegal DATE 
literal '1582-10-05': not in format 'yyyy-MM-dd'
{code}

*2)* {code:java}
assertQuery("SELECT DATE '1582-10-01' + INTERVAL 1 
DAYS").returns(Date.valueOf("1582-10-02")).check();
{code}
Result:
Doesn't fail, but but the result is incorrect.
{code:java}
java.lang.AssertionError: Collections are not equal (position 0):
Expected: [[1582-10-02]]
Actual:   [[1582-09-22]]
{code}

*3)* OK
{code:java}
assertQuery("SELECT DATE '1583-10-05' + INTERVAL 1 
DAYS").returns(Date.valueOf("1583-10-06")).check();
{code}

The problem is in variation of date conversion in java.util.Date:
https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/19fb8f93c59dfd791f62d41f332db9e306bc1422/src/java.base/share/classes/java/util/Date.java#L1238
https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/19fb8f93c59dfd791f62d41f332db9e306bc1422/src/java.base/share/classes/java/util/Date.java#L1279

The problem is in variation of date conversion in java.util.Date:
https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/19fb8f93c59dfd791f62d41f332db9e306bc1422/src/java.base/share/classes/java/util/Date.java#L1238
https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/19fb8f93c59dfd791f62d41f332db9e306bc1422/src/java.base/share/classes/java/util/Date.java#L1279

When Avatica does calculation in Julian calendar. 


  was:
Consider:
1) {code:java}
assertQuery("SELECT DATE '1582-10-05' + INTERVAL 1 
DAYS").returns(Date.valueOf("1582-10-06")).check();
{code}
Result:
{code:java}
class org.apache.ignite.internal.processors.query.IgniteSQLException: Failed to 
validate query. From line 1, column 25 to line 1, column 41: Illegal DATE 
literal '1582-10-05': not in format 'yyyy-MM-dd'
{code}

2) {code:java}
assertQuery("SELECT DATE '1582-10-01' + INTERVAL 1 
DAYS").returns(Date.valueOf("1582-10-02")).check();
{code}
Result:
Doesn't fail, but but the result is incorrect.
{code:java}
java.lang.AssertionError: Collections are not equal (position 0):
Expected: [[1582-10-02]]
Actual:   [[1582-09-22]]
{code}

3) OK
{code:java}
assertQuery("SELECT DATE '1583-10-05' + INTERVAL 1 
DAYS").returns(Date.valueOf("1583-10-06")).check();
{code}

The problem is in variation of date conversion in java.util.Date:
https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/19fb8f93c59dfd791f62d41f332db9e306bc1422/src/java.base/share/classes/java/util/Date.java#L1238
https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/19fb8f93c59dfd791f62d41f332db9e306bc1422/src/java.base/share/classes/java/util/Date.java#L1279

The problem is in variation of date conversion in java.util.Date:
https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/19fb8f93c59dfd791f62d41f332db9e306bc1422/src/java.base/share/classes/java/util/Date.java#L1238
https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/19fb8f93c59dfd791f62d41f332db9e306bc1422/src/java.base/share/classes/java/util/Date.java#L1279

When Avatica does calculation in Julian calendar. 



> Calcite. Incorrect processing of old dates.
> -------------------------------------------
>
>                 Key: IGNITE-23772
>                 URL: https://issues.apache.org/jira/browse/IGNITE-23772
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Vladimir Steshin
>            Priority: Minor
>
> Consider:
> *1)* {code:java}
> assertQuery("SELECT DATE '1582-10-05' + INTERVAL 1 
> DAYS").returns(Date.valueOf("1582-10-06")).check();
> {code}
> Result:
> {code:java}
> class org.apache.ignite.internal.processors.query.IgniteSQLException: Failed 
> to validate query. From line 1, column 25 to line 1, column 41: Illegal DATE 
> literal '1582-10-05': not in format 'yyyy-MM-dd'
> {code}
> *2)* {code:java}
> assertQuery("SELECT DATE '1582-10-01' + INTERVAL 1 
> DAYS").returns(Date.valueOf("1582-10-02")).check();
> {code}
> Result:
> Doesn't fail, but but the result is incorrect.
> {code:java}
> java.lang.AssertionError: Collections are not equal (position 0):
> Expected: [[1582-10-02]]
> Actual:   [[1582-09-22]]
> {code}
> *3)* OK
> {code:java}
> assertQuery("SELECT DATE '1583-10-05' + INTERVAL 1 
> DAYS").returns(Date.valueOf("1583-10-06")).check();
> {code}
> The problem is in variation of date conversion in java.util.Date:
> https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/19fb8f93c59dfd791f62d41f332db9e306bc1422/src/java.base/share/classes/java/util/Date.java#L1238
> https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/19fb8f93c59dfd791f62d41f332db9e306bc1422/src/java.base/share/classes/java/util/Date.java#L1279
> The problem is in variation of date conversion in java.util.Date:
> https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/19fb8f93c59dfd791f62d41f332db9e306bc1422/src/java.base/share/classes/java/util/Date.java#L1238
> https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/19fb8f93c59dfd791f62d41f332db9e306bc1422/src/java.base/share/classes/java/util/Date.java#L1279
> When Avatica does calculation in Julian calendar. 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to