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)