Stephen Revilak created AVRO-4184:
-------------------------------------

             Summary: Copying a decimal field with a default value produces a 
AvroTypeException
                 Key: AVRO-4184
                 URL: https://issues.apache.org/jira/browse/AVRO-4184
             Project: Apache Avro
          Issue Type: Bug
          Components: java
    Affects Versions: 1.12.0
            Reporter: Stephen Revilak
         Attachments: AvroDemo.java, pom.xml

I'd like to report a regression in avro-1.12.0 where copying a decimal field 
with a default value results in a AvroTypeException being thrown.

I've attached a minimal program that exhibits this behavior.  To run, download 
the files pom.xml and AvroDemo.java.  Then

{noformat}
  mkdir -p src/main/java/srevilak/test
  mv AvroDemo.java src/main/java/srevilak/test
  mvn install
  java -cp 'target/*' srevilak.test.AvroDemo
{noformat}

It should produce the following output

{noformat}
copying field implicit_zscale type:BYTES pos:0
Exception in thread "main" org.apache.avro.AvroTypeException: Invalid default 
for field implicit_zscale: "AA==" not a 
{"type":"bytes","logicalType":"decimal","precision":10}
        at org.apache.avro.Schema.validateDefault(Schema.java:1719)
        at org.apache.avro.Schema$Field.<init>(Schema.java:578)
        at org.apache.avro.Schema$Field.<init>(Schema.java:624)
        at srevilak.test.AvroDemo.main(AvroDemo.java:19)  
{noformat}

I'm calling this a regression because the behavior was not present in 
avro-1.11.4.  This can by verifed by

*  mvn clean
* changing avro.version in pom.xml to 1.11.4
* recompiling and running AvroDemo

Under 1.11.4, the output is

{noformat}
copying field implicit_zscale type:BYTES pos:0
SUCCESS
{noformat}

In 1.12.0, the parsed schema's default value is a TextNode.  Copying the 
default value results in a BinaryNode that fails validation.

I believe the regression was introduced in
https://github.com/apache/avro/commit/51851d49af3283cd31caecf6bdc7b3a4e973a5a6

Which was work done for AVRO-3876.




--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to