You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Corvin Kuebler (Jira)" <ji...@apache.org> on 2023/03/30 09:21:00 UTC

[jira] [Created] (CALCITE-5622) Cast is lost from Plan to Postgres Statement

Corvin Kuebler created CALCITE-5622:
---------------------------------------

             Summary: Cast is lost from Plan to Postgres Statement
                 Key: CALCITE-5622
                 URL: https://issues.apache.org/jira/browse/CALCITE-5622
             Project: Calcite
          Issue Type: Bug
          Components: jdbc-adapter
    Affects Versions: 1.34.0
            Reporter: Corvin Kuebler


Hey,

I found an issue with translation from plan to postgres sql statement.

Adding the following Test to `JdbcAdapterTests.java` exposes the bug:


{code:java}
@Test void testDateCastPlan() {
final String sql = "SELECT CAST(T1.\"brand_name\" AS DATE)\n"
+ "FROM \"foodmart\".\"product\" AS T1\n"
+ "WHERE CAST(T1.\"brand_name\" AS DATE) = CAST('2023-03-27' AS DATE)";
CalciteAssert.model(FoodmartSchema.FOODMART_MODEL)
.query(sql)
.explainContains("PLAN=JdbcToEnumerableConverter\n" +
" JdbcProject(EXPR$0=[CAST($2):DATE])\n" +
" JdbcFilter(condition=[=(CAST($2):DATE, 2023-03-27)])\n" +
" JdbcTableScan(table=[[foodmart, product]])\n\n")
.runs()
.enable(CalciteAssert.DB == DatabaseInstance.POSTGRESQL)
.planHasSql("SELECT CAST(\"brand_name\" AS DATE)\n" +
"FROM \"foodmart\".\"product\"\n" +
"CAST(\"brand_name\" AS DATE)= DATE '2023-03-27'");
}{code}
 
The plan contains the cast of the column to DATE type. The resulting SQL Statement however does not contain the cast. 
The test fails in run, as the column I'm trying to cast does not contain date values but the sql that is being sent to postgres is already wrong.
 
I'd be happy if you could take a look at it.
 
Best regards,
Corvin
 
 



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