Hi All:
I was looking following code to release extra allocated buffer. It seems it 
should be considering actualCount as "valueCount*typeWidth". Then it should 
calculate extra buffer and release it. Right now, it calculates based on 
actually allocated size and not justifying the intend. Any thought??
===============================================line 162 at 
"https://github.com/apache/arrow/blob/master/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java";
protected DataAndValidityBuffers allocFixedDataAndValidityBufs(int valueCount, 
int typeWidth) {
  long bufferSize = computeCombinedBufferSize(valueCount, typeWidth);
  assert bufferSize < MAX_ALLOCATION_SIZE;

  int validityBufferSize;
  int dataBufferSize;
  if (typeWidth == 0) {
    validityBufferSize = dataBufferSize = (int) (bufferSize / 2);
  } else {
    // Due to roundup to power-of-2 allocation, the bufferSize could be greater 
than the
    // requested size. Utilize the allocated buffer fully.;
    int actualCount = (int) ((bufferSize * 8.0) / (8 * typeWidth + 1));
    do {
      validityBufferSize = (int) 
roundUp8(getValidityBufferSizeFromCount(actualCount));
      dataBufferSize = (int) roundUp8(actualCount * typeWidth);
      if (validityBufferSize + dataBufferSize <= bufferSize) {
        break;
      }
      --actualCount;
    } while (true);
  }
====================================================
Thanks.Hitesh.

Reply via email to