This is an automated email from the ASF dual-hosted git repository.

jcamacho pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git


The following commit(s) were added to refs/heads/master by this push:
     new 505fd69  HIVE-23130: User friendly error message when MV rewriting 
fails (Krisztian Kasa, reviewed by Jesus Camacho Rodriguez)
505fd69 is described below

commit 505fd6935540e234fb28bcc7e42991f81b1951ac
Author: Krisztian Kasa <kk...@cloudera.com>
AuthorDate: Fri Apr 3 16:27:57 2020 -0700

    HIVE-23130: User friendly error message when MV rewriting fails (Krisztian 
Kasa, reviewed by Jesus Camacho Rodriguez)
---
 .../calcite/HiveRelOptMaterializationValidator.java       | 15 ++++++++++++++-
 .../clientnegative/materialized_view_no_cbo_rewrite.q.out |  2 +-
 .../materialized_view_no_cbo_rewrite_2.q.out              |  2 +-
 3 files changed, 16 insertions(+), 3 deletions(-)

diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveRelOptMaterializationValidator.java
 
b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveRelOptMaterializationValidator.java
index 110136d..1aa1731 100644
--- 
a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveRelOptMaterializationValidator.java
+++ 
b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveRelOptMaterializationValidator.java
@@ -46,6 +46,7 @@ import 
org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveIntersect;
 import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJoin;
 import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveProject;
 import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveSemiJoin;
+import 
org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveSortExchange;
 import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveSortLimit;
 import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveTableScan;
 import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveUnion;
@@ -123,7 +124,6 @@ public class HiveRelOptMaterializationValidator extends 
HiveRelShuttleImpl {
 
   @Override
   public RelNode visit(RelNode node) {
-    setAutomaticRewritingInvalidReason(node);
     // There are several Hive RelNode types which do not have their own 
visit() method
     // defined in the HiveRelShuttle interface, which need to be handled 
appropriately here.
     // Per jcamachorodriguez we should not encounter 
HiveMultiJoin/HiveSortExchange
@@ -132,6 +132,8 @@ public class HiveRelOptMaterializationValidator extends 
HiveRelShuttleImpl {
       return visit((HiveUnion) node);
     } else if (node instanceof HiveSortLimit) {
       return visit((HiveSortLimit) node);
+    } else if (node instanceof HiveSortExchange) {
+      return visit((HiveSortExchange) node);
     } else if (node instanceof HiveSemiJoin) {
       return visit((HiveSemiJoin) node);
     } else if (node instanceof HiveExcept) {
@@ -225,18 +227,27 @@ public class HiveRelOptMaterializationValidator extends 
HiveRelShuttleImpl {
 
   // Note: Not currently part of the HiveRelNode interface
   private RelNode visit(HiveUnion union) {
+    setAutomaticRewritingInvalidReason("Statement has unsupported operator: 
union.");
     return visitChildren(union);
   }
 
   // Note: Not currently part of the HiveRelNode interface
   private RelNode visit(HiveSortLimit sort) {
+    setAutomaticRewritingInvalidReason("Statement has unsupported clause: 
order by.");
     checkExpr(sort.getFetchExpr());
     checkExpr(sort.getOffsetExpr());
     return visitChildren(sort);
   }
 
   // Note: Not currently part of the HiveRelNode interface
+  private RelNode visit(HiveSortExchange sort) {
+    setAutomaticRewritingInvalidReason("Statement has unsupported clause: sort 
by.");
+    return visitChildren(sort);
+  }
+
+  // Note: Not currently part of the HiveRelNode interface
   private RelNode visit(HiveSemiJoin semiJoin) {
+    setAutomaticRewritingInvalidReason("Statement has unsupported join type: 
semi join.");
     checkExpr(semiJoin.getCondition());
     checkExpr(semiJoin.getJoinFilter());
     return visitChildren(semiJoin);
@@ -244,11 +255,13 @@ public class HiveRelOptMaterializationValidator extends 
HiveRelShuttleImpl {
 
   // Note: Not currently part of the HiveRelNode interface
   private RelNode visit(HiveExcept except) {
+    setAutomaticRewritingInvalidReason("Statement has unsupported operator: 
except.");
     return visitChildren(except);
   }
 
   // Note: Not currently part of the HiveRelNode interface
   private RelNode visit(HiveIntersect intersect) {
+    setAutomaticRewritingInvalidReason("Statement has unsupported operator: 
intersect.");
     return visitChildren(intersect);
   }
 
diff --git 
a/ql/src/test/results/clientnegative/materialized_view_no_cbo_rewrite.q.out 
b/ql/src/test/results/clientnegative/materialized_view_no_cbo_rewrite.q.out
index 8e55c2c..159e2dc 100644
--- a/ql/src/test/results/clientnegative/materialized_view_no_cbo_rewrite.q.out
+++ b/ql/src/test/results/clientnegative/materialized_view_no_cbo_rewrite.q.out
@@ -19,4 +19,4 @@ POSTHOOK: Output: default@cmv_basetable
 POSTHOOK: Lineage: cmv_basetable.a SCRIPT []
 POSTHOOK: Lineage: cmv_basetable.b SCRIPT []
 POSTHOOK: Lineage: cmv_basetable.c SCRIPT []
-FAILED: SemanticException Cannot enable automatic rewriting for materialized 
view. Unsupported RelNode type HiveSortExchange encountered in the query plan
+FAILED: SemanticException Cannot enable automatic rewriting for materialized 
view. Statement has unsupported clause: sort by.
diff --git 
a/ql/src/test/results/clientnegative/materialized_view_no_cbo_rewrite_2.q.out 
b/ql/src/test/results/clientnegative/materialized_view_no_cbo_rewrite_2.q.out
index b9de681..7e22225 100644
--- 
a/ql/src/test/results/clientnegative/materialized_view_no_cbo_rewrite_2.q.out
+++ 
b/ql/src/test/results/clientnegative/materialized_view_no_cbo_rewrite_2.q.out
@@ -33,4 +33,4 @@ PREHOOK: query: alter materialized view cmv_mat_view enable 
rewrite
 PREHOOK: type: ALTER_MATERIALIZED_VIEW_REWRITE
 PREHOOK: Input: default@cmv_mat_view
 PREHOOK: Output: default@cmv_mat_view
-FAILED: Execution Error, return code 1 from 
org.apache.hadoop.hive.ql.ddl.DDLTask. 
org.apache.hadoop.hive.ql.metadata.HiveException: Cannot enable rewriting for 
materialized view. Unsupported RelNode type HiveSortExchange encountered in the 
query plan
+FAILED: Execution Error, return code 1 from 
org.apache.hadoop.hive.ql.ddl.DDLTask. 
org.apache.hadoop.hive.ql.metadata.HiveException: Cannot enable rewriting for 
materialized view. Statement has unsupported clause: sort by.

Reply via email to