[
https://issues.apache.org/jira/browse/AVRO-656?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Doug Cutting updated AVRO-656:
------------------------------
Attachment: AVRO-656.patch
Thanks for fixing the error, Scott!
This changes the specific compiler output, which causes
TestTemplatedCompilerFidelity to fail. In that case, I think the fix is to
remove that test, since it's purpose was to get us through the transition to
the templated compiler. Now we should just maintain the templated compiler.
Here's a new version of the patch that includes Scott's fix and removes
TestTemplatedCompilerFidelity.
Should I:
- commit this as-is, with back-compatible enum & fixed constructors; or
- remove the back-compatibility, forcing folks to upgrade their enum & fixed
constructor invocations
Note that, for specific and reflect, the change is only for fixed constructors,
since enums are handled automatically in those cases.
> writing unions with multiple records, fixed or enums can choose wrong branch
> -----------------------------------------------------------------------------
>
> Key: AVRO-656
> URL: https://issues.apache.org/jira/browse/AVRO-656
> Project: Avro
> Issue Type: Bug
> Components: java
> Affects Versions: 1.4.0
> Reporter: Doug Cutting
> Assignee: Doug Cutting
> Priority: Blocker
> Fix For: 1.5.0
>
> Attachments: AVRO-656.patch, AVRO-656.patch, AVRO-656.patch,
> AVRO-656.patch, AVRO-656.patch, AVRO-656.patch
>
>
> According to the specification, a union may contain multiple instances of a
> named type, provided they have different names. There are several bugs in
> the Java implementation of this when writing data:
> - for record, only the short-name of the record is checked, so the branch
> for a record of the same name in a different namespace may be used by mistake
> - for enum and fixed, the name of the record is not checked, so the first
> enum or fixed in the union will always be assumed when writing. in many
> cases this may cause the wrong data to be written, potentially corrupting
> output.
> This is not a regression. This has never been implemented correctly by Java.
> Python and Ruby never check names, but rather perform a full, recursive
> validation of content.
--
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira