Fabian Hueske commented on FLINK-3849:

The table source must make sure that the predicate is correctly evaluated. 
If the source cannot evaluate {{(amount * 2) > anydata}}, the predicate as a 
whole cannot be evaluated because any row might pass the filter regardless of 
{{id > 2}} due to the disjunctive connection.

So the source needs to know exactly what its capabilities are. If possible, it 
would be great if the table source could be called with predicates in CNF 
(conjunctive normal form).

> Add FilterableTableSource interface and translation rule
> --------------------------------------------------------
>                 Key: FLINK-3849
>                 URL: https://issues.apache.org/jira/browse/FLINK-3849
>             Project: Flink
>          Issue Type: New Feature
>          Components: Table API & SQL
>            Reporter: Fabian Hueske
>            Assignee: Anton Solovev
> Add a {{FilterableTableSource}} interface for {{TableSource}} implementations 
> which support filter push-down.
> The interface could look as follows
> {code}
> def trait FilterableTableSource {
>   // returns unsupported predicate expression
>   def setPredicate(predicate: Expression): Expression
> }
> {code}
> In addition we need Calcite rules to push a predicate (or parts of it) into a 
> TableScan that refers to a {{FilterableTableSource}}. We might need to tweak 
> the cost model as well to push the optimizer in the right direction.

This message was sent by Atlassian JIRA

Reply via email to