[ https://issues.apache.org/jira/browse/CALCITE-3081?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16845420#comment-16845420 ]
Danny Chan commented on CALCITE-3081: ------------------------------------- This question kind of belongs to the scope of implicit type coercion CALCITE-2302, because Calcite is type strong(strict), so with a literal NULL we can not infer which type the literal is(NULL is not a type in Calcite now). > Literal NULL should be generated in SqlDialect > ---------------------------------------------- > > Key: CALCITE-3081 > URL: https://issues.apache.org/jira/browse/CALCITE-3081 > Project: Calcite > Issue Type: Bug > Affects Versions: 1.19.0 > Reporter: Feng Zhu > Priority: Minor > > In Calcite, this simple query will throw exception during validation, even it > is ok in many databases. > {code:java} > Query: > final String query = "select NULL as col " > + "from \"foodmart\".\"product\""; > Exception > org.apache.calcite.tools.ValidationException: > org.apache.calcite.runtime.CalciteContextException: From line 1, column 8 to > line 1, column 11: Illegal use of 'NULL' > {code} > The right way to use 'NULL' in Calcite is: > {code:java} > final String query = "select cast(NULL as integer) as col " > + "from \"foodmart\".\"product\""; > {code} > However, the converted query by *RelToSqlConverter* is illegal in Calcite. > {code:java} > SELECT NULL AS \"COL\" > FROM \"foodmart\".\"product\" > {code} > The issue is trivial, but it is against to general sense. Maybe we can > generate NULL literal in SqlDialect? -- This message was sent by Atlassian JIRA (v7.6.3#76005)