apache / apache/paimon-cpp

[Bug] Nullability validation incorrectly checks children masked by null parents

Ouverte
#339 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
bug
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

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.