Shengkai Fang created FLINK-22118: ------------------------------------- Summary: Always apply projection push down in blink planner Key: FLINK-22118 URL: https://issues.apache.org/jira/browse/FLINK-22118 Project: Flink Issue Type: Improvement Components: Table SQL / Planner Affects Versions: 1.13.0 Reporter: Shengkai Fang
Please add the case in `TableSourceTest`. {code:java} s""" |CREATE TABLE NestedItemTable ( | `id` INT, | `result` ROW< | `data_arr` ROW<`value` BIGINT> ARRAY, | `data_map` MAP<STRING, ROW<`value` BIGINT>>>, | ) WITH ( | 'connector' = 'values', | 'nested-projection-supported' = 'true', | 'bounded' = 'true' | ) |""".stripMargin util.tableEnv.executeSql(ddl4) util.verifyExecPlan( s""" |SELECT | `result`.`data_arr`[`id`].`value`, | `result`.`data_map`['item'].`value` |FROM NestedItemTable |""".stripMargin ) {code} we can get optimized plan {code:java} Calc(select=[ITEM(result.data_arr, id).value AS EXPR$0, ITEM(result.data_map, _UTF-16LE'item').value AS EXPR$1]) +- TableSourceScan(table=[[default_catalog, default_database, NestedItemTable]], fields=[id, result]) {code} but expected is {code:java} Calc(select=[ITEM(result_data_arr, id).value AS EXPR$0, ITEM(result_data_map, _UTF-16LE'item').value AS EXPR$1]) +- TableSourceScan(table=[[default_catalog, default_database, NestedItemTable, project=[result_data_arr, result_data_map, id]]], fields=[result_data_arr, result_data_map, id]) {code} It seems the planner doesn't apply the rule to push projection into scan. The reason why we have different results is the optimized plan has more fields than before. -- This message was sent by Atlassian Jira (v8.3.4#803005)