gyfora commented on a change in pull request #82:
URL: https://github.com/apache/bahir-flink/pull/82#discussion_r438816294
##########
File path:
flink-connector-kudu/src/main/java/org/apache/flink/connectors/kudu/table/KuduTableSource.java
##########
@@ -109,12 +147,41 @@ public boolean isLimitPushedDown() {
for (int i = 0; i < ints.length; i++) {
fieldNames[i] = prevFieldNames.get(ints[i]);
}
- return new KuduTableSource(configBuilder, tableInfo, flinkSchema,
fieldNames);
+ return new KuduTableSource(configBuilder, tableInfo, flinkSchema,
bounded, predicates, fieldNames);
+ }
+
+ @Override
+ public TableSource<Row> applyPredicate(List<Expression> predicates) {
+ List<KuduFilterInfo> kuduPredicates = new ArrayList<>();
+ ListIterator<Expression> predicatesIter = predicates.listIterator();
+ while(predicatesIter.hasNext()) {
+ Expression predicate = predicatesIter.next();
+ KuduFilterInfo kuduPred = toKuduFilterInfo(predicate);
+ if (kuduPred != null) {
+ LOG.info("Predicate [{}] converted into KuduFilterInfo and
pushed into " +
+ "KuduTable [{}].", predicate, tableInfo.getName());
+ kuduPredicates.add(kuduPred);
+ predicatesIter.remove();
+ } else {
+ LOG.info("Predicate [{}] could not be pushed into
KuduFilterInfo for KuduTable [{}].",
Review comment:
debug log maybe?
##########
File path:
flink-connector-kudu/src/main/java/org/apache/flink/connectors/kudu/table/KuduTableSource.java
##########
@@ -109,12 +147,41 @@ public boolean isLimitPushedDown() {
for (int i = 0; i < ints.length; i++) {
fieldNames[i] = prevFieldNames.get(ints[i]);
}
- return new KuduTableSource(configBuilder, tableInfo, flinkSchema,
fieldNames);
+ return new KuduTableSource(configBuilder, tableInfo, flinkSchema,
bounded, predicates, fieldNames);
+ }
+
+ @Override
+ public TableSource<Row> applyPredicate(List<Expression> predicates) {
+ List<KuduFilterInfo> kuduPredicates = new ArrayList<>();
+ ListIterator<Expression> predicatesIter = predicates.listIterator();
+ while(predicatesIter.hasNext()) {
+ Expression predicate = predicatesIter.next();
+ KuduFilterInfo kuduPred = toKuduFilterInfo(predicate);
Review comment:
Would be nicer to return Optional here but I leave this up to you
##########
File path:
flink-connector-kudu/src/main/java/org/apache/flink/connectors/kudu/table/KuduTableSource.java
##########
@@ -109,12 +147,41 @@ public boolean isLimitPushedDown() {
for (int i = 0; i < ints.length; i++) {
fieldNames[i] = prevFieldNames.get(ints[i]);
}
- return new KuduTableSource(configBuilder, tableInfo, flinkSchema,
fieldNames);
+ return new KuduTableSource(configBuilder, tableInfo, flinkSchema,
bounded, predicates, fieldNames);
+ }
+
+ @Override
+ public TableSource<Row> applyPredicate(List<Expression> predicates) {
+ List<KuduFilterInfo> kuduPredicates = new ArrayList<>();
+ ListIterator<Expression> predicatesIter = predicates.listIterator();
+ while(predicatesIter.hasNext()) {
+ Expression predicate = predicatesIter.next();
+ KuduFilterInfo kuduPred = toKuduFilterInfo(predicate);
+ if (kuduPred != null) {
+ LOG.info("Predicate [{}] converted into KuduFilterInfo and
pushed into " +
Review comment:
Should we use debug logging here?
##########
File path:
flink-connector-kudu/src/main/java/org/apache/flink/connectors/kudu/table/KuduTableSource.java
##########
@@ -109,12 +147,41 @@ public boolean isLimitPushedDown() {
for (int i = 0; i < ints.length; i++) {
fieldNames[i] = prevFieldNames.get(ints[i]);
}
- return new KuduTableSource(configBuilder, tableInfo, flinkSchema,
fieldNames);
+ return new KuduTableSource(configBuilder, tableInfo, flinkSchema,
bounded, predicates, fieldNames);
+ }
+
+ @Override
+ public TableSource<Row> applyPredicate(List<Expression> predicates) {
+ List<KuduFilterInfo> kuduPredicates = new ArrayList<>();
+ ListIterator<Expression> predicatesIter = predicates.listIterator();
+ while(predicatesIter.hasNext()) {
+ Expression predicate = predicatesIter.next();
+ KuduFilterInfo kuduPred = toKuduFilterInfo(predicate);
+ if (kuduPred != null) {
+ LOG.info("Predicate [{}] converted into KuduFilterInfo and
pushed into " +
+ "KuduTable [{}].", predicate, tableInfo.getName());
+ kuduPredicates.add(kuduPred);
+ predicatesIter.remove();
+ } else {
+ LOG.info("Predicate [{}] could not be pushed into
KuduFilterInfo for KuduTable [{}].",
+ predicate, tableInfo.getName());
+ }
+ }
+ return new KuduTableSource(configBuilder, tableInfo, flinkSchema,
bounded, kuduPredicates, projectedFields);
}
@Override
public String explainSource() {
- return "KuduStreamTableSource[schema=" +
Arrays.toString(getTableSchema().getFieldNames())
- + (projectedFields != null ?", projectFields=" +
Arrays.toString(projectedFields) + "]" : "]");
+ return "KuduTableSource[schema=" +
Arrays.toString(getTableSchema().getFieldNames()) +
+ ", filter=" + predicateString() +
+ (projectedFields != null ?", projectFields=" +
Arrays.toString(projectedFields) + "]" : "]");
+ }
+
+ private String predicateString() {
+ if (predicates == null || predicates.size() == 0) {
+ return "FALSE";
Review comment:
Maybe instead of false, something like No Filters / predicates?
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]