Yunfeng Zhou created FLINK-36783: ------------------------------------ Summary: CTAS from VALUES throws ValidatioonException Key: FLINK-36783 URL: https://issues.apache.org/jira/browse/FLINK-36783 Project: Flink Issue Type: Bug Components: Table SQL / API Affects Versions: 2.0-preview Reporter: Yunfeng Zhou
{code:java} @Test def test(): Unit = { tEnv.executeSql(s""" |create table myt as select b, c, d from | (values | (1, 1, 2, 'd1'), | (2, 1, 2, 'd2'), | (3, 2, 3, 'd3') | ) as V(a, b, c, d) | order by a |""".stripMargin) tEnv.executeSql(s""" |create table snk ( | b INT, | c INT, | d STRING |) with ( | 'connector' = 'values' |) |""".stripMargin) println(tEnv.explainSql("insert into snk select * from myt")) } {code} The code above throws the following exception {code} org.apache.flink.table.api.ValidationException: SQL validation failed. At line 8, column 12: Column 'a' not found in any table at org.apache.flink.table.planner.calcite.FlinkPlannerImpl.org$apache$flink$table$planner$calcite$FlinkPlannerImpl$$validate(FlinkPlannerImpl.scala:204) at org.apache.flink.table.planner.calcite.FlinkPlannerImpl.validate(FlinkPlannerImpl.scala:117) at org.apache.flink.table.planner.operations.SqlNodeToOperationConversion.convert(SqlNodeToOperationConversion.java:258) at org.apache.flink.table.planner.operations.MergeTableAsUtil.maybeRewriteQuery(MergeTableAsUtil.java:151) at org.apache.flink.table.planner.operations.SqlCreateTableConverter.convertCreateTableAS(SqlCreateTableConverter.java:124) at org.apache.flink.table.planner.operations.SqlNodeToOperationConversion.convertValidatedSqlNode(SqlNodeToOperationConversion.java:306) at org.apache.flink.table.planner.operations.SqlNodeToOperationConversion.convert(SqlNodeToOperationConversion.java:259) at org.apache.flink.table.planner.delegation.ParserImpl.parse(ParserImpl.java:106) at org.apache.flink.table.api.internal.TableEnvironmentImpl.executeSql(TableEnvironmentImpl.java:728) at org.apache.flink.table.planner.runtime.batch.sql.CalcITCase.test(CalcITCase.scala:67) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at java.base/java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:189) at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290) at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020) at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656) at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594) at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183) Caused by: org.apache.calcite.runtime.CalciteContextException: At line 8, column 12: Column 'a' not found in any table at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490) at org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:505) at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:932) at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:917) at org.apache.calcite.sql.validate.SqlValidatorImpl.newValidationError(SqlValidatorImpl.java:5279) at org.apache.calcite.sql.validate.DelegatingScope.fullyQualify(DelegatingScope.java:273) at org.apache.calcite.sql.validate.OrderByScope.fullyQualify(OrderByScope.java:95) at org.apache.calcite.sql.validate.SqlValidatorImpl$Expander.visit(SqlValidatorImpl.java:6471) at org.apache.calcite.sql.validate.SqlValidatorImpl$Expander.visit(SqlValidatorImpl.java:6451) at org.apache.calcite.sql.SqlIdentifier.accept(SqlIdentifier.java:324) at org.apache.calcite.sql.validate.SqlValidatorImpl$Expander.go(SqlValidatorImpl.java:6460) at org.apache.calcite.sql.validate.SqlValidatorImpl.expand(SqlValidatorImpl.java:6036) at org.apache.calcite.sql.validate.SqlValidatorImpl.validateOrderList(SqlValidatorImpl.java:4182) at org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:3649) at org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:64) at org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:89) at org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1062) at org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1037) at org.apache.calcite.sql.SqlSelect.validate(SqlSelect.java:248) at org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:1012) at org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:761) at org.apache.flink.table.planner.calcite.FlinkPlannerImpl.org$apache$flink$table$planner$calcite$FlinkPlannerImpl$$validate(FlinkPlannerImpl.scala:200) ... 16 more Caused by: org.apache.calcite.sql.validate.SqlValidatorException: Column 'a' not found in any table at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490) at org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:505) at org.apache.calcite.runtime.Resources$ExInst.ex(Resources.java:599) ... 36 more {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)