minor, unknown precision for char should be 255
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/d045a3a7 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/d045a3a7 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/d045a3a7 Branch: refs/heads/2.1.x Commit: d045a3a793eccba873cf6a114eb4a545845d9a0a Parents: 68b2b30 Author: Hongbin Ma <mahong...@apache.org> Authored: Mon Aug 21 22:21:25 2017 +0800 Committer: Hongbin Ma <mahong...@apache.org> Committed: Mon Aug 21 22:22:32 2017 +0800 ---------------------------------------------------------------------- .../org/apache/kylin/metadata/datatype/DataType.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/d045a3a7/core-metadata/src/main/java/org/apache/kylin/metadata/datatype/DataType.java ---------------------------------------------------------------------- diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/datatype/DataType.java b/core-metadata/src/main/java/org/apache/kylin/metadata/datatype/DataType.java index 83b2391..66ff581 100644 --- a/core-metadata/src/main/java/org/apache/kylin/metadata/datatype/DataType.java +++ b/core-metadata/src/main/java/org/apache/kylin/metadata/datatype/DataType.java @@ -164,14 +164,16 @@ public class DataType implements Serializable { try { n = Integer.parseInt(parts[i]); } catch (NumberFormatException e) { - throw new IllegalArgumentException("bad data type -- " + datatype + ", precision/scale not numeric"); + throw new IllegalArgumentException( + "bad data type -- " + datatype + ", precision/scale not numeric"); } if (i == 0) precision = n; else if (i == 1) scale = n; else - throw new IllegalArgumentException("bad data type -- " + datatype + ", too many precision/scale parts"); + throw new IllegalArgumentException( + "bad data type -- " + datatype + ", too many precision/scale parts"); } } @@ -179,6 +181,9 @@ public class DataType implements Serializable { if ((name.equals("char") || name.equals("varchar")) && precision == -1) { precision = 256; // to save memory at frontend, e.g. tableau will // allocate memory according to this + if (name.equals("char")) { + precision -= 1; //at most 255 according to https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types#LanguageManualTypes-CharcharChar + } } // FIXME (19,4) for unknown decimal precision @@ -217,7 +222,7 @@ public class DataType implements Serializable { public boolean isTimeFamily() { return DATETIME_FAMILY.contains(name) && !isDate(); } - + public boolean isDate() { return name.equals("date"); }