You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@avro.apache.org by "Martin Tzvetanov Grigorov (Jira)" <ji...@apache.org> on 2023/11/02 12:39:00 UTC
[jira] [Resolved] (AVRO-3898) [rust] compatibility fails with different namespaces
[ https://issues.apache.org/jira/browse/AVRO-3898?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Martin Tzvetanov Grigorov resolved AVRO-3898.
---------------------------------------------
Fix Version/s: 1.12.0
1.11.4
Assignee: Martin Tzvetanov Grigorov
Resolution: Fixed
> [rust] compatibility fails with different namespaces
> ----------------------------------------------------
>
> Key: AVRO-3898
> URL: https://issues.apache.org/jira/browse/AVRO-3898
> Project: Apache Avro
> Issue Type: Bug
> Components: rust
> Affects Versions: 1.11.3
> Reporter: Santiago Fraire Willemoes
> Assignee: Martin Tzvetanov Grigorov
> Priority: Minor
> Labels: pull-request-available, rust
> Fix For: 1.12.0, 1.11.4
>
> Time Spent: 20m
> Remaining Estimate: 0h
>
> *Current behavior*
> SchemaCompatibility does not work properly when `namespace` is present.
> The following schemas are `FORWARD` compatible.
> {code}
> use avro_rs::{Schema, schema_compatibility::SchemaCompatibility};
> let schema_1 = Schema::parse_str(r#"{
> "type": "record",
> "name": "Statistics",
> "fields": [
> { "name": "succes", "type": "int" },
> { "name": "fail", "type": "int" },
> { "name": "time", "type": "string" },
> { "name": "max", "type": "int", "default": 0 }
> ]
> }#").unwrap();
> let schema_2 = Schema::parse_str(r#"{
> "type": "record",
> "name": "Statistics",
> "fields": [
> { "name": "succes", "type": "int" },
> { "name": "fail", "type": "int" },
> { "name": "time", "type": "string" },
> { "name": "average", "type": "int"}
> ]
> }#").unwrap();
> {code}
> When using `SchemaCompatibility::can_read(...)` the result is `true`:
> {code}
> assert_eq!(true, SchemaCompatibility::can_read(&schema_1, &schema_2););
> {code}
> *However*, when the `namespace` is added then the result is `false`
> {code}
> let schema_3 = Schema::parse_str(r#"{
> "type": "record",
> "name": "Statistics",
> "namespace": "my.namespace"
> "fields": [
> { "name": "succes", "type": "int" },
> { "name": "fail", "type": "int" },
> { "name": "time", "type": "string" },
> { "name": "max", "type": "int", "default": 0 }
> ]
> }#").unwrap();
> assert_eq!(false, SchemaCompatibility::can_read(&schema_3, &schema_2););
> {code}
> *Desired behavior*
> Namespace should not affect compatibility
> *Notes*
> - My team is going to provide a PR soon to fix it
--
This message was sent by Atlassian Jira
(v8.20.10#820010)