ProtoSchemaConverter renders invalid schema for oneof in unwrap mode
- Vorherrschende Sprache
- Java
- Sterne
- 3.1k
- Forks
- 1.6k
- Ø Merge
- 3 T. 12 Std.
- Gemergte PRs (30 T.)
- 33
Beschreibung
### Describe the bug, including details regarding any error messages, version, and platform.
When unwrap is enabled all fields of the `TestProto3.OneOfTestMessage` will be required.
```
message TestProto3.OneOfTestMessage {
required int32 first = 1;
required int32 second = 2;
}
```
https://github.com/apache/parquet-java/blob/73a4430af6c40f8eb246ad4911eb6d103c9a2abe/parquet-protobuf/src/test/resources/TestProto3.proto#L116
This will never work but tests are missing for unwrap of `TestProto3.OneOfTestMessage`
The required repetition is added here:
https://github.com/apache/parquet-java/blob/73a4430af6c40f8eb246ad4911eb6d103c9a2abe/parquet-protobuf/src/main/java/org/apache/parquet/proto/ProtoSchemaConverter.java#L278
This could be caught early by adding `withValidation(true)` here:
https://github.com/apache/parquet-java/blob/73a4430af6c40f8eb246ad4911eb6d103c9a2abe/parquet-protobuf/src/test/java/org/apache/parquet/proto/TestUtils.java#L221
If validation is disabled it will fail when trying to read one of the non-existing fields in the `oneof`.
Is there really a need for setting all primitive fields in unwrap to required?
### Component(s)
_No response_
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Rechercherichtung
Beginne in parquet-protobuf/src/main/java/org/apache/parquet/proto/ProtoSchemaConverter.java bei der Behandlung von unwrap repetition und prüfe anschließend das TestProto3.OneOfTestMessage-Fixture und seine Tests. Aktiviere die Validierung in parquet-protobuf/src/test/java/org/apache/parquet/proto/TestUtils.java und füge Testabdeckung für den unwrap mode hinzu. Als abgeschlossen gilt die Aufgabe, wenn die oneof-Konvertierung ein gültiges Schema erzeugt und der relevante read path getestet wird.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- java
- Bereich
- data
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100