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));
}
}
}