You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "godfrey he (Jira)" <ji...@apache.org> on 2020/01/02 02:56:00 UTC
[jira] [Comment Edited] (FLINK-15381) INSERT INTO VALUES statement
fails if a cast project is applied
[ https://issues.apache.org/jira/browse/FLINK-15381?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17006544#comment-17006544 ]
godfrey he edited comment on FLINK-15381 at 1/2/20 2:55 AM:
------------------------------------------------------------
The collection trait is generated when creating {{LogicalProject}} in {{SqlToRelConverter}}. code is
{code:java}
public static LogicalProject create(final RelNode input,
final List<? extends RexNode> projects, RelDataType rowType) {
final RelOptCluster cluster = input.getCluster();
final RelMetadataQuery mq = cluster.getMetadataQuery();
final RelTraitSet traitSet =
cluster.traitSet().replace(Convention.NONE)
.replaceIfs(RelCollationTraitDef.INSTANCE,
() -> RelMdCollation.project(mq, input, projects));
return new LogicalProject(cluster, traitSet, input, projects, rowType);
}
{code}
was (Author: godfreyhe):
The collection trait is generated when creating {{LogicalProject }} in {{SqlToRelConverter}}. code is
{code:java}
public static LogicalProject create(final RelNode input,
final List<? extends RexNode> projects, RelDataType rowType) {
final RelOptCluster cluster = input.getCluster();
final RelMetadataQuery mq = cluster.getMetadataQuery();
final RelTraitSet traitSet =
cluster.traitSet().replace(Convention.NONE)
.replaceIfs(RelCollationTraitDef.INSTANCE,
() -> RelMdCollation.project(mq, input, projects));
return new LogicalProject(cluster, traitSet, input, projects, rowType);
}
{code}
> INSERT INTO VALUES statement fails if a cast project is applied
> ---------------------------------------------------------------
>
> Key: FLINK-15381
> URL: https://issues.apache.org/jira/browse/FLINK-15381
> Project: Flink
> Issue Type: Bug
> Components: Table SQL / Planner
> Reporter: Jark Wu
> Assignee: godfrey he
> Priority: Blocker
> Labels: pull-request-available
> Fix For: 1.10.0
>
> Attachments: image-2019-12-26-14-56-00-634.png
>
> Time Spent: 10m
> Remaining Estimate: 0h
>
> The following query will fail:
> {code:scala}
> @Test
> def test(): Unit = {
> val sinkDDL =
> """
> |create table t2(
> | a int,
> | b string
> |) with (
> | 'connector' = 'COLLECTION'
> |)
> """.stripMargin
> val query =
> """
> |insert into t2 select cast(a as int), cast(b as varchar) from (values (3, 'c')) T(a,b)
> """.stripMargin
> tableEnv.sqlUpdate(sinkDDL)
> tableEnv.sqlUpdate(query)
> execJob("testJob")
> }
> {code}
> exception:
> {code}
> org.apache.flink.table.api.TableException: Cannot generate a valid execution plan for the given query:
> LogicalSink(name=[`default_catalog`.`default_database`.`t2`], fields=[a, b])
> +- LogicalProject(EXPR$0=[$0], EXPR$1=[CAST($1):VARCHAR(2147483647) CHARACTER SET "UTF-16LE" NOT NULL])
> +- LogicalValues(type=[RecordType(INTEGER a, CHAR(1) b)], tuples=[[{ 3, _UTF-16LE'c' }]])
> This exception indicates that the query uses an unsupported SQL feature.
> Please check the documentation for the set of currently supported SQL features.
> {code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)