diff --git serde/src/java/org/apache/hadoop/hive/serde2/lazy/fast/LazySimpleDeserializeRead.java serde/src/java/org/apache/hadoop/hive/serde2/lazy/fast/LazySimpleDeserializeRead.java index b375d26..7e9f94e 100644 --- serde/src/java/org/apache/hadoop/hive/serde2/lazy/fast/LazySimpleDeserializeRead.java +++ serde/src/java/org/apache/hadoop/hive/serde2/lazy/fast/LazySimpleDeserializeRead.java @@ -270,6 +270,9 @@ public boolean readCheckNull() { } break; case BYTE: + if (!LazyUtils.isNumberMaybe(bytes, fieldStart, fieldLength)) { + return true; + } try { currentByte = LazyByte.parseByte(bytes, fieldStart, fieldLength, 10); } catch (NumberFormatException e) { @@ -278,6 +281,9 @@ public boolean readCheckNull() { } break; case SHORT: + if (!LazyUtils.isNumberMaybe(bytes, fieldStart, fieldLength)) { + return true; + } try { currentShort = LazyShort.parseShort(bytes, fieldStart, fieldLength, 10); } catch (NumberFormatException e) { @@ -286,6 +292,9 @@ public boolean readCheckNull() { } break; case INT: + if (!LazyUtils.isNumberMaybe(bytes, fieldStart, fieldLength)) { + return true; + } try { currentInt = LazyInteger.parseInt(bytes, fieldStart, fieldLength, 10); } catch (NumberFormatException e) { @@ -294,6 +303,9 @@ public boolean readCheckNull() { } break; case LONG: + if (!LazyUtils.isNumberMaybe(bytes, fieldStart, fieldLength)) { + return true; + } try { currentLong = LazyLong.parseLong(bytes, fieldStart, fieldLength, 10); } catch (NumberFormatException e) { @@ -303,6 +315,9 @@ public boolean readCheckNull() { break; case FLOAT: { + if (!LazyUtils.isNumberMaybe(bytes, fieldStart, fieldLength)) { + return true; + } String byteData = null; try { byteData = Text.decode(bytes, fieldStart, fieldLength); @@ -319,6 +334,9 @@ public boolean readCheckNull() { break; case DOUBLE: { + if (!LazyUtils.isNumberMaybe(bytes, fieldStart, fieldLength)) { + return true; + } String byteData = null; try { byteData = Text.decode(bytes, fieldStart, fieldLength); @@ -363,6 +381,9 @@ public boolean readCheckNull() { break; case DATE: { + if (fieldLength == 0) { + return true; + } String s = null; try { s = Text.decode(bytes, fieldStart, fieldLength); @@ -375,6 +396,9 @@ public boolean readCheckNull() { break; case TIMESTAMP: { + if (fieldLength == 0) { + return true; + } String s = null; try { s = new String(bytes, fieldStart, fieldLength, "US-ASCII"); @@ -425,6 +449,9 @@ public boolean readCheckNull() { break; case DECIMAL: { + if (!LazyUtils.isNumberMaybe(bytes, fieldStart, fieldLength)) { + return true; + } String byteData = null; try { byteData = Text.decode(bytes, fieldStart, fieldLength);