diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveCalciteUtil.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveCalciteUtil.java index a3b1790c10b2da6070e70d94a31000a35609da92..c376cce0712816b7f204f5aac7a780bc24d2f279 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveCalciteUtil.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveCalciteUtil.java @@ -59,6 +59,7 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Lists; +import org.apache.hadoop.hive.ql.parse.HiveParser; /** * Generic utility functions needed for Calcite based Hive CBO. @@ -87,14 +88,16 @@ } 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" }; - for (String token : tokens) { - if (astTree.contains(token)) { + int[] unsupportedTokens = new int[] { HiveParser.TOK_CHARSETLITERAL, HiveParser.TOK_TABLESPLITSAMPLE }; + + for (Integer unsupportedToken : unsupportedTokens) { + if (ast.getType() == unsupportedToken) { + return false; + } else if (ast.getFirstChildWithType(unsupportedToken) != null) { return false; } } + return true; }