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)