Miguel created AVRO-3263:
----------------------------
Summary: Perl Encoder: schema validation of union of records warns
when passing over an invalid schema with a long field
Key: AVRO-3263
URL: https://issues.apache.org/jira/browse/AVRO-3263
Project: Apache Avro
Issue Type: Bug
Components: perl
Reporter: Miguel
When searching for a valid schema to encode a field that is a union of records,
the Perl encoder warns if the payload doesn't contain a _long_ field required
in one of the records' schemas.
Example. The following snippet:
{code:perl}
my $schema = Avro::Schema->parse(<<EOJ);
[
{
"type": "record",
"name": "rectangle",
"fields": [{ "name": "width", "type": "long" }, { "name": "height",
"type": "long"}]
},
{
"type": "record",
"name": "square",
"fields": [{ "name": "dim", "type": "long" }]
}
]
EOJ
my $enc = '';
Avro::BinaryEncoder->encode(
schema => $schema,
data => { dim => 10 },
emit_cb => sub {
$enc .= ${ $_[0] }
},
);
{code}
Throws the following warnings:
{code:java}
Use of uninitialized value $data in pack at
...avro/lang/perl/lib/Avro/Schema.pm line 287.
Use of uninitialized value $data in string eq at
...avro/lang/perl/lib/Avro/Schema.pm line 289.
{code}
The same doesn't happen if _width_ and _height_ are _int_'s.
This behavior unnecessarily pollutes the logs and can even cause failures in
the cases where the encoder is called from a context that doesn't allow
warnings.
--
This message was sent by Atlassian Jira
(v8.20.1#820001)