IMPALA-3812: Fix error message for unsupported types

Before this patch an unclear error message was returned if DATE or
DATETIME appeared in the select list after a star expansion. This was
because DATE and DATETIME PrimitiveType was serialized as INVALID_TYPE.
This is fixed by serializing correctly.

Change-Id: I9019b4bfd219f94e554c795befd3ff5e39706ea9
Reviewed-on: http://gerrit.cloudera.org:8080/4859
Reviewed-by: Alex Behm <[email protected]>
Tested-by: Internal Jenkins


Project: http://git-wip-us.apache.org/repos/asf/incubator-impala/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-impala/commit/eb8120d2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-impala/tree/eb8120d2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-impala/diff/eb8120d2

Branch: refs/heads/master
Commit: eb8120d218e825d36d3d8ca7560b3863691c8a73
Parents: 0ab3d76
Author: Taras Bobrovytsky <[email protected]>
Authored: Wed Oct 26 17:02:05 2016 -0700
Committer: Internal Jenkins <[email protected]>
Committed: Thu Nov 17 05:31:34 2016 +0000

----------------------------------------------------------------------
 .../apache/impala/catalog/PrimitiveType.java    |  2 ++
 .../org/apache/impala/catalog/ScalarType.java   |  2 +-
 .../apache/impala/analysis/AnalyzerTest.java    | 10 ++++-----
 testdata/UnsupportedTypes/data.csv              | 10 ++++-----
 .../functional/functional_schema_template.sql   |  1 +
 .../queries/QueryTest/misc.test                 | 22 +++++++++++++++++++-
 6 files changed, 35 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/eb8120d2/fe/src/main/java/org/apache/impala/catalog/PrimitiveType.java
