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

Brian McKelvey updated AVRO-1848:
---------------------------------
    Status: Patch Available  (was: Open)

https://github.com/apache/avro/pull/96

> 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
>            Priority: Critical
>              Labels: easyfix
>   Original Estimate: 2h
>  Remaining Estimate: 2h
>
> When calling {{to_avro}} on an {{Avro::Field}} instance (part of calling 
> {{to_avro}} on an instance of {{Avro::Schema}}), 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, as `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