Pavel Pereslegin created IGNITE-24889:
-----------------------------------------

             Summary: Incorrect precision is calculated for temporal value in 
some cases
                 Key: IGNITE-24889
                 URL: https://issues.apache.org/jira/browse/IGNITE-24889
             Project: Ignite
          Issue Type: Bug
          Components: sql
            Reporter: Pavel Pereslegin


1. Literal with interval arithmetic

{code:java}
    assertQuery("SELECT TIMESTAMP '2021-01-01 00:00:00.1' + INTERVAL '0.001' 
SECOND")
            .columnMetadata(new 
MetadataMatcher().type(ColumnType.DATETIME).precision(3)) // Failing here: 
expected: 3, actual: 1
            .returns(LocalDateTime.of(2021, Month.JANUARY, 01, 00, 00, 00, 
101000000))
            .check();
{code}

2. Dynamic param

{code:java}
    // precision = 1
    sql("CREATE TABLE test(id int PRIMARY KEY, ts TIMESTAMP(1))");

    LocalDateTime ts = LocalDateTime.of(2021, Month.JANUARY, 01, 00, 00, 00, 
111000000);

    sql("INSERT INTO test values (1, ?)", ts);

    LocalDateTime truncated = LocalDateTime.of(2021, Month.JANUARY, 01, 00, 00, 
00, 100000000);

    assertQuery("SELECT ts FROM test")
            .columnMetadata(new MetadataMatcher().precision(1))
//       Expected: 2021-01-01T00:00:00.100 <class java.time.LocalDateTime>
//       Actual:   2021-01-01T00:00:00.111 <class java.time.LocalDateTime>
            .returns(truncated)
            .check();
{code}



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

Reply via email to