Repository: hive Updated Branches: refs/heads/master e1b88a19a -> c3c2bdacd
HIVE-11597 : [CBO new return path] Handling of strings of zero-length (Ashutosh Chauhan via Jesus Camacho Rodriguez) Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/c3c2bdac Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/c3c2bdac Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/c3c2bdac Branch: refs/heads/master Commit: c3c2bdacdbfbcad5a92959e05313c6ff677af89c Parents: e1b88a1 Author: Ashutosh Chauhan <hashut...@apache.org> Authored: Wed Aug 19 09:15:18 2015 -0700 Committer: Ashutosh Chauhan <hashut...@apache.org> Committed: Wed Aug 19 09:15:18 2015 -0700 ---------------------------------------------------------------------- .../ql/optimizer/calcite/translator/TypeConverter.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/c3c2bdac/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/TypeConverter.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/TypeConverter.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/TypeConverter.java index 13c8c23..2825f77 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/TypeConverter.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/TypeConverter.java @@ -31,6 +31,8 @@ import org.apache.calcite.rex.RexBuilder; import org.apache.calcite.sql.parser.SqlParserPos; import org.apache.calcite.sql.SqlIntervalQualifier; import org.apache.calcite.sql.type.SqlTypeName; +import org.apache.hadoop.hive.common.type.HiveChar; +import org.apache.hadoop.hive.common.type.HiveVarchar; import org.apache.hadoop.hive.ql.exec.ColumnInfo; import org.apache.hadoop.hive.ql.exec.RowSchema; import org.apache.hadoop.hive.ql.optimizer.calcite.CalciteSemanticException; @@ -300,12 +302,17 @@ public class TypeConverter { case DECIMAL: return TypeInfoFactory.getDecimalTypeInfo(rType.getPrecision(), rType.getScale()); case VARCHAR: - if (rType.getPrecision() == Integer.MAX_VALUE) + int varcharLength = rType.getPrecision(); + if (varcharLength < 1 || varcharLength > HiveVarchar.MAX_VARCHAR_LENGTH) return TypeInfoFactory.getPrimitiveTypeInfo(serdeConstants.STRING_TYPE_NAME); else - return TypeInfoFactory.getVarcharTypeInfo(rType.getPrecision()); + return TypeInfoFactory.getVarcharTypeInfo(varcharLength); case CHAR: - return TypeInfoFactory.getCharTypeInfo(rType.getPrecision()); + int charLength = rType.getPrecision(); + if (charLength < 1 || charLength > HiveChar.MAX_CHAR_LENGTH) + return TypeInfoFactory.getPrimitiveTypeInfo(serdeConstants.STRING_TYPE_NAME); + else + return TypeInfoFactory.getCharTypeInfo(charLength); case OTHER: default: return TypeInfoFactory.voidTypeInfo;