You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by "mknaw (Jira)" <ji...@apache.org> on 2024/04/06 13:45:00 UTC

[jira] [Created] (AVRO-3974) [Rust] incorrect compatibility checks with ref fields

mknaw created AVRO-3974:
---------------------------

             Summary: [Rust] incorrect compatibility checks with ref fields
                 Key: AVRO-3974
                 URL: https://issues.apache.org/jira/browse/AVRO-3974
             Project: Apache Avro
          Issue Type: Bug
          Components: rust
            Reporter: mknaw


A schema with a logicalType uuid field is incompatible with itself, per `SchemaCompatibility`:

 
{code:java}
use apache_avro::{Schema, schema_compatibility::SchemaCompatibility};

fn main() {     
    let schema_str = r#"\{"type": "string", "logicalType": "uuid"}"#;
    let writers_schema = Schema::parse_str(schema_str).unwrap();
    let readers_schema = Schema::parse_str(schema_str).unwrap();
    if let Err(err) = SchemaCompatibility::can_read(&writers_schema, &readers_schema) {
        eprintln!("Error: {}", err);
    }
}
{code}
 

this is the behavior on `main` as of writing (`876eae32`) and on the latest version on crates.rs (`v0.16.0`)

I have a proposed fix here: [https://github.com/apache/avro/compare/main...mknaw:avro:logical-type-compat-fix]

Perhaps there are other valid logicalTypes with this behavior. I have not checked every logicalType yet.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)