Leonid Chistov created CALCITE-6115:
---------------------------------------

             Summary: Interval type specifier with zero fractional second 
precision does not pass validation
                 Key: CALCITE-6115
                 URL: https://issues.apache.org/jira/browse/CALCITE-6115
             Project: Calcite
          Issue Type: Bug
            Reporter: Leonid Chistov
            Assignee: Leonid Chistov


Consider interval expression 
{code:java}
interval '1' second(1, 0) {code}
Calcite SQL validator considers it as not correct, since it uses following 
lower bound for fractional seconds precision:
{code:java}
public static final int MIN_INTERVAL_FRACTIONAL_SECOND_PRECISION = 1;{code}
In order to reproduce this issue one can add following test cast to 
SqlValidatorTest.java:
{code:java}
@Test void testSecondIntervalExpression() {
  expr("interval '1' second(1, 0)").columnType("INTERVAL SECOND(1, 0) NOT 
NULL");
} {code}
and get an error:
{code:java}
Interval fractional second precision '0' out of range for INTERVAL SECOND(1, 0) 
{code}
However, SQL standard say:
{code:java}
An <interval fractional seconds precision>, if specified, shall be greater than 
or equal to 0 (zero)
and shall not be greater than the implementation-defined maximum. If SECOND is 
specified
and <interval fractional seconds precision> is not specified, then an <interval 
fractional seconds
precision> of 6 is implicit. {code}
Consequently, MIN_INTERVAL_FRACTIONAL_SECOND_PRECISION should be equal to 0 to 
make Calcite behavior consistent with SQL specification.



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

Reply via email to