asfimport opened a new issue, #417:
URL: https://github.com/apache/arrow-java/issues/417

   [Class 
BaseValueVector](https://github.com/apache/arrow/blob/master/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java)
 's method allocFixedDataAndValidityBufs on line#162 allocates a buffer in 
power of 2 size. After that, it has a code to release extra buffer. For that, 
it calculates the extra buffer from allocated size "bufferSize" but in my 
opinion, it should take original "valueCount" to find the extra buffer size. 
   
   Here, I see a problem in line#162, where its taking "bufferSize" to find the 
extra allocated bytes. It should be "valueCount\*typeWidth + valueCount/8".
   
   Here is an example for that. Let's take 1000 ints. Then,
    valueCount = 1000 ints
    typeWidth = 4 bytes
    validitiyBufferSize = 125 bytes
    valueBufferSize = 4000 bytes
    combinedSize(valueBufferSize + validityBufferSize) = 4128 bytes (multiple 
of 8)
    combinedSizeWith2ThePowerSize = 8192 bytes, this will be "bufferSize" at 
line#152.
   
   With the above calculation, this code should release 
(combinedSizeWith2ThePowerSize - combinedSize) = 4064 bytes. But, this is not 
happening.
   
    
   
    
   
   **Reporter**: [Hitesh 
Khamesra](https://issues.apache.org/jira/browse/ARROW-5057)
   #### PRs and other links:
   - [GitHub Pull Request 
apache/arrow#4079](https://github.com/apache/arrow/pull/4079)
   
   <sub>**Note**: *This issue was originally created as 
[ARROW-5057](https://issues.apache.org/jira/browse/ARROW-5057). Please see the 
[migration documentation](https://github.com/apache/arrow/issues/14542) for 
further details.*</sub>


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@arrow.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to