Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
make sure we're closing intermediate batches while reading
  • Loading branch information
amogh-jahagirdar committed May 1, 2025
commit e63f33eec679ead24b5ce3fd77d3da3e1382060b
Original file line number Diff line number Diff line change
Expand Up @@ -624,25 +624,40 @@ private RowIdVectorReader(long firstRowId, VectorizedArrowReader idReader) {

@Override
public VectorHolder read(VectorHolder reuse, int numValsToRead) {
FieldVector positions = posReader.read(null, numValsToRead).vector();
VectorHolder ids = idReader.read(null, numValsToRead);
BigIntVector vec = allocateBigIntVector(ROW_ID_ARROW_FIELD, numValsToRead);
ArrowBuf dataBuffer = vec.getDataBuffer();
ArrowVectorAccessor<?, String, ?, ?> idsAccessor =
ids.vector() == null ? null : ArrowVectorAccessors.getVectorAccessor(ids);
for (int i = 0; i < numValsToRead; i += 1) {
long bufferOffset = (long) i * Long.BYTES;
if (idsAccessor == null || isNull(ids, i)) {
long rowId = firstRowId + (Long) positions.getObject(i);
dataBuffer.setLong(bufferOffset, rowId);
} else {
long materializedRowId = idsAccessor.getLong(i);
dataBuffer.setLong(bufferOffset, materializedRowId);
FieldVector positions = null;
FieldVector ids = null;

try {
positions = posReader.read(null, numValsToRead).vector();
VectorHolder idsHolder = idReader.read(null, numValsToRead);
ids = idsHolder.vector();
ArrowVectorAccessor<?, String, ?, ?> idsAccessor =
ids == null ? null : ArrowVectorAccessors.getVectorAccessor(idsHolder);

BigIntVector rowIds = allocateBigIntVector(ROW_ID_ARROW_FIELD, numValsToRead);
ArrowBuf dataBuffer = rowIds.getDataBuffer();
for (int i = 0; i < numValsToRead; i += 1) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
for (int i = 0; i < numValsToRead; i += 1) {
for (int i = 0; i < numValsToRead; i++) {

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Happy to change it if you feel strongly about it, but I mostly just followed the increment pattern of i += 1 already in this class (and this package it looks like). If we do change it, I'd change it for the other instances in this class just to keep things consistent.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I actually didn't realize that we have so many places that do i += 1 in for loops. It's not a big deal and I don't feel strong about it but it would be great to fix this throughout the codebase in a separate PR

long bufferOffset = (long) i * Long.BYTES;
if (idsAccessor == null || isNull(idsHolder, i)) {
long rowId = firstRowId + (Long) positions.getObject(i);
dataBuffer.setLong(bufferOffset, rowId);
} else {
long materializedRowId = idsAccessor.getLong(i);
dataBuffer.setLong(bufferOffset, materializedRowId);
}
}
}

vec.setValueCount(numValsToRead);
return VectorHolder.vectorHolder(vec, MetadataColumns.ROW_ID, nulls);
rowIds.setValueCount(numValsToRead);
return VectorHolder.vectorHolder(rowIds, MetadataColumns.ROW_ID, nulls);
} finally {
if (positions != null) {
positions.close();
}

if (ids != null) {
ids.close();
}
}
}

@Override
Expand Down Expand Up @@ -684,23 +699,34 @@ private LastUpdatedSeqVectorReader(

@Override
public VectorHolder read(VectorHolder reuse, int numValsToRead) {
BigIntVector vec = allocateBigIntVector(LAST_UPDATED_SEQ, numValsToRead);
ArrowBuf dataBuffer = vec.getDataBuffer();
VectorHolder seqNumbers = seqReader.read(null, numValsToRead);
ArrowVectorAccessor<?, String, ?, ?> seqAccessor =
seqNumbers.vector() == null ? null : ArrowVectorAccessors.getVectorAccessor(seqNumbers);
for (int i = 0; i < numValsToRead; i += 1) {
long bufferOffset = (long) i * Long.BYTES;
if (seqAccessor == null || isNull(seqNumbers, i)) {
dataBuffer.setLong(bufferOffset, lastUpdatedSeq);
} else {
long materializedSeqNumber = seqAccessor.getLong(i);
dataBuffer.setLong(bufferOffset, materializedSeqNumber);
FieldVector seqNumbers = null;
try {
VectorHolder seqNumbersHolder = seqReader.read(null, numValsToRead);
seqNumbers = seqNumbersHolder.vector();
ArrowVectorAccessor<?, String, ?, ?> seqAccessor =
seqNumbers == null ? null : ArrowVectorAccessors.getVectorAccessor(seqNumbersHolder);

BigIntVector lastUpdatedSequenceNumbers =
allocateBigIntVector(LAST_UPDATED_SEQ, numValsToRead);
ArrowBuf dataBuffer = lastUpdatedSequenceNumbers.getDataBuffer();
for (int i = 0; i < numValsToRead; i += 1) {
long bufferOffset = (long) i * Long.BYTES;
if (seqAccessor == null || isNull(seqNumbersHolder, i)) {
dataBuffer.setLong(bufferOffset, lastUpdatedSeq);
} else {
long materializedSeqNumber = seqAccessor.getLong(i);
dataBuffer.setLong(bufferOffset, materializedSeqNumber);
}
}
}

vec.setValueCount(numValsToRead);
return VectorHolder.vectorHolder(vec, MetadataColumns.LAST_UPDATED_SEQUENCE_NUMBER, nulls);
lastUpdatedSequenceNumbers.setValueCount(numValsToRead);
return VectorHolder.vectorHolder(
lastUpdatedSequenceNumbers, MetadataColumns.LAST_UPDATED_SEQUENCE_NUMBER, nulls);
} finally {
if (seqNumbers != null) {
seqNumbers.close();
}
}
}

@Override
Expand Down