[
https://issues.apache.org/jira/browse/AVRO-3433?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17501966#comment-17501966
]
ASF subversion and git services commented on AVRO-3433:
-------------------------------------------------------
Commit 637bd0ed70989021f1cccd6511f4451e44234eaa in avro's branch
refs/heads/avro-3433-preserve-schema-ref-in-json from Martin Tzvetanov Grigorov
[ https://gitbox.apache.org/repos/asf?p=avro.git;h=637bd0e ]
AVRO-3433: Rust: The canonical form should preserve schema references
Do not resolve Schema::Ref when printing as JSON.
The Java SDK complains that a type is redefined if it is not a Ref the
second time
Signed-off-by: Martin Tzvetanov Grigorov <[email protected]>
> Rust: The canonical form should preserve schema references
> ----------------------------------------------------------
>
> Key: AVRO-3433
> URL: https://issues.apache.org/jira/browse/AVRO-3433
> Project: Apache Avro
> Issue Type: Bug
> Components: rust
> Affects Versions: 1.12.0
> Reporter: Martin Tzvetanov Grigorov
> Assignee: Martin Tzvetanov Grigorov
> Priority: Major
>
> Reported at
> [https://github.com/flavray/avro-rs/issues/182#issuecomment-1059762821]
> =================================
> There still seems to be an issue with {{can't refine}} errors, at least in
> some non-recursive cases. Take the following example:
> {code:java}
> fn main() {
> let schema = r#"
> {
> "name": "test.test",
> "type": "record",
> "fields": [
> {
> "name": "bar",
> "type": { "name": "test.foo", "type": "record", "fields": [{
> "name": "id", "type": "long" }] }
> },
> { "name": "baz", "type": "test.foo" }
> ]
> }
> "#;
> let schema = apache_avro::schema::Schema::parse_str(&schema).unwrap();
> println!("{}", serde_json::to_string(&schema).unwrap());
> } {code}
> This prints the following (the same thing happens if the {{test.foo}}
> definition is in a separate file):
> {code:java}
> $ target/release/avro-test | jq
> {
> "type": "record",
> "name": "test.test",
> "fields": [
> {
> "name": "bar",
> "type": {
> "type": "record",
> "name": "test.foo",
> "fields": [
> {
> "name": "id",
> "type": "long"
> }
> ]
> }
> },
> {
> "name": "baz",
> "type": {
> "type": "record",
> "name": "test.foo",
> "fields": [
> {
> "name": "id",
> "type": "long"
> }
> ]
> }
> }
> ]
> } {code}
> Which will cause the Java tooling to fail with the
> {{org.apache.avro.SchemaParseException: Can't redefine: test}} error above.
--
This message was sent by Atlassian Jira
(v8.20.1#820001)