You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flink.apache.org by "jackylau (Jira)" <ji...@apache.org> on 2023/06/16 03:20:00 UTC
[jira] [Created] (FLINK-32363) calcite 1.21 supports type coercion but flink don't enable it in validate
jackylau created FLINK-32363:
--------------------------------
Summary: calcite 1.21 supports type coercion but flink don't enable it in validate
Key: FLINK-32363
URL: https://issues.apache.org/jira/browse/FLINK-32363
Project: Flink
Issue Type: Improvement
Affects Versions: 1.18.0
Reporter: jackylau
Fix For: 1.18.0
1) calcite 1.21 supports type coercion and enabled default while flink disabled
2) spark /mysql can run it
3) although, we can make it run by select count(distinct `if`(1>5, 'x', cast(null as varchar)));
i think we should enable it or offers a config to enable it
{code:java}
Flink SQL> select count(distinct `if`(1>5, 'x', null));
[ERROR] Could not execute SQL statement. Reason:
org.apache.calcite.sql.validate.SqlValidatorException: Illegal use of 'NULL'{code}
{code:java}
// it can run in spark
spark-sql (default)> select count(distinct `if`(1>5, 'x', null));
0
{code}
{code:java}
private def createSqlValidator(catalogReader: CalciteCatalogReader) = {
val validator = new FlinkCalciteSqlValidator(
operatorTable,
catalogReader,
typeFactory,
SqlValidator.Config.DEFAULT
.withIdentifierExpansion(true)
.withDefaultNullCollation(FlinkPlannerImpl.defaultNullCollation)
.withTypeCoercionEnabled(false)
) // Disable implicit type coercion for now.
validator
} {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)