diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java index 8e5a3da..e12e589 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java @@ -2994,7 +2994,7 @@ private RelNode genSelectLogicalPlan(QB qb, RelNode srcRel, RelNode starSrcRel) SemanticAnalyzer.unescapeIdentifier(expr.getChild(0).getChild(0).getText() .toLowerCase()), expr, col_list, excludedColumns, inputRR, starRR, pos, out_rwsch, tableMask.isEnabled() ? qb.getAliases() : tabAliasesForAllProjs, true); - } else if (expr.toStringTree().contains("TOK_FUNCTIONDI") + } else if (ParseUtils.containsTokenOfType(expr, HiveParser.TOK_FUNCTIONDI) && !(srcRel instanceof HiveAggregate)) { // Likely a malformed query eg, select hash(distinct c1) from t1; throw new CalciteSemanticException("Distinct without an aggreggation.", diff --git ql/src/test/queries/clientnegative/selectDistinctWithoutAggr.q ql/src/test/queries/clientnegative/selectDistinctWithoutAggr.q new file mode 100644 index 0000000..d031513 --- /dev/null +++ ql/src/test/queries/clientnegative/selectDistinctWithoutAggr.q @@ -0,0 +1,3 @@ +-- Distinct without an aggregation is unsupported + +select hash(distinct key) from src; \ No newline at end of file diff --git ql/src/test/results/clientnegative/selectDistinctWithoutAggr.q.out ql/src/test/results/clientnegative/selectDistinctWithoutAggr.q.out new file mode 100644 index 0000000..2f4bbde --- /dev/null +++ ql/src/test/results/clientnegative/selectDistinctWithoutAggr.q.out @@ -0,0 +1 @@ +FAILED: SemanticException 3:7 Distinct keyword is not support in current context. Error encountered near token 'key'