HuwCampbell opened a new pull request, #3046:
URL: https://github.com/apache/avro/pull/3046
## What is the purpose of the change
Default values have no special purpose for maps and arrays, and are only
valid for record fields and enums.
Having it in the examples is confusing, as people might have expectations
around it behaving in a certain way.
In the Java and Rust implementation, a default value listed here
will be packed into the custom props and attributes payloads, and
do not need to be of the same type; i.e., `default: "no default"` would
be valid.
Other implementations just ignore it and won't round trip it, for example:
```js
MapType.prototype.toJSON = function () {
return {type: 'map', values: this._values};
};
```
## Verifying this change
I wrote a small test in rust to validate my understanding; unfortunately
using an assertion on Map would be confusing as the instance
for `Eq` for `MapSchema` ignores the `attributes` field.
```rust
#[test]
fn avro_test_map_default() -> TestResult {
// string uuid, represents as native logical type.
let schema = json!(
{
"type": "map",
"values": "long",
"default": "4"
});
let parse_result = Schema::parse(&schema)?;
assert_eq!(parse_result, Schema::Uuid);
Ok(())
}
```
Resulting in:
```
assertion `left == right` failed
left: Map(MapSchema { types: Long, attributes: {"default": String("4")} })
```
For Java I just read the code.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]