Repository: incubator-impala
Updated Branches:
  refs/heads/master 16552f6ed -> fe8d994f0


IMPALA-4523: Correct max VARCHAR size to 65535 (2^16 - 1).

Change-Id: If76eb45b01692ed360fad8fa1722d56fa06c6c00
Reviewed-on: http://gerrit.cloudera.org:8080/5204
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/fc61f2a3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-impala/tree/fc61f2a3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-impala/diff/fc61f2a3

Branch: refs/heads/master
Commit: fc61f2a3f733ecd8fb75d8c5a7ac7e8c25eca5c8
Parents: 16552f6
Author: Alex Behm <[email protected]>
Authored: Tue Nov 22 22:56:42 2016 -0800
Committer: Internal Jenkins <[email protected]>
Committed: Thu Nov 24 22:28:01 2016 +0000

----------------------------------------------------------------------
 be/src/exprs/expr-test.cc                                    | 2 +-
 be/src/runtime/types.h                                       | 6 +++---
 fe/src/main/java/org/apache/impala/catalog/ScalarType.java   | 8 ++++----
 .../test/java/org/apache/impala/analysis/AnalyzeDDLTest.java | 7 ++++---
 .../java/org/apache/impala/analysis/AnalyzeExprsTest.java    | 4 ++--
 5 files changed, 14 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/fc61f2a3/be/src/exprs/expr-test.cc
