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)

Reply via email to