Timo Walther created FLINK-24716:
------------------------------------
Summary: Non-equality predicates on partition columns lead to
incorrect plans
Key: FLINK-24716
URL: https://issues.apache.org/jira/browse/FLINK-24716
Project: Flink
Issue Type: Sub-task
Components: Table SQL / Planner
Reporter: Timo Walther
Queries such as
{code}
SELECT d FROM T1 WHERE c = 100 AND d > '2012'
{code}
where {{d}} is a partition column leads to incorrect plans:
{code}
== Abstract Syntax Tree ==
LogicalProject(d=[$2])
+- LogicalFilter(condition=[AND(=($0, 100), >($2, _UTF-16LE'2012'))])
+- LogicalTableScan(table=[[default_catalog, default_database, T1]])
== Optimized Physical Plan ==
Calc(select=[d], where=[=(c, 100)])
+- TableSourceScan(table=[[default_catalog, default_database, T1, filter=[],
partitions=[], project=[c, d]]], fields=[c, d])
== Optimized Execution Plan ==
Calc(select=[d], where=[(c = 100)])
+- TableSourceScan(table=[[default_catalog, default_database, T1, filter=[],
partitions=[], project=[c, d]]], fields=[c, d])
{code}
It seems in many cases (with SupportsFilterPushDown and without) the {{<}}
predicate is swallowed and not part of the final execution plan anymore.
Reproducible code can be found
[here|https://github.com/twalthr/flink/blob/e5a2cc9bcc9b38cf2b94c9ea7c7296ce94434343/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/rules/logical/TestClass.java]
with new testing infrastructure.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)