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

Mihai Budiu updated CALCITE-6030:
---------------------------------
    Description: 
The following test, when added to SqlOperatorTest, causes a RuntimeException:
{code:java}
@Test void testDatePart() {
    final SqlOperatorFixture f = fixture().withLibrary(SqlLibrary.POSTGRESQL)
        .withParserConfig(p -> p.withParserFactory(SqlBabelParserImpl.FACTORY));
    f.checkScalar("DATE_PART(second, TIME '10:10:10')",
        "10", "BIGINT NOT NULL");
  }
{code}

Note that this needs https://github.com/apache/calcite/pull/3445 to execute 
correctly.

The stack trace is:

{code:java}
Suppressed: java.lang.RuntimeException: cannot translate call DATE_PART($t1, 
$t2)
                at 
org.apache.calcite.adapter.enumerable.RexToLixTranslator.visitCall(RexToLixTranslator.java:1160)
                at 
org.apache.calcite.adapter.enumerable.RexToLixTranslator.visitCall(RexToLixTranslator.java:101)
                at org.apache.calcite.rex.RexCall.accept(RexCall.java:189)
{code}

According to the documentation DATE_PART is just an alias for EXTRACT, which is 
(mostly) implemented, so this should work.

  was:
The following test, when added to SqlOperatorTest, causes a RuntimeException:
{code:java}
@Test void testDatePart() {
    final SqlOperatorFixture f = fixture().withLibrary(SqlLibrary.POSTGRESQL)
        .withParserConfig(p -> p.withParserFactory(SqlBabelParserImpl.FACTORY));
    f.checkScalar("DATE_PART(second, TIME '10:10:10')",
        "10", "BIGINT NOT NULL");
  }
{code}

Note that this needs https://github.com/apache/calcite/pull/3445 to execute 
correctly.

The stack trace is:

{code:java}
Suppressed: java.lang.RuntimeException: cannot translate call DATE_PART($t1, 
$t2)
                at 
org.apache.calcite.adapter.enumerable.RexToLixTranslator.visitCall(RexToLixTranslator.java:1160)
                at 
org.apache.calcite.adapter.enumerable.RexToLixTranslator.visitCall(RexToLixTranslator.java:101)
                at org.apache.calcite.rex.RexCall.accept(RexCall.java:189)
{code}

According to the documentation DATE_PART is just an alias for EXTRACT, which is 
(mostly implemented), so this should work.


> DATE_PART is not handled by the RexToLixTranslator
> --------------------------------------------------
>
>                 Key: CALCITE-6030
>                 URL: https://issues.apache.org/jira/browse/CALCITE-6030
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.35.0
>            Reporter: Mihai Budiu
>            Priority: Minor
>
> The following test, when added to SqlOperatorTest, causes a RuntimeException:
> {code:java}
> @Test void testDatePart() {
>     final SqlOperatorFixture f = fixture().withLibrary(SqlLibrary.POSTGRESQL)
>         .withParserConfig(p -> 
> p.withParserFactory(SqlBabelParserImpl.FACTORY));
>     f.checkScalar("DATE_PART(second, TIME '10:10:10')",
>         "10", "BIGINT NOT NULL");
>   }
> {code}
> Note that this needs https://github.com/apache/calcite/pull/3445 to execute 
> correctly.
> The stack trace is:
> {code:java}
> Suppressed: java.lang.RuntimeException: cannot translate call DATE_PART($t1, 
> $t2)
>               at 
> org.apache.calcite.adapter.enumerable.RexToLixTranslator.visitCall(RexToLixTranslator.java:1160)
>               at 
> org.apache.calcite.adapter.enumerable.RexToLixTranslator.visitCall(RexToLixTranslator.java:101)
>               at org.apache.calcite.rex.RexCall.accept(RexCall.java:189)
> {code}
> According to the documentation DATE_PART is just an alias for EXTRACT, which 
> is (mostly) implemented, so this should work.



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

Reply via email to