[
https://issues.apache.org/jira/browse/CALCITE-7271?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Thomas Rebele updated CALCITE-7271:
-----------------------------------
Description:
Most of SQL queries are using the standard CAST operator that is unsafe and
should throw an error when the conversion is invalid. However, the [CAST
operation in
Druid|https://druid.apache.org/docs/latest/querying/sql-data-types/#standard-types]
returns null instead of throwing an error when the operation fails.
Currently the Druid adapter ignores the "error handling" discrepancies of the
CAST operator when pushing down such expressions. Ideally, to avoid altering
the semantics of the query the regular CAST should not be pushed to Druid.
SQL queries can use the SAFE_CAST operator instead of the standard CAST
operator and this can be pushed safely to Druid since the semantics are the
same with those offered by the engine.
The
[DruidSqlCastConverter|https://github.com/apache/calcite/blob/8b5c17e51e0c9c3f8e3db17c8d449e67e4e2974a/druid/src/main/java/org/apache/calcite/adapter/druid/DruidSqlCastConverter.java]
and potentially other classes may need modifications to handle/push the CAST
variations properly in Druid.
Related testcase: DruidAdapter2IT#testComplexExpressionsIsNull
was:
Most of SQL queries are using the standard CAST operator that is unsafe and
should throw an error when the conversion is invalid. However, the [CAST
operation in
Druid|https://druid.apache.org/docs/latest/querying/sql-data-types/#standard-types]
returns null instead of throwing an error when the operation fails.
Currently the Druid adapter ignores the "error handling" discrepancies of the
CAST operator when pushing down such expressions. Ideally, to avoid altering
the semantics of the query the regular CAST should not be pushed to Druid.
SQL queries can use the SAFE_CAST operator instead of the standard CAST
operator and this can be pushed safely to Druid since the semantics are the
same with those offered by the engine.
The
[DruidSqlCastConverter|https://github.com/apache/calcite/blob/8b5c17e51e0c9c3f8e3db17c8d449e67e4e2974a/druid/src/main/java/org/apache/calcite/adapter/druid/DruidSqlCastConverter.java]
and potentially other classes may need modifications to handle/push the CAST
variations properly in Druid.
> Prevent unsafe CAST pushdown in Druid
> -------------------------------------
>
> Key: CALCITE-7271
> URL: https://issues.apache.org/jira/browse/CALCITE-7271
> Project: Calcite
> Issue Type: Bug
> Components: druid-adapter
> Reporter: Stamatis Zampetakis
> Priority: Minor
>
> Most of SQL queries are using the standard CAST operator that is unsafe and
> should throw an error when the conversion is invalid. However, the [CAST
> operation in
> Druid|https://druid.apache.org/docs/latest/querying/sql-data-types/#standard-types]
> returns null instead of throwing an error when the operation fails.
> Currently the Druid adapter ignores the "error handling" discrepancies of the
> CAST operator when pushing down such expressions. Ideally, to avoid altering
> the semantics of the query the regular CAST should not be pushed to Druid.
> SQL queries can use the SAFE_CAST operator instead of the standard CAST
> operator and this can be pushed safely to Druid since the semantics are the
> same with those offered by the engine.
> The
> [DruidSqlCastConverter|https://github.com/apache/calcite/blob/8b5c17e51e0c9c3f8e3db17c8d449e67e4e2974a/druid/src/main/java/org/apache/calcite/adapter/druid/DruidSqlCastConverter.java]
> and potentially other classes may need modifications to handle/push the CAST
> variations properly in Druid.
> Related testcase: DruidAdapter2IT#testComplexExpressionsIsNull
--
This message was sent by Atlassian Jira
(v8.20.10#820010)