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/15 17:30:00 UTC

[jira] [Resolved] (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 resolved AVRO-3263.
-------------------------------
    Resolution: Fixed

Cherry-picked to [branch-1.11|https://github.com/apache/avro/commit/bdded91429839b7aa4be6becc14102382e84a010]

Thanks for the contribution!

> 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
>            Assignee: Miguel
>            Priority: Minor
>              Labels: pull-request-available
>             Fix For: 1.11.1
>
>   Original Estimate: 2h
>          Time Spent: 0.5h
>  Remaining Estimate: 1.5h
>
> 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)