You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@impala.apache.org by tm...@apache.org on 2018/10/05 21:39:16 UTC

[4/8] impala git commit: IMPALA-7484: Do not interpret unrecognized hints as straight_join hints.

IMPALA-7484: Do not interpret unrecognized hints as
straight_join hints.

Wrapped setIsStraightJoin() in else clause.

Testing: Added a wrapper for testing the state of straight_join hint.
Modified existing tests to use this wrapper for +ve and
-ve test cases.

Change-Id: Icf600ebbfefc7398e0896df143a0ab91545cae04
Reviewed-on: http://gerrit.cloudera.org:8080/11568
Reviewed-by: Impala Public Jenkins <im...@cloudera.com>
Tested-by: Impala Public Jenkins <im...@cloudera.com>


Project: http://git-wip-us.apache.org/repos/asf/impala/repo
Commit: http://git-wip-us.apache.org/repos/asf/impala/commit/3a37c724
Tree: http://git-wip-us.apache.org/repos/asf/impala/tree/3a37c724
Diff: http://git-wip-us.apache.org/repos/asf/impala/diff/3a37c724

Branch: refs/heads/master
Commit: 3a37c724d4940074421745c54eee4d5c29d47c85
Parents: fc91e70
Author: Anurag Mantripragada <an...@gmail.com>
Authored: Thu Oct 4 13:13:53 2018 -0700
Committer: Impala Public Jenkins <im...@cloudera.com>
Committed: Fri Oct 5 06:03:39 2018 +0000

----------------------------------------------------------------------
 .../org/apache/impala/analysis/SelectList.java  |  7 +++--
 .../impala/analysis/AnalyzeStmtsTest.java       | 31 ++++++++++++++------
 2 files changed, 26 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/impala/blob/3a37c724/fe/src/main/java/org/apache/impala/analysis/SelectList.java
----------------------------------------------------------------------
diff --git a/fe/src/main/java/org/apache/impala/analysis/SelectList.java b/fe/src/main/java/org/apache/impala/analysis/SelectList.java
index 9794f59..a38774a 100644
--- a/fe/src/main/java/org/apache/impala/analysis/SelectList.java
+++ b/fe/src/main/java/org/apache/impala/analysis/SelectList.java
@@ -82,11 +82,12 @@ public class SelectList {
   public boolean hasPlanHints() { return !planHints_.isEmpty(); }
 
   public void analyzePlanHints(Analyzer analyzer) {
-    for (PlanHint hint: planHints_) {
-      if (!hint.is("straight_join")) {
+    for (PlanHint hint : planHints_) {
+      if (hint.is("straight_join")) {
+        analyzer.setIsStraightJoin();
+      } else {
         analyzer.addWarning("PLAN hint not recognized: " + hint);
       }
-      analyzer.setIsStraightJoin();
     }
   }
 

http://git-wip-us.apache.org/repos/asf/impala/blob/3a37c724/fe/src/test/java/org/apache/impala/analysis/AnalyzeStmtsTest.java
----------------------------------------------------------------------
diff --git a/fe/src/test/java/org/apache/impala/analysis/AnalyzeStmtsTest.java b/fe/src/test/java/org/apache/impala/analysis/AnalyzeStmtsTest.java
index c508409..d36b97d 100644
--- a/fe/src/test/java/org/apache/impala/analysis/AnalyzeStmtsTest.java
+++ b/fe/src/test/java/org/apache/impala/analysis/AnalyzeStmtsTest.java
@@ -1822,25 +1822,38 @@ public class AnalyzeStmtsTest extends AnalyzerTest {
     }
   }
 
+  /**
+  * Checks warning message if applicable and
+  * returns true if straight_join hint is applied or false otherwise.
+  */
+  private boolean hasStraightJoin(String stmt, String expectedWarning){
+    AnalysisContext ctx = createAnalysisCtx();
+    AnalyzesOk(stmt,ctx, expectedWarning);
+    return ctx.getAnalyzer().isStraightJoin();
+  }
+
   @Test
   public void TestSelectListHints() throws AnalysisException {
     for (String[] hintStyle: hintStyles_) {
       String prefix = hintStyle[0];
       String suffix = hintStyle[1];
-      AnalyzesOk(String.format(
-          "select %sstraight_join%s * from functional.alltypes", prefix, suffix));
-      AnalyzesOk(String.format(
-          "select %sStrAigHt_jOiN%s * from functional.alltypes", prefix, suffix));
+      assertTrue(hasStraightJoin(String.format(
+          "select %sstraight_join%s * from functional.alltypes", prefix, suffix), null));
+      assertTrue(hasStraightJoin(String.format(
+          "select %sStrAigHt_jOiN%s * from functional.alltypes", prefix, suffix), null));
       if (!prefix.equals("")) {
         // Only warn on unrecognized hints for view-compatibility with Hive.
         // Legacy hint style does not parse.
-        AnalyzesOk(String.format(
+        assertFalse(hasStraightJoin(String.format(
             "select %sbadhint%s * from functional.alltypes", prefix, suffix),
-            "PLAN hint not recognized: badhint");
+            "PLAN hint not recognized: badhint"));
+        assertTrue(hasStraightJoin(String.format(
+             "select %sstraight_join%s * from functional.alltypes", prefix, suffix),
+             null));
         // Multiple hints. Legacy hint style does not parse.
-        AnalyzesOk(String.format(
-            "select %sstraight_join,straight_join%s * from functional.alltypes",
-            prefix, suffix));
+        assertTrue(hasStraightJoin(String.format(
+             "select %sstraight_join,straight_join%s * from functional.alltypes",
+              prefix, suffix), null));
       }
     }
   }