Hongshun Wang created FLINK-38832:
-------------------------------------
Summary: Planner of count(*) changes
Key: FLINK-38832
URL: https://issues.apache.org/jira/browse/FLINK-38832
Project: Flink
Issue Type: Improvement
Components: Table SQL / Planner
Affects Versions: 2.2.0
Reporter: Hongshun Wang
Fix For: 2.2.1
Since 2.2.0, explain of this statement changes: +select count(*) from
log_table+
In 2.1, only first field of source is needed, thus will be pushed down.
{code:java}
FlinkLogicalCalc(select=[EXPR$0])
+- FlinkLogicalAggregate(group=[{0}], EXPR$0=[COUNT()])
+- FlinkLogicalTableSourceScan(table=[[testcatalog, defaultdb, log_table,
project=[id]]], fields=[id])
HashAggregate(isMerge=[true], select=[Final_COUNT(count1$0) AS EXPR$0])
+- Exchange(distribution=[single])
+- LocalHashAggregate(select=[Partial_COUNT(*) AS count1$0])
+- TableSourceScan(table=[[testcatalog, defaultdb, log_table,
project=[id]]], fields=[id]) {code}
in 2.2, id is not pushed down to source.
{code:java}
LogicalAggregate(group=[{}], EXPR$0=[COUNT()])
+- LogicalProject(exprs=[[0]])
+- LogicalTableScan(table=[[testcatalog, defaultdb, test_log_table]])
HashAggregate(isMerge=[true], select=[Final_COUNT(count1$0) AS EXPR$0])
+- Exchange(distribution=[single])
+- LocalHashAggregate(select=[Partial_COUNT(*) AS count1$0])
+- TableSourceScan(table=[[testcatalog, defaultdb, log_table]],
fields=[id, address, name]) {code}
FlinkLogicalAggregate is changed to LogicalProject.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)