Github user godfreyhe commented on a diff in the pull request:
https://github.com/apache/flink/pull/3520#discussion_r106149747
--- Diff:
flink-libraries/flink-table/src/main/scala/org/apache/flink/table/sources/FilterableTableSource.scala
---
@@ -34,14 +34,24 @@ trait FilterableTableSource {
/**
* Check and pick all predicates this table source can support. The
passed in predicates
- * have been translated in conjunctive form, and table source and only
pick those predicates
- * that it supports. All unsupported predicates should be give back to
the framework to do
- * further filtering.
+ * have been translated in conjunctive form, and table source can only
pick those predicates
+ * that it supports.
+ * <p>
+ * After trying to push predicates down, we should return a new
[[FilterableTableSource]]
+ * instance which holds all pushed down predicates. Even if we actually
pushed nothing down,
+ * it is recommended that we still return a new
[[FilterableTableSource]] instance since we will
+ * mark the returned instance as filter push down has been tried. Also
we need to return all
+ * unsupported predicates back to the framework to do further filtering.
+ * <p>
+ * 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 in the
+ * array. Don't try to reorganize the predicates if you are absolutely
confident with that.
*
* @param predicate An array contains conjunctive predicates.
- * @return An array contains all unsupported predicates.
+ * @return A new cloned instance of [[FilterableTableSource]] as well
as n array of Expression
+ * which contains all unsupported predicates.
*/
- def applyPredicate(predicate: Array[Expression]): Array[Expression]
+ def applyPredicate(predicate: Array[Expression]):
(FilterableTableSource[_], Array[Expression])
--- End diff --
return `FilterableTableSource[T]` instead of `FilterableTableSource[_]`,
otherwise in java, table source instance must be cast to
`FilterableTableSource<?>`
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---