You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by "Santiago Fraire Willemoes (Jira)" <ji...@apache.org> on 2023/11/01 14:25:00 UTC

[jira] [Created] (AVRO-3898) [rust] compatibility fails with different namespaces

Santiago Fraire Willemoes created AVRO-3898:
-----------------------------------------------

             Summary: [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


*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)