[Java] ArrowRecordBatch Body Length Computation Only Accounts for Last Buffer
- Langage dominant
- Java
- Étoiles
- 94
- Forks
- 152
- Merge moyen
- 3 j 16 h
- PR mergées (30 j)
- 11
Description
### Describe the bug, including details regarding any error messages, version, and platform.
Hi Arrow Community,
I believe `ArrowRecordBatch::computeBodyLength` has an implementation bug. It does the following
```
for (int i = 0; i < buffers.size(); i++) {
ArrowBuf buffer = buffers.get(i);
ArrowBuffer layout = buffersLayout.get(i);
size = layout.getOffset() + buffer.readableBytes();
// round up size to the next multiple of 8
size = DataSizeRoundingUtil.roundUpTo8Multiple(size);
}
return size;
```
Since `size` is being assigned and not incremented at first - does this mean computeBodyLength only accounts for the last buffer ?
### Component(s)
Java
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Commencez par ArrowRecordBatch::computeBodyLength et examinez comment la disposition des buffers et les octets lisibles contribuent à la valeur renvoyée. Reproduisez le calcul avec plusieurs buffers, puis vérifiez le code Java environnant ou les tests pour connaître la sémantique attendue de la longueur du corps. C’est terminé lorsque le calcul tient compte de chaque buffer et conserve l’arrondi requis à 8 octets.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- java
- Domaine
- data-engineering
- Type d'issue
- Bug
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100