You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by gu...@apache.org on 2014/10/30 19:28:02 UTC
svn commit: r1635578 - in
/hive/branches/branch-0.14/ql/src/java/org/apache/hadoop/hive/ql:
optimizer/optiq/HiveOptiqUtil.java parse/SemanticAnalyzer.java
Author: gunther
Date: Thu Oct 30 18:28:01 2014
New Revision: 1635578
URL: http://svn.apache.org/r1635578
Log:
HIVE-8655: CBO: ppr_pushdown, udf_substr produces incorrect results due to broken tablesample handling (Sergey Shelukhin via Gunther Hagleitner)
Modified:
hive/branches/branch-0.14/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/HiveOptiqUtil.java
hive/branches/branch-0.14/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
Modified: hive/branches/branch-0.14/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/HiveOptiqUtil.java
URL: http://svn.apache.org/viewvc/hive/branches/branch-0.14/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/HiveOptiqUtil.java?rev=1635578&r1=1635577&r2=1635578&view=diff
==============================================================================
--- hive/branches/branch-0.14/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/HiveOptiqUtil.java (original)
+++ hive/branches/branch-0.14/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/HiveOptiqUtil.java Thu Oct 30 18:28:01 2014
@@ -75,7 +75,7 @@ public class HiveOptiqUtil {
return vCols;
}
- public static boolean validateASTForCBO(ASTNode ast) {
+ public static boolean validateASTForUnsupportedTokens(ASTNode ast) {
String astTree = ast.toStringTree();
// if any of following tokens are present in AST, bail out
String[] tokens = { "TOK_CHARSETLITERAL","TOK_TABLESPLITSAMPLE" };
Modified: hive/branches/branch-0.14/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
URL: http://svn.apache.org/viewvc/hive/branches/branch-0.14/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java?rev=1635578&r1=1635577&r2=1635578&view=diff
==============================================================================
--- hive/branches/branch-0.14/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java (original)
+++ hive/branches/branch-0.14/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java Thu Oct 30 18:28:01 2014
@@ -10241,13 +10241,15 @@ public class SemanticAnalyzer extends Ba
// be supported and would require additional checks similar to IsQuery?
boolean isSupportedType =
qb.getIsQuery() || qb.isCTAS() || cboCtx.type == PreCboCtx.Type.INSERT;
- boolean result = isSupportedRoot && isSupportedType && createVwDesc == null;
+ boolean noBadTokens = HiveOptiqUtil.validateASTForUnsupportedTokens(ast);
+ boolean result = isSupportedRoot && isSupportedType && createVwDesc == null && noBadTokens;
if (!result) {
if (needToLogMessage) {
String msg = "";
if (!isSupportedRoot) msg += "doesn't have QUERY or EXPLAIN as root and not a CTAS; ";
if (!isSupportedType) msg += "is not a query, CTAS, or insert; ";
if (createVwDesc != null) msg += "has create view; ";
+ if (!noBadTokens) msg += "has unsupported tokens; ";
if (msg.isEmpty()) msg += "has some unspecified limitations; ";
LOG.info("Not invoking CBO because the statement " + msg.substring(0, msg.length() - 2));