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

Vladimir Steshin updated IGNITE-23468:
--------------------------------------
    Description: 
Calcite v1.37 introduced 'FORMAT' operand in 'CAST. We should support it or 
raise an unsupporting error. Since the operator seems not to be popular among 
DBs. Let's rise a proper error. At least for now.

Currently, with '-ea' JVM option an assertion appears:
{code:java}
sql("SELECT CAST('2021-01-01' AS DATE FORMAT 'DD-MM-YY')")
{code}
{code:java}
 java.lang.AssertionError: null
        at 
org.apache.ignite.internal.processors.query.calcite.exec.exp.RexImpTable$CastImplementor.implementSafe(RexImpTable.java:1517)
 ~[classes/:?]
        at 
org.apache.ignite.internal.processors.query.calcite.exec.exp.RexImpTable$AbstractRexCallImplementor.genValueStatement(RexImpTable.java:1956)
 ~[classes/:?]
        at 
org.apache.ignite.internal.processors.query.calcite.exec.exp.RexImpTable$AbstractRexCallImplementor.implement(RexImpTable.java:1917)
 ~[classes/:?]
        at 
org.apache.ignite.internal.processors.query.calcite.exec.exp.RexToLixTranslator.visitCall(RexToLixTranslator.java:1052)
 ~[classes/:?]
        at 
org.apache.ignite.internal.processors.query.calcite.exec.exp.RexToLixTranslator.visitCall(RexToLixTranslator.java:81)
 ~[classes/:?]
{code}

without '-ea':
{code:java}
assertQuery("SELECT CAST('2021-01-02' AS DATE FORMAT 'DD-MM-YYYY')")
            .returns(sqlTime("02-01-2021")).check();
{code}
Error:
{code:java}
java.lang.AssertionError: Collections are not equal (position 0):
Expected: [[02-01-2021]]
Actual:   [[2021-01-02]]
{code}




  was:
Calcite 1.37 introduced 'FORMAT' operand in 'CAST. We should support it or 
raise an error. 
Currently, with '-ea' JVM option an assertion appears:
{code:java}
sql("SELECT CAST('2021-01-01' AS DATE FORMAT 'DD-MM-YY')")
{code}
{code:java}
 java.lang.AssertionError: null
        at 
org.apache.ignite.internal.processors.query.calcite.exec.exp.RexImpTable$CastImplementor.implementSafe(RexImpTable.java:1517)
 ~[classes/:?]
        at 
org.apache.ignite.internal.processors.query.calcite.exec.exp.RexImpTable$AbstractRexCallImplementor.genValueStatement(RexImpTable.java:1956)
 ~[classes/:?]
        at 
org.apache.ignite.internal.processors.query.calcite.exec.exp.RexImpTable$AbstractRexCallImplementor.implement(RexImpTable.java:1917)
 ~[classes/:?]
        at 
org.apache.ignite.internal.processors.query.calcite.exec.exp.RexToLixTranslator.visitCall(RexToLixTranslator.java:1052)
 ~[classes/:?]
        at 
org.apache.ignite.internal.processors.query.calcite.exec.exp.RexToLixTranslator.visitCall(RexToLixTranslator.java:81)
 ~[classes/:?]
{code}

without '-ea':
{code:java}
assertQuery("SELECT CAST('2021-01-02' AS DATE FORMAT 'DD-MM-YYYY')")
            .returns(sqlTime("02-01-2021")).check();
{code}
Error:
{code:java}
java.lang.AssertionError: Collections are not equal (position 0):
Expected: [[02-01-2021]]
Actual:   [[2021-01-02]]
{code}





> Calcite. Fix error of unsupported 'FORMAT' in 'CAST'.
> -----------------------------------------------------
>
>                 Key: IGNITE-23468
>                 URL: https://issues.apache.org/jira/browse/IGNITE-23468
>             Project: Ignite
>          Issue Type: Bug
>    Affects Versions: 2.17
>            Reporter: Vladimir Steshin
>            Assignee: Vladimir Steshin
>            Priority: Minor
>             Fix For: 2.17
>
>
> Calcite v1.37 introduced 'FORMAT' operand in 'CAST. We should support it or 
> raise an unsupporting error. Since the operator seems not to be popular among 
> DBs. Let's rise a proper error. At least for now.
> Currently, with '-ea' JVM option an assertion appears:
> {code:java}
> sql("SELECT CAST('2021-01-01' AS DATE FORMAT 'DD-MM-YY')")
> {code}
> {code:java}
>  java.lang.AssertionError: null
>       at 
> org.apache.ignite.internal.processors.query.calcite.exec.exp.RexImpTable$CastImplementor.implementSafe(RexImpTable.java:1517)
>  ~[classes/:?]
>       at 
> org.apache.ignite.internal.processors.query.calcite.exec.exp.RexImpTable$AbstractRexCallImplementor.genValueStatement(RexImpTable.java:1956)
>  ~[classes/:?]
>       at 
> org.apache.ignite.internal.processors.query.calcite.exec.exp.RexImpTable$AbstractRexCallImplementor.implement(RexImpTable.java:1917)
>  ~[classes/:?]
>       at 
> org.apache.ignite.internal.processors.query.calcite.exec.exp.RexToLixTranslator.visitCall(RexToLixTranslator.java:1052)
>  ~[classes/:?]
>       at 
> org.apache.ignite.internal.processors.query.calcite.exec.exp.RexToLixTranslator.visitCall(RexToLixTranslator.java:81)
>  ~[classes/:?]
> {code}
> without '-ea':
> {code:java}
> assertQuery("SELECT CAST('2021-01-02' AS DATE FORMAT 'DD-MM-YYYY')")
>             .returns(sqlTime("02-01-2021")).check();
> {code}
> Error:
> {code:java}
> java.lang.AssertionError: Collections are not equal (position 0):
> Expected: [[02-01-2021]]
> Actual:   [[2021-01-02]]
> {code}



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

Reply via email to