You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2018/06/05 16:43:04 UTC
hive git commit: HIVE-19687 : Export table on acid partitioned table
is failing (Vineet Garg via Ashutosh Chauhan)
Repository: hive
Updated Branches:
refs/heads/master 96c65a395 -> 3dcd36336
HIVE-19687 : Export table on acid partitioned table is failing (Vineet Garg via Ashutosh Chauhan)
Signed-off-by: Ashutosh Chauhan <ha...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/3dcd3633
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/3dcd3633
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/3dcd3633
Branch: refs/heads/master
Commit: 3dcd36336be154c879786da0afe0219c25dbd304
Parents: 96c65a3
Author: Vineet Garg <vg...@apache.org>
Authored: Thu May 24 21:09:00 2018 -0700
Committer: Ashutosh Chauhan <ha...@apache.org>
Committed: Tue Jun 5 09:42:36 2018 -0700
----------------------------------------------------------------------
.../test/resources/testconfiguration.properties | 1 +
.../ql/parse/ColumnStatsSemanticAnalyzer.java | 28 +-------------------
.../hadoop/hive/ql/parse/SemanticAnalyzer.java | 27 +++++++++++++++++++
.../ql/parse/UpdateDeleteSemanticAnalyzer.java | 4 ++-
4 files changed, 32 insertions(+), 28 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/3dcd3633/itests/src/test/resources/testconfiguration.properties
----------------------------------------------------------------------
diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties
index b6a1c9b..de0ca44 100644
--- a/itests/src/test/resources/testconfiguration.properties
+++ b/itests/src/test/resources/testconfiguration.properties
@@ -418,6 +418,7 @@ minillaplocal.query.files=\
bucket_num_reducers_acid.q,\
dp_counter_non_mm.q,\
dp_counter_mm.q,\
+ acid_export.q,\
acid_no_buckets.q, \
acid_globallimit.q,\
acid_vectorization_missing_cols.q,\
http://git-wip-us.apache.org/repos/asf/hive/blob/3dcd3633/ql/src/java/org/apache/hadoop/hive/ql/parse/ColumnStatsSemanticAnalyzer.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/ColumnStatsSemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/ColumnStatsSemanticAnalyzer.java
index 7cb1724..9aff006 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/ColumnStatsSemanticAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/ColumnStatsSemanticAnalyzer.java
@@ -162,7 +162,7 @@ public class ColumnStatsSemanticAnalyzer extends SemanticAnalyzer {
} else {
whereClause.append(" and ");
}
- whereClause.append("`").append(partKey).append("` = ").append(genPartValueString(partKey, value));
+ whereClause.append("`").append(partKey).append("` = ").append(genPartValueString(getColTypeOf(partKey), value));
}
}
@@ -179,33 +179,7 @@ public class ColumnStatsSemanticAnalyzer extends SemanticAnalyzer {
return predPresent ? whereClause.append(groupByClause) : groupByClause;
}
- private String genPartValueString(String partKey, String partVal) throws SemanticException {
- String returnVal = partVal;
- String partColType = getColTypeOf(partKey);
- if (partColType.equals(serdeConstants.STRING_TYPE_NAME) ||
- partColType.contains(serdeConstants.VARCHAR_TYPE_NAME) ||
- partColType.contains(serdeConstants.CHAR_TYPE_NAME)) {
- returnVal = "'" + escapeSQLString(partVal) + "'";
- } else if (partColType.equals(serdeConstants.TINYINT_TYPE_NAME)) {
- returnVal = partVal + "Y";
- } else if (partColType.equals(serdeConstants.SMALLINT_TYPE_NAME)) {
- returnVal = partVal + "S";
- } else if (partColType.equals(serdeConstants.INT_TYPE_NAME)) {
- returnVal = partVal;
- } else if (partColType.equals(serdeConstants.BIGINT_TYPE_NAME)) {
- returnVal = partVal + "L";
- } else if (partColType.contains(serdeConstants.DECIMAL_TYPE_NAME)) {
- returnVal = partVal + "BD";
- } else if (partColType.equals(serdeConstants.DATE_TYPE_NAME) ||
- partColType.equals(serdeConstants.TIMESTAMP_TYPE_NAME)) {
- returnVal = partColType + " '" + escapeSQLString(partVal) + "'";
- } else {
- //for other usually not used types, just quote the value
- returnVal = "'" + escapeSQLString(partVal) + "'";
- }
- return returnVal;
- }
private String getColTypeOf(String partKey) throws SemanticException{
http://git-wip-us.apache.org/repos/asf/hive/blob/3dcd3633/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
----------------------------------------------------------------------
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 f3eff0f..2e055ab 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
@@ -533,6 +533,33 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer {
return ctx.getOpContext();
}
+ public String genPartValueString(String partColType, String partVal) throws SemanticException {
+ String returnVal = partVal;
+ if (partColType.equals(serdeConstants.STRING_TYPE_NAME) ||
+ partColType.contains(serdeConstants.VARCHAR_TYPE_NAME) ||
+ partColType.contains(serdeConstants.CHAR_TYPE_NAME)) {
+ returnVal = "'" + escapeSQLString(partVal) + "'";
+ } else if (partColType.equals(serdeConstants.TINYINT_TYPE_NAME)) {
+ returnVal = partVal + "Y";
+ } else if (partColType.equals(serdeConstants.SMALLINT_TYPE_NAME)) {
+ returnVal = partVal + "S";
+ } else if (partColType.equals(serdeConstants.INT_TYPE_NAME)) {
+ returnVal = partVal;
+ } else if (partColType.equals(serdeConstants.BIGINT_TYPE_NAME)) {
+ returnVal = partVal + "L";
+ } else if (partColType.contains(serdeConstants.DECIMAL_TYPE_NAME)) {
+ returnVal = partVal + "BD";
+ } else if (partColType.equals(serdeConstants.DATE_TYPE_NAME) ||
+ partColType.equals(serdeConstants.TIMESTAMP_TYPE_NAME)) {
+ returnVal = partColType + " '" + escapeSQLString(partVal) + "'";
+ } else {
+ //for other usually not used types, just quote the value
+ returnVal = "'" + escapeSQLString(partVal) + "'";
+ }
+
+ return returnVal;
+ }
+
public void doPhase1QBExpr(ASTNode ast, QBExpr qbexpr, String id, String alias)
throws SemanticException {
doPhase1QBExpr(ast, qbexpr, id, alias, false);
http://git-wip-us.apache.org/repos/asf/hive/blob/3dcd3633/ql/src/java/org/apache/hadoop/hive/ql/parse/UpdateDeleteSemanticAnalyzer.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/UpdateDeleteSemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/UpdateDeleteSemanticAnalyzer.java
index 512f1ff..8e5118b 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/UpdateDeleteSemanticAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/UpdateDeleteSemanticAnalyzer.java
@@ -277,7 +277,9 @@ public class UpdateDeleteSemanticAnalyzer extends SemanticAnalyzer {
TableSpec exportTableSpec = new TableSpec(db, conf, tableTree, false, true);
if(exportTableSpec.getPartSpec() != null) {
StringBuilder whereClause = null;
+ int partColsIdx = -1; //keep track of corresponding col in partCols
for(Map.Entry<String, String> ent : exportTableSpec.getPartSpec().entrySet()) {
+ partColsIdx++;
if(ent.getValue() == null) {
continue; //partial spec
}
@@ -288,7 +290,7 @@ public class UpdateDeleteSemanticAnalyzer extends SemanticAnalyzer {
whereClause.append(" AND ");
}
whereClause.append(HiveUtils.unparseIdentifier(ent.getKey(), conf))
- .append(" = ").append(ent.getValue());
+ .append(" = ").append(genPartValueString(partCols.get(partColsIdx).getType(), ent.getValue()));
}
if(whereClause != null) {
rewrittenQueryStr.append(whereClause);