You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by "Ryan Skraba (Jira)" <ji...@apache.org> on 2021/12/13 08:59:00 UTC
[jira] [Updated] (AVRO-3263) Perl Encoder: schema validation of union of records warns when passing over an invalid schema with a long field
[ https://issues.apache.org/jira/browse/AVRO-3263?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ryan Skraba updated AVRO-3263:
------------------------------
Fix Version/s: 1.11.1
> 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
> Priority: Minor
> Fix For: 1.11.1
>
> Original Estimate: 2h
> Remaining Estimate: 2h
>
> 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)