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)

Reply via email to