[ 
https://issues.apache.org/jira/browse/AVRO-3687?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17646505#comment-17646505
 ] 

Santiago Fraire Willemoes commented on AVRO-3687:
-------------------------------------------------

What makes my code IPC? I have the understanding that an avdl can be later 
transformed into an avsc (schema, not avpr) by using the idl2schemata. 
I was doing something wrong with the avro-tools, but now is transpaling to avsc 
properly, and an enum has a default in the avsc.

{code}
@namespace("com.myexample.schemas")
protocol Example {

    enum EventType {
        CREATE, UPDATE, DELETE
    } = CREATE;


    record Example {
        EventType event_type;
    }
}
{code}

Output:
{code}
{
  "type" : "record",
  "name" : "Example",
  "namespace" : "com.myexample.schemas",
  "fields" : [ {
    "name" : "event_type",
    "type" : {
      "type" : "enum",
      "name" : "EventType",
      "symbols" : [ "CREATE", "UPDATE", "DELETE" ],
      "default" : "CREATE"
    }
  } ]
}
{code}

Thanks! 

> Rust enum missing default
> -------------------------
>
>                 Key: AVRO-3687
>                 URL: https://issues.apache.org/jira/browse/AVRO-3687
>             Project: Apache Avro
>          Issue Type: Bug
>          Components: rust
>    Affects Versions: 1.11.1
>            Reporter: Santiago Fraire Willemoes
>            Priority: Major
>              Labels: enum, rust
>
> I cannot seem to find the enum's default attribute as documented [in the 
> spec|https://avro.apache.org/docs/1.11.1/specification/#enums:~:text=for%20names).-,default,-%3A%20A%20default%20value]
> I'm trying to create an avdl parser and this is a blocker for me. I was 
> wondering if there's a reason for this. Otherwise I can submit a PR, please 
> let me know, thanks.
> Code sample:
> {code}
> let schema_str = 
> r#"{"name":"Shapes","type":"enum","symbols":["SQUARE","TRIANGLE","CIRCLE","OVAL"],
>  "default": "SQUARE"}"#;
> let r = Schema::parse_str(schema_str).unwrap();
> let can = r.canonical_form();
> println!("{r:?}");
> println!("{can}");
> {code}
> Observe the enum in its canonical form is missing the default.
> Looking at the Enum's code, we cannot see a default field:
> https://github.com/apache/avro/blob/master/lang/rust/avro/src/schema.rs#L113-L119
> I apologize if this is somehow wrong



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

Reply via email to