You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@impala.apache.org by ta...@apache.org on 2018/03/21 18:15:53 UTC
[2/5] impala git commit: IMPALA-6687: Fix INSERT with mixed case
partition column name
IMPALA-6687: Fix INSERT with mixed case partition column name
For INSERT/UPSERT where a column permutation is specified but some
columns are excluded, Impala would fail with an AnalysisException if
a partition column for an HDFS table specified in the column
permutation, i.e. not in the partition clause (or equivalently, a
row-key column for an HBase table or a primary key for a Kudu table)
was specified with some upper case letters.
Testing:
- Added analysis tests for all of the above scenarios.
Change-Id: If6975c2978850381904a45107f76850640aff52e
Reviewed-on: http://gerrit.cloudera.org:8080/9728
Reviewed-by: Alex Behm <al...@cloudera.com>
Tested-by: Impala Public Jenkins
Project: http://git-wip-us.apache.org/repos/asf/impala/repo
Commit: http://git-wip-us.apache.org/repos/asf/impala/commit/d7c8902d
Tree: http://git-wip-us.apache.org/repos/asf/impala/tree/d7c8902d
Diff: http://git-wip-us.apache.org/repos/asf/impala/diff/d7c8902d
Branch: refs/heads/master
Commit: d7c8902dc8f66be38f97cf4d6caae62f80ffd372
Parents: 3d65f85
Author: Thomas Tauber-Marshall <tm...@cloudera.com>
Authored: Tue Mar 20 15:33:34 2018 -0700
Committer: Impala Public Jenkins <im...@gerrit.cloudera.org>
Committed: Wed Mar 21 03:20:26 2018 +0000
----------------------------------------------------------------------
.../org/apache/impala/analysis/InsertStmt.java | 2 +-
.../impala/analysis/AnalyzeStmtsTest.java | 24 ++++++++++++++++++++
.../impala/analysis/AnalyzeUpsertStmtTest.java | 2 ++
3 files changed, 27 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/impala/blob/d7c8902d/fe/src/main/java/org/apache/impala/analysis/InsertStmt.java
----------------------------------------------------------------------
diff --git a/fe/src/main/java/org/apache/impala/analysis/InsertStmt.java b/fe/src/main/java/org/apache/impala/analysis/InsertStmt.java
index 6a94f3f..ad05751 100644
--- a/fe/src/main/java/org/apache/impala/analysis/InsertStmt.java
+++ b/fe/src/main/java/org/apache/impala/analysis/InsertStmt.java
@@ -332,7 +332,7 @@ public class InsertStmt extends StatementBase {
"Unknown column '" + columnName + "' in column permutation");
}
- if (!mentionedColumnNames.add(columnName)) {
+ if (!mentionedColumnNames.add(column.getName())) {
throw new AnalysisException(
"Duplicate column '" + columnName + "' in column permutation");
}
http://git-wip-us.apache.org/repos/asf/impala/blob/d7c8902d/fe/src/test/java/org/apache/impala/analysis/AnalyzeStmtsTest.java
----------------------------------------------------------------------
diff --git a/fe/src/test/java/org/apache/impala/analysis/AnalyzeStmtsTest.java b/fe/src/test/java/org/apache/impala/analysis/AnalyzeStmtsTest.java
index deeb0a8..4720abc 100644
--- a/fe/src/test/java/org/apache/impala/analysis/AnalyzeStmtsTest.java
+++ b/fe/src/test/java/org/apache/impala/analysis/AnalyzeStmtsTest.java
@@ -3198,6 +3198,8 @@ public class AnalyzeStmtsTest extends AnalyzerTest {
AnalysisError("insert into functional_kudu.testtbl(zip) values(1)",
"All primary key columns must be specified for INSERTing into Kudu tables. " +
"Missing columns are: id");
+ // Mixed column name case, on both primary key and non-primary key cols.
+ AnalyzesOk("insert into functional_kudu.alltypes (ID, BOOL_COL) values (0, true)");
}
}
@@ -3322,6 +3324,13 @@ public class AnalyzeStmtsTest extends AnalyzerTest {
"select * from functional.alltypes",
"Target table 'functional.alltypessmall' has fewer columns (13) than the " +
"SELECT / VALUES clause and PARTITION clause return (15)");
+
+ // Mixed column name case in the partition clause.
+ AnalyzesOk("insert " + qualifier + " table functional.alltypessmall " +
+ "partition (YEAR, month)" +
+ "select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, " +
+ "float_col, double_col, date_string_col, string_col, timestamp_col, year, " +
+ "month from functional.alltypes");
}
/**
@@ -3510,6 +3519,12 @@ public class AnalyzeStmtsTest extends AnalyzerTest {
"from functional.alltypes",
"Non-constant expressions are not supported as static partition-key values " +
"in 'month=int_col'.");
+ // Mixed column case in the partition clause.
+ AnalyzesOk("insert " + qualifier + " table functional.alltypessmall " +
+ "partition (year=2009, MONTH=4)" +
+ "select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, " +
+ "float_col, double_col, date_string_col, string_col, timestamp_col " +
+ "from functional.alltypes");
if (qualifier.contains("OVERWRITE")) {
AnalysisError("insert " + qualifier + " table functional_hbase.alltypessmall " +
@@ -3640,6 +3655,10 @@ public class AnalyzeStmtsTest extends AnalyzerTest {
AnalyzesOk("insert " + qualifier + " table functional.alltypes() " +
"partition(year, month) select 1,2 from functional.alltypes");
+ // Mixed column case in permutation, both partition and non-partition cols.
+ AnalyzesOk("insert " + qualifier + " table functional.alltypes (ID, YEAR, month)" +
+ "values (0, 0, 0)");
+
if (!qualifier.contains("OVERWRITE")) {
// Simple permutation
AnalyzesOk("insert " + qualifier + " table functional_hbase.alltypesagg" +
@@ -3661,6 +3680,11 @@ public class AnalyzeStmtsTest extends AnalyzerTest {
"float_col, double_col, date_string_col, string_col, timestamp_col from " +
"functional.alltypesnopart",
"Row-key column 'id' must be explicitly mentioned in column permutation.");
+ // Mixed column case on both row-key and non-row-key cols.
+ AnalyzesOk("insert " + qualifier + " table functional_hbase.alltypesagg" +
+ "(ID, bool_col, tinyint_col, smallint_col, INT_COL, bigint_col, " +
+ "float_col, double_col, date_string_col, string_col, timestamp_col) " +
+ "select * from functional.alltypesnopart");
}
}
http://git-wip-us.apache.org/repos/asf/impala/blob/d7c8902d/fe/src/test/java/org/apache/impala/analysis/AnalyzeUpsertStmtTest.java
----------------------------------------------------------------------
diff --git a/fe/src/test/java/org/apache/impala/analysis/AnalyzeUpsertStmtTest.java b/fe/src/test/java/org/apache/impala/analysis/AnalyzeUpsertStmtTest.java
index fc7b51a..fdd2936 100644
--- a/fe/src/test/java/org/apache/impala/analysis/AnalyzeUpsertStmtTest.java
+++ b/fe/src/test/java/org/apache/impala/analysis/AnalyzeUpsertStmtTest.java
@@ -62,6 +62,8 @@ public class AnalyzeUpsertStmtTest extends AnalyzerTest {
// Hint
AnalyzesOk("upsert into table functional_kudu.testtbl [clustered] select * from " +
"functional_kudu.testtbl");
+ // Mixed column name case on both primary key and non-primary key cols.
+ AnalyzesOk("upsert into functional_kudu.testtbl (ID, ZIP) values (0, 0)");
// Key columns missing from permutation
AnalysisError("upsert into functional_kudu.testtbl(zip) values(1)",