Dawid Wysakowicz created FLINK-16320:
----------------------------------------
Summary: Can not use sub-queries in the VALUES clause
Key: FLINK-16320
URL:
https://issues.apache.org/jira/browse/FLINK-16320 Project: Flink
Issue Type: Improvement
Components: Table SQL / Legacy Planner, Table SQL / Planner
Affects Versions: 1.11.0
Reporter: Dawid Wysakowicz
{code}
StreamExecutionEnvironment sEnv = StreamExecutionEnvironment.getExecutionEnvironment();
StreamTableEnvironment tableEnvironment = StreamTableEnvironment.create(
sEnv,
EnvironmentSettings.newInstance().useBlinkPlanner().build());
Table table = tableEnvironment.sqlQuery("SELECT * FROM (VALUES(1), (SELECT 1))");
tableEnvironment.toRetractStream(table, Row.class).print();
System.out.println(tableEnvironment.explain(table));
{code}
Produces:
{code}
== Optimized Logical Plan ==
Union(all=[true], union=[EXPR$0])
:- Calc(select=[CAST(1) AS EXPR$0])
: +- Values(type=[RecordType(INTEGER ZERO)], tuples=[[{ 0 }]])
+- Calc(select=[$f0 AS EXPR$0])
+- Join(joinType=[LeftOuterJoin], where=[true], select=[ZERO, $f0], leftInputSpec=[NoUniqueKey], rightInputSpec=[JoinKeyContainsUniqueKey])
:- Exchange(distribution=[single])
: +- Values(type=[RecordType(INTEGER ZERO)], tuples=[[{ 0 }]], reuse_id=[1])
+- Exchange(distribution=[single])
+- GroupAggregate(select=[SINGLE_VALUE(EXPR$0) AS $f0])
+- Exchange(distribution=[single])
+- Calc(select=[1 AS EXPR$0])
+- Reused(reference_id=[1])
{code}
which is wrong.
Legacy planner fails with:
{code}
validated type:
RecordType(INTEGER EXPR$0) NOT NULL
converted type:
RecordType(INTEGER NOT NULL EXPR$0) NOT NULL
rel:
LogicalProject(EXPR$0=[$0])
LogicalUnion(all=[true])
LogicalProject(EXPR$0=[1])
LogicalValues(tuples=[[{ 0 }]])
LogicalAggregate(group=[{}], agg#0=[SINGLE_VALUE($0)])
LogicalProject(EXPR$0=[1])
LogicalValues(tuples=[[{ 0 }]])
{code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)