This is an automated email from the ASF dual-hosted git repository. csringhofer pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/impala.git
commit e8ebf0be67828b855d4533c07ef544f85897ec62 Author: Peter Rozsa <[email protected]> AuthorDate: Mon Aug 22 11:19:24 2022 +0200 IMPALA-11496: Push down date literals to Kudu scanner This change enables creating, and pushing down Kudu predicates from DATE type. Kudu planner testcases added for DATE, BIGINT, FLOAT, DOUBLE types to cover all supported type's predicate creation. Change-Id: I4f323d23df3a92361390f9da387182db3f3bde3e Reviewed-on: http://gerrit.cloudera.org:8080/18898 Reviewed-by: Impala Public Jenkins <[email protected]> Tested-by: Impala Public Jenkins <[email protected]> --- .../org/apache/impala/planner/KuduScanNode.java | 12 +++- .../queries/PlannerTest/kudu.test | 68 ++++++++++++++++++++++ 2 files changed, 77 insertions(+), 3 deletions(-) diff --git a/fe/src/main/java/org/apache/impala/planner/KuduScanNode.java b/fe/src/main/java/org/apache/impala/planner/KuduScanNode.java index 6663460ae..65f8c5a05 100644 --- a/fe/src/main/java/org/apache/impala/planner/KuduScanNode.java +++ b/fe/src/main/java/org/apache/impala/planner/KuduScanNode.java @@ -29,8 +29,8 @@ import java.util.Set; import org.apache.impala.analysis.Analyzer; import org.apache.impala.analysis.BinaryPredicate; import org.apache.impala.analysis.BoolLiteral; +import org.apache.impala.analysis.DateLiteral; import org.apache.impala.analysis.Expr; -import org.apache.impala.analysis.ExprSubstitutionMap; import org.apache.impala.analysis.InPredicate; import org.apache.impala.analysis.IsNullPredicate; import org.apache.impala.analysis.LiteralExpr; @@ -567,14 +567,20 @@ public class KuduScanNode extends ScanNode { } break; } + case DATE: + kuduPredicate = KuduPredicate.newComparisonPredicate(column, op, + ((DateLiteral)literal).getValue()); + break; case DECIMAL: { kuduPredicate = KuduPredicate.newComparisonPredicate(column, op, ((NumericLiteral)literal).getValue()); break; } - default: break; + default: + //All supported types are covered, should not reach default case + Preconditions.checkState(false); } - if (kuduPredicate == null) return false; + Preconditions.checkState(kuduPredicate != null); kuduConjuncts_.add(predicate); kuduPredicates_.add(kuduPredicate); diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/kudu.test b/testdata/workloads/functional-planner/queries/PlannerTest/kudu.test index 6bdcc41b9..7d5a3b3dc 100644 --- a/testdata/workloads/functional-planner/queries/PlannerTest/kudu.test +++ b/testdata/workloads/functional-planner/queries/PlannerTest/kudu.test @@ -712,3 +712,71 @@ PLAN-ROOT SINK kudu predicates: l_orderkey = 1, l_partkey = 1, l_suppkey = 1 row-size=0B cardinality=1 ==== +# DATE predicate. +select * from functional_kudu.date_tbl where date_col = DATE "1970-01-01"; +---- PLAN +PLAN-ROOT SINK +| +00:SCAN KUDU [functional_kudu.date_tbl] + kudu predicates: date_col = DATE '1970-01-01' + row-size=12B cardinality=1 +---- DISTRIBUTEDPLAN +PLAN-ROOT SINK +| +01:EXCHANGE [UNPARTITIONED] +| +00:SCAN KUDU [functional_kudu.date_tbl] + kudu predicates: date_col = DATE '1970-01-01' + row-size=12B cardinality=1 +==== +# BIGINT predicate. +select * from functional_kudu.alltypes where bigint_col = 1; +---- PLAN +PLAN-ROOT SINK +| +00:SCAN KUDU [functional_kudu.alltypes] + kudu predicates: bigint_col = 1 + row-size=97B cardinality=730 +---- DISTRIBUTEDPLAN +PLAN-ROOT SINK +| +01:EXCHANGE [UNPARTITIONED] +| +00:SCAN KUDU [functional_kudu.alltypes] + kudu predicates: bigint_col = 1 + row-size=97B cardinality=730 +==== +# FLOAT predicate. +select * from functional_kudu.alltypes where float_col = 1.0; +---- PLAN +PLAN-ROOT SINK +| +00:SCAN KUDU [functional_kudu.alltypes] + kudu predicates: float_col = 1.0 + row-size=97B cardinality=730 +---- DISTRIBUTEDPLAN +PLAN-ROOT SINK +| +01:EXCHANGE [UNPARTITIONED] +| +00:SCAN KUDU [functional_kudu.alltypes] + kudu predicates: float_col = 1.0 + row-size=97B cardinality=730 +==== +# DOUBLE predicate. +select * from functional_kudu.alltypes where double_col = 1.0; +---- PLAN +PLAN-ROOT SINK +| +00:SCAN KUDU [functional_kudu.alltypes] + kudu predicates: double_col = 1.0 + row-size=97B cardinality=730 +---- DISTRIBUTEDPLAN +PLAN-ROOT SINK +| +01:EXCHANGE [UNPARTITIONED] +| +00:SCAN KUDU [functional_kudu.alltypes] + kudu predicates: double_col = 1.0 + row-size=97B cardinality=730 +==== \ No newline at end of file
