[ 
https://issues.apache.org/jira/browse/AVRO-1848?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ryan Blue updated AVRO-1848:
----------------------------
    Assignee: Brian McKelvey

> Can't use null or false defaults in Ruby
> ----------------------------------------
>
>                 Key: AVRO-1848
>                 URL: https://issues.apache.org/jira/browse/AVRO-1848
>             Project: Avro
>          Issue Type: Bug
>          Components: ruby
>    Affects Versions: 1.8.0
>         Environment: Any
>            Reporter: Brian McKelvey
>            Assignee: Brian McKelvey
>            Priority: Critical
>              Labels: easyfix
>             Fix For: 1.8.2
>
>   Original Estimate: 2h
>  Remaining Estimate: 2h
>
> When calling {{to_avro}} on an {{Avro::Schema::Field}} instance (part of 
> calling {{to_avro}} on an instance of {{Avro::Schema::RecordSchema}}), it 
> will not include the default value definition if the default value is falsey.
> The offending code is:
> {code:ruby}
>       def to_avro(names=Set.new)
>         {'name' => name, 'type' => type.to_avro(names)}.tap do |avro|
>           avro['default'] = default if default
>           avro['order'] = order if order
>         end
>       end
> {code}
> Using the {{if default}} conditional predicate here is inappropriate, as is 
> relying on {{nil}} values to represent no default, because {{null}} in JSON 
> maps to {{nil}} in Ruby.
> This is a critical show-stopper to using AvroTurf with the Confluent Schema 
> Registry because it is quietly uploading incorrect schemas, causing 
> downstream readers to behave incorrectly and also causing the schema registry 
> to reject new schema versions as incompatible when they are actually just 
> fine if the falsey default values are included when submitting the schema to 
> the registry.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to