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)