Samarth Jain created ARROW-10153:
------------------------------------

             Summary: Adding values to VarCharVector beyond 2GB results in 
IndexOutOfBoundsException
                 Key: ARROW-10153
                 URL: https://issues.apache.org/jira/browse/ARROW-10153
             Project: Apache Arrow
          Issue Type: Bug
          Components: Java
    Affects Versions: 1.0.0
            Reporter: Samarth Jain


On executing the below test case, one can see that on adding the 2049th string 
of size 1MB, it fails.  
{code:java}
int length = 1024 * 1024;
StringBuilder sb = new StringBuilder(length);
for (int i = 0; i < length; i++) {
 sb.append("a");
}
byte[] str = sb.toString().getBytes();
VarCharVector vector = new VarCharVector("v", new 
RootAllocator(Long.MAX_VALUE));
for (int i = 0; i < 3000; i++) {
 vector.setSafe(i, str);
}{code}
 
{code:java}
Exception in thread "main" java.lang.IndexOutOfBoundsException: index: 
-2147483648, length: 1048576 (expected: range(0, 2147483648))Exception in 
thread "main" java.lang.IndexOutOfBoundsException: index: -2147483648, length: 
1048576 (expected: range(0, 2147483648)) at 
org.apache.arrow.memory.ArrowBuf.checkIndex(ArrowBuf.java:699) at 
org.apache.arrow.memory.ArrowBuf.setBytes(ArrowBuf.java:762) at 
org.apache.arrow.vector.BaseVariableWidthVector.setBytes(BaseVariableWidthVector.java:1212)
 at 
org.apache.arrow.vector.BaseVariableWidthVector.setSafe(BaseVariableWidthVector.java:1011)
{code}

Stepping through the code, 
[https://github.com/apache/arrow/blob/master/java/memory/memory-core/src/main/java/org/apache/arrow/memory/ArrowBuf.java#L425]



returns the negative index `-2147483648`



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to