[Bug] Nullability validation incorrectly checks children masked by null parents
- Langage dominant
- C++
- Étoiles
- 65
- Forks
- 25
- Merge moyen
- 2 j 12 h
- PR mergées (30 j)
- 80
Description
### Search before asking
- [x] I searched in the [issues](https://github.com/apache/paimon-cpp/issues) and found nothing similar.
### Paimon-cpp version
master
### Minimal reproduce step
`ArrowUtils::CheckNullabilityMatch` recursively checks complete Arrow child arrays.
For nested Arrow types, a null parent may still have physical child values. These
children are logically hidden and should not participate in nullability validation.
However, if a hidden child is null and its field is non-nullable, the current
implementation rejects the batch.
This affects nested STRUCT, LIST, MAP, and VECTOR fields and is inconsistent with
Java's logical row semantics.
### What doesn't meet your expectations?
Expected behavior:
- Ignore child values masked by a null parent.
- Reject null children when the parent is valid and the child is logically visible.
### Anything else?
_No response_
### Are you willing to submit a PR?
- [x] I'm willing to submit a PR!
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Commencez par localiser ArrowUtils::CheckNullabilityMatch et les tests couvrant les arrays STRUCT, LIST, MAP et VECTOR imbriqués. Vérifiez les cas où des parents null contiennent des enfants physiquement null, ainsi que les cas où des parents valides exposent des enfants null ; le travail est considéré comme terminé lorsque les enfants masqués sont ignorés, tandis que les enfants visibles non nullables sont rejetés.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- cpp
- Domaine
- data-engineering
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- Active
- Clarté
- Plutôt claire
- Accessibilité débutants
- 58/100