From 9e3d81cbe60c5a0c048531b70c09658d9b60f800 Mon Sep 17 00:00:00 2001 From: Chetna-Chaudhari Date: Sun, 6 Sep 2015 16:17:39 +0530 Subject: [PATCH] HIVE-11735: fixed case issue for aggregates --- .../java/org/apache/hadoop/hive/ql/parse/RowResolver.java | 15 ++++----------- .../org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java | 6 +++--- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/RowResolver.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/RowResolver.java index 5190bda..2b52efd 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/RowResolver.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/RowResolver.java @@ -99,21 +99,16 @@ public void put(String tab_alias, String col_alias, ColumnInfo colInfo) { //Make sure that the table alias and column alias are stored //in the column info if (tab_alias != null) { - colInfo.setTabAlias(tab_alias.toLowerCase()); + colInfo.setTabAlias(tab_alias); } if (col_alias != null) { - colInfo.setAlias(col_alias.toLowerCase()); + colInfo.setAlias(col_alias); } rowSchema.getSignature().add(colInfo); } } public boolean addMappingOnly(String tab_alias, String col_alias, ColumnInfo colInfo) { - if (tab_alias != null) { - tab_alias = tab_alias.toLowerCase(); - } - col_alias = col_alias.toLowerCase(); - /* * allow multiple mappings to the same ColumnInfo. * When a ColumnInfo is mapped multiple times, only the @@ -145,7 +140,7 @@ public boolean addMappingOnly(String tab_alias, String col_alias, ColumnInfo col } public boolean hasTableAlias(String tab_alias) { - return rslvMap.get(tab_alias.toLowerCase()) != null; + return rslvMap.get(tab_alias) != null; } /** @@ -169,11 +164,9 @@ public boolean hasTableAlias(String tab_alias) { * @throws SemanticException */ public ColumnInfo get(String tab_alias, String col_alias) throws SemanticException { - col_alias = col_alias.toLowerCase(); ColumnInfo ret = null; if (tab_alias != null) { - tab_alias = tab_alias.toLowerCase(); HashMap f_map = rslvMap.get(tab_alias); if (f_map == null) { return null; @@ -256,7 +249,7 @@ public ColumnInfo get(String tab_alias, String col_alias) throws SemanticExcepti if (tabAlias == null) { return rslvMap.get(null); } else { - return rslvMap.get(tabAlias.toLowerCase()); + return rslvMap.get(tabAlias); } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index b809a23..d9295b2 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -537,7 +537,7 @@ private void doPhase1GetAllAggregations(ASTNode expressionTree, if(containsLeadLagUDF(expressionTree)) { throw new SemanticException(ErrorMsg.MISSING_OVER_CLAUSE.getMsg(functionName)); } - aggregations.put(expressionTree.toStringTree().toLowerCase(), expressionTree); + aggregations.put(expressionTree.toStringTree(), expressionTree); FunctionInfo fi = FunctionRegistry.getFunctionInfo(functionName); if (!fi.isNative()) { unparseTranslator.addIdentifierTranslation((ASTNode) expressionTree @@ -2947,7 +2947,7 @@ Integer genColListRegex(String colRegex, String tabAlias, ASTNode sel, String[] tmp = colSrcRR.reverseLookup(name); // Skip the colinfos which are not for this particular alias - if (tabAlias != null && !tmp[0].equalsIgnoreCase(tabAlias)) { + if (tabAlias != null && !tmp[0].equals(tabAlias)) { continue; } @@ -3803,7 +3803,7 @@ static boolean isRegex(String pattern, HiveConf conf) { // This can only happen without AS clause // We don't allow this for ExprResolver - the Group By case pos = genColListRegex(unescapeIdentifier(expr.getChild(1).getText()), - unescapeIdentifier(expr.getChild(0).getChild(0).getText().toLowerCase()), + unescapeIdentifier(expr.getChild(0).getChild(0).getText()), expr, col_list, null, inputRR, starRR, pos, out_rwsch, qb.getAliases(), false); } else { // Case when this is an expression -- 1.9.5 (Apple Git-50.3)