----------------------------------------------------------------------
diff --git a/be/src/exprs/expr-test.cc b/be/src/exprs/expr-test.cc
index 2a4e4ff..1340f55 100644
--- a/be/src/exprs/expr-test.cc
+++ b/be/src/exprs/expr-test.cc
@@ -2241,7 +2241,7 @@ TEST_F(ExprTest, StringFunctions) {
   TestStringValue("lower(cast('HELLO' as CHAR(3)))", "hel");
   TestStringValue("lower(cast(123456 as CHAR(3)))", "123");
   TestStringValue("cast(cast(123456 as CHAR(3)) as VARCHAR(3))", "123");
-  TestStringValue("cast(cast(123456 as CHAR(3)) as VARCHAR(65355))", "123");
+  TestStringValue("cast(cast(123456 as CHAR(3)) as VARCHAR(65535))", "123");
   TestIsNull("cast(NULL as CHAR(3))", ColumnType::CreateCharType(3));
 
   TestCharValue("cast('HELLO' as CHAR(255))",

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/fc61f2a3/be/src/runtime/types.h
----------------------------------------------------------------------
diff --git a/be/src/runtime/types.h b/be/src/runtime/types.h
index f2edbee..f265705 100644
--- a/be/src/runtime/types.h
+++ b/be/src/runtime/types.h
@@ -74,9 +74,9 @@ struct ColumnType {
   PrimitiveType type;
   /// Only set if type == TYPE_CHAR or type == TYPE_VARCHAR
   int len;
-  static const int MAX_VARCHAR_LENGTH = 65355;
-  static const int MAX_CHAR_LENGTH = 255;
-  static const int MAX_CHAR_INLINE_LENGTH = 128;
+  static const int MAX_VARCHAR_LENGTH = (1 << 16) - 1; // 65535
+  static const int MAX_CHAR_LENGTH = (1 << 8) - 1; // 255
+  static const int MAX_CHAR_INLINE_LENGTH = (1 << 7); // 128
 
   /// Only set if type == TYPE_DECIMAL
   int precision, scale;

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/fc61f2a3/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 c75ef16..052fd24 100644
--- a/fe/src/main/java/org/apache/impala/catalog/ScalarType.java
+++ b/fe/src/main/java/org/apache/impala/catalog/ScalarType.java
@@ -18,12 +18,12 @@
 package org.apache.impala.catalog;
 
 import org.apache.commons.lang3.StringUtils;
-
 import org.apache.impala.analysis.TypesUtil;
 import org.apache.impala.thrift.TColumnType;
 import org.apache.impala.thrift.TScalarType;
 import org.apache.impala.thrift.TTypeNode;
 import org.apache.impala.thrift.TTypeNodeType;
+
 import com.google.common.base.Preconditions;
 
 /**
@@ -56,12 +56,12 @@ public class ScalarType extends Type {
   public static final int DEFAULT_SCALE = 0; // SQL standard
 
   // Longest supported VARCHAR and CHAR, chosen to match Hive.
-  public static final int MAX_VARCHAR_LENGTH = 65355;
-  public static final int MAX_CHAR_LENGTH = 255;
+  public static final int MAX_VARCHAR_LENGTH = (1 << 16) - 1; // 65535
+  public static final int MAX_CHAR_LENGTH = (1 << 8) - 1; // 255
 
   // Longest CHAR that we in line in the tuple.
   // Keep consistent with backend ColumnType::CHAR_INLINE_LENGTH
-  public static final int CHAR_INLINE_LENGTH = 128;
+  public static final int CHAR_INLINE_LENGTH = (1 << 7); // 128
 
   // Hive, mysql, sql server standard.
   public static final int MAX_PRECISION = 38;

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/fc61f2a3/fe/src/test/java/org/apache/impala/analysis/AnalyzeDDLTest.java
----------------------------------------------------------------------
diff --git a/fe/src/test/java/org/apache/impala/analysis/AnalyzeDDLTest.java 
b/fe/src/test/java/org/apache/impala/analysis/AnalyzeDDLTest.java
index dbfdd60..94d1c1d 100644
--- a/fe/src/test/java/org/apache/impala/analysis/AnalyzeDDLTest.java
+++ b/fe/src/test/java/org/apache/impala/analysis/AnalyzeDDLTest.java
@@ -1553,11 +1553,12 @@ public class AnalyzeDDLTest extends FrontendTestBase {
     AnalysisError("create table new_table (i int) PARTITIONED BY (d 
decimal(40,1))",
         "Decimal precision must be <= 38: 40");
 
-    AnalyzesOk("create table new_table(s1 varchar(1), s2 varchar(32672))");
+    AnalyzesOk("create table new_table(s1 varchar(1), s2 varchar(32672), " +
+        "s3 varchar(65535))");
     AnalysisError("create table new_table(s1 varchar(0))",
         "Varchar size must be > 0: 0");
-    AnalysisError("create table new_table(s1 varchar(65356))",
-        "Varchar size must be <= 65355: 65356");
+    AnalysisError("create table new_table(s1 varchar(65536))",
+        "Varchar size must be <= 65535: 65536");
     AnalysisError("create table new_table(s1 char(0))",
         "Char size must be > 0: 0");
     AnalysisError("create table new_table(s1 Char(256))",

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/fc61f2a3/fe/src/test/java/org/apache/impala/analysis/AnalyzeExprsTest.java
----------------------------------------------------------------------
diff --git a/fe/src/test/java/org/apache/impala/analysis/AnalyzeExprsTest.java 
b/fe/src/test/java/org/apache/impala/analysis/AnalyzeExprsTest.java
index 6bc493b..e2d0058 100644
--- a/fe/src/test/java/org/apache/impala/analysis/AnalyzeExprsTest.java
+++ b/fe/src/test/java/org/apache/impala/analysis/AnalyzeExprsTest.java
@@ -404,8 +404,8 @@ public class AnalyzeExprsTest extends AnalyzerTest {
 
     AnalysisError("select cast('foo' as varchar(0))",
         "Varchar size must be > 0: 0");
-    AnalysisError("select cast('foo' as varchar(65356))",
-        "Varchar size must be <= 65355: 65356");
+    AnalysisError("select cast('foo' as varchar(65536))",
+        "Varchar size must be <= 65535: 65536");
     AnalysisError("select cast('foo' as char(0))",
         "Char size must be > 0: 0");
     AnalysisError("select cast('foo' as char(256))",

Reply via email to