public interface FilterableTableSource<T>
TableSource
. A TableSource
extending
this interface is able to filter records before returning.Modifier and Type | Method and Description |
---|---|
TableSource<T> |
applyPredicate(List<Expression> predicates)
Check and pick all predicates this table source can support.
|
boolean |
isFilterPushedDown()
Return the flag to indicate whether filter push down has been tried.
|
TableSource<T> applyPredicate(List<Expression> predicates)
WARNING: Flink planner will push down PlannerExpressions (which are
defined in flink-table-planner module), while Blink planner will push down Expression
s. So the implementation for Flink planner and Blink planner should be different
and incompatible. PlannerExpression will be removed in the future.
After trying to push predicates down, we should return a new TableSource
instance
which holds all pushed down predicates. Even if we actually pushed nothing down, it is
recommended that we still return a new TableSource
instance since we will mark the
returned instance as filter push down has been tried.
We also should note to not changing the form of the predicates passed in. It has been organized in CNF conjunctive form, and we should only take or leave each element from the list. Don't try to reorganize the predicates if you are absolutely confident with that.
predicates
- A list contains conjunctive predicates, you should pick and remove all
expressions that can be pushed down. The remaining elements of this list will further
evaluated by framework.TableSource
with or without any filters been pushed
into it.boolean isFilterPushedDown()
applyPredicate(java.util.List<org.apache.flink.table.expressions.Expression>)
.Copyright © 2014–2021 The Apache Software Foundation. All rights reserved.