----------------------------------------------------------------------
diff --git a/fe/src/main/java/org/apache/impala/catalog/PrimitiveType.java 
b/fe/src/main/java/org/apache/impala/catalog/PrimitiveType.java
index fa53c6c..986c4fe 100644
--- a/fe/src/main/java/org/apache/impala/catalog/PrimitiveType.java
+++ b/fe/src/main/java/org/apache/impala/catalog/PrimitiveType.java
@@ -78,6 +78,8 @@ public enum PrimitiveType {
       case BIGINT: return BIGINT;
       case FLOAT: return FLOAT;
       case DOUBLE: return DOUBLE;
+      case DATE: return DATE;
+      case DATETIME: return DATETIME;
       case STRING: return STRING;
       case VARCHAR: return VARCHAR;
       case TIMESTAMP: return TIMESTAMP;

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/eb8120d2/fe/src/main/java/org/apache/impala/catalog/ScalarType.java
----------------------------------------------------------------------
diff --git a/fe/src/main/java/org/apache/impala/catalog/ScalarType.java 
b/fe/src/main/java/org/apache/impala/catalog/ScalarType.java
index 5f98b7c..c75ef16 100644
--- a/fe/src/main/java/org/apache/impala/catalog/ScalarType.java
+++ b/fe/src/main/java/org/apache/impala/catalog/ScalarType.java
@@ -266,7 +266,7 @@ public class ScalarType extends Type {
 
   @Override
   public boolean isSupported() {
-    return !getUnsupportedTypes().contains(this);
+    return isValid() && !getUnsupportedTypes().contains(this);
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/eb8120d2/fe/src/test/java/org/apache/impala/analysis/AnalyzerTest.java
----------------------------------------------------------------------
diff --git a/fe/src/test/java/org/apache/impala/analysis/AnalyzerTest.java 
b/fe/src/test/java/org/apache/impala/analysis/AnalyzerTest.java
index b9d1595..ff99085 100644
--- a/fe/src/test/java/org/apache/impala/analysis/AnalyzerTest.java
+++ b/fe/src/test/java/org/apache/impala/analysis/AnalyzerTest.java
@@ -304,20 +304,20 @@ public class AnalyzerTest extends FrontendTestBase {
     // Unsupported type binary.
     AnalysisError("select bin_col from functional.unsupported_types",
         "Unsupported type 'BINARY' in 'bin_col'.");
-    // Unsupported type binary in a star expansion.
+    // Unsupported type date in a star expansion.
     AnalysisError("select * from functional.unsupported_types",
-        "Unsupported type 'BINARY' in 
'functional.unsupported_types.bin_col'.");
+        "Unsupported type 'DATE' in 'functional.unsupported_types.date_col'.");
     // Mixed supported/unsupported types.
     AnalysisError("select int_col, str_col, bin_col " +
         "from functional.unsupported_types",
         "Unsupported type 'BINARY' in 'bin_col'.");
     AnalysisError("create table tmp as select * from 
functional.unsupported_types",
-        "Unsupported type 'BINARY' in 
'functional.unsupported_types.bin_col'.");
+        "Unsupported type 'DATE' in 'functional.unsupported_types.date_col'.");
     // Unsupported type in the target insert table.
     AnalysisError("insert into functional.unsupported_types " +
-        "values(null, null, null, null, null)",
+        "values(null, null, null, null, null, null)",
         "Unable to INSERT into target table (functional.unsupported_types) 
because " +
-        "the column 'bin_col' has an unsupported type 'BINARY'");
+        "the column 'date_col' has an unsupported type 'DATE'");
     // Unsupported partition-column type.
     AnalysisError("select * from functional.unsupported_partition_types",
         "Failed to load metadata for table: 
'functional.unsupported_partition_types'");

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/eb8120d2/testdata/UnsupportedTypes/data.csv
----------------------------------------------------------------------
diff --git a/testdata/UnsupportedTypes/data.csv 
b/testdata/UnsupportedTypes/data.csv
index 41718ce..551c34a 100644
--- a/testdata/UnsupportedTypes/data.csv
+++ b/testdata/UnsupportedTypes/data.csv
@@ -1,5 +1,5 @@
-0,0,aaaa,a,0
-1,1.0,bbbb,b,10
-2,1111111111.12345678901234567890,cccc,cccccccccc,20
-,2222222222.1234567890,\N,dddddddddd,,
-4,,eeee,,40
+0,0,2016-05-05,aaaa,a,0
+1,1.0,,bbbb,b,10
+2,1111111111.12345678901234567890,2018-05-05,cccc,cccccccccc,20
+,2222222222.1234567890,2019-05-05,\N,dddddddddd,,
+4,,2020-05-05,eeee,,40

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/eb8120d2/testdata/datasets/functional/functional_schema_template.sql
----------------------------------------------------------------------
diff --git a/testdata/datasets/functional/functional_schema_template.sql 
b/testdata/datasets/functional/functional_schema_template.sql
index bed4713..be6b232 100644
--- a/testdata/datasets/functional/functional_schema_template.sql
+++ b/testdata/datasets/functional/functional_schema_template.sql
@@ -1434,6 +1434,7 @@ unsupported_types
 CREATE EXTERNAL TABLE IF NOT EXISTS {db_name}{db_suffix}.{table_name} (
   int_col INT,
   dec_col DECIMAL,
+  date_col DATE,
   str_col STRING,
   bin_col BINARY,
   bigint_col BIGINT)

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/eb8120d2/testdata/workloads/functional-query/queries/QueryTest/misc.test
----------------------------------------------------------------------
diff --git a/testdata/workloads/functional-query/queries/QueryTest/misc.test 
b/testdata/workloads/functional-query/queries/QueryTest/misc.test
index a0cf841..061963f 100644
--- a/testdata/workloads/functional-query/queries/QueryTest/misc.test
+++ b/testdata/workloads/functional-query/queries/QueryTest/misc.test
@@ -135,4 +135,24 @@ SELECT count(*) from functional.alltypes group by bool_col 
having bool_col
 3650
 ---- TYPES
 bigint
-====
\ No newline at end of file
+====
+---- QUERY
+# IMPALA-3812: Verfiy that the correct error message is shown when the star 
expansion adds
+# the DATE unsupported type to the select list.
+select * from functional.unsupported_types
+---- CATCH
+Unsupported type 'DATE' in 'functional.unsupported_types.date_col'.
+====
+---- QUERY
+# IMPALA-3812: Verfiy that DATE type is displayed correctly in the describe 
table.
+describe functional.unsupported_types
+---- RESULTS
+'int_col','int',''
+'dec_col','decimal(10,0)',''
+'date_col','date',''
+'str_col','string',''
+'bin_col','binary',''
+'bigint_col','bigint',''
+---- TYPES
+STRING, STRING, STRING
+====

Reply via email to