diff --git storage-api/src/java/org/apache/hadoop/hive/ql/exec/vector/BytesColumnVector.java storage-api/src/java/org/apache/hadoop/hive/ql/exec/vector/BytesColumnVector.java index e386109920..1e654497fd 100644 --- storage-api/src/java/org/apache/hadoop/hive/ql/exec/vector/BytesColumnVector.java +++ storage-api/src/java/org/apache/hadoop/hive/ql/exec/vector/BytesColumnVector.java @@ -307,11 +307,11 @@ public void increaseBufferSpace(int nextElemLength) { if ((nextFree + nextElemLength) > buffer.length) { int newLength = smallBuffer.length * 2; while (newLength < nextElemLength) { - if (newLength < 0) { - throw new RuntimeException("Overflow of newLength. smallBuffer.length=" - + smallBuffer.length + ", nextElemLength=" + nextElemLength); + if (newLength > 0) { + newLength *= 2; + } else { // integer overflow happened; maximize size of next smallBuffer + newLength = Integer.MAX_VALUE; } - newLength *= 2; } smallBuffer = new byte[newLength]; ++bufferAllocationCount;