Index: ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java (revision 1353808) +++ ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java (working copy) @@ -1999,7 +1999,7 @@ * automatically translates SELECT DISTINCT a,b,c to SELECT a,b,c GROUP BY * a,b,c. */ - static List getGroupByForClause(QBParseInfo parseInfo, String dest) { + static List getGroupByForClause(QBParseInfo parseInfo, String dest) throws SemanticException { if (parseInfo.getSelForClause(dest).getToken().getType() == HiveParser.TOK_SELECTDI) { ASTNode selectExprs = parseInfo.getSelForClause(dest); List result = new ArrayList(selectExprs == null ? 0 @@ -2011,6 +2011,11 @@ } // table.column AS alias ASTNode grpbyExpr = (ASTNode) selectExprs.getChild(i).getChild(0); + if (grpbyExpr.getToken().getType()==HiveParser.TOK_ALLCOLREF){ + throw new SemanticException(generateErrorMessage( + (ASTNode) grpbyExpr, + "\"SELECT DISTINCT *\" is not supported")); + } result.add(grpbyExpr); } } @@ -3614,7 +3619,7 @@ return groupByOperatorInfo2; } - private boolean optimizeMapAggrGroupBy(String dest, QB qb) { + private boolean optimizeMapAggrGroupBy(String dest, QB qb) throws SemanticException { List grpByExprs = getGroupByForClause(qb.getParseInfo(), dest); if ((grpByExprs != null) && !grpByExprs.isEmpty()) { return false; @@ -5757,7 +5762,7 @@ // Return the common distinct expression // There should be more than 1 destination, with group bys in all of them. - private List getCommonDistinctExprs(QB qb, Operator input) { + private List getCommonDistinctExprs(QB qb, Operator input) throws SemanticException { RowResolver inputRR = opParseCtx.get(input).getRowResolver(); QBParseInfo qbp = qb.getParseInfo();