You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by "Yannick Guern (Jira)" <ji...@apache.org> on 2023/07/19 13:09:00 UTC

[jira] [Created] (AVRO-3804) Open the visibility of serde implementation

Yannick Guern created AVRO-3804:
-----------------------------------

             Summary: Open the visibility of serde implementation
                 Key: AVRO-3804
                 URL: https://issues.apache.org/jira/browse/AVRO-3804
             Project: Apache Avro
          Issue Type: Improvement
          Components: rust
            Reporter: Yannick Guern


Hi everyone :)

We at Clever Cloud are working on a storage format using the Avro specification for FoundationDB.

As we build our project in Rust, we would like to use the apache_avro crate, but some behaviors prevent us to be completely happy.

The `append_ser` method takes a Serializable data and return bytes.

But it turned out that the blob contains both the avro serialized data and the header with the complete schema avro encoded iteself.

As we are planning to store the record schema in the database, and make the record refer to it thanks to the schema fingerprint. We don't need the full Object Container File format.

Our idea, instead of rely on `append_ser`, is to use the `let avro_value = data.serialize(&mut serializer)` then get the bytes with

```
to_avro_datum(&schema, avro_value)?

```

But as the `apache_avro::ser` nor `apachec_avro::de` aren't public, I can't access from the outside of the crate to the `apacheche_avro::ser::Serializer` and `apacheche_avro::de::DDeserializer`.

We need the avro_value, because we want to walk the AST.

Can you openĀ  in `lib.rs` the serde modules ?

```rust
mod codec;
pub mod de;
// ...
pub mod ser;
mod util;
mod writer;
```

Thanks :)



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