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))",
