You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2018/06/18 16:54:00 UTC

[jira] [Commented] (AVRO-2078) Avro does not enforce schema resolution rules for Decimal type

    [ https://issues.apache.org/jira/browse/AVRO-2078?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16516008#comment-16516008 ] 

ASF GitHub Bot commented on AVRO-2078:
--------------------------------------

big-andy-coates commented on issue #247: AVRO-2078: Avro does not enforce schema resolution rules for Decimal …
URL: https://github.com/apache/avro/pull/247#issuecomment-398122015
 
 
   @cutting @nandorKollar any chance of getting this merged?

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


> Avro does not enforce schema resolution rules for Decimal type
> --------------------------------------------------------------
>
>                 Key: AVRO-2078
>                 URL: https://issues.apache.org/jira/browse/AVRO-2078
>             Project: Avro
>          Issue Type: Bug
>    Affects Versions: 1.8.2
>            Reporter: Anthony Hsu
>            Assignee: Nandor Kollar
>            Priority: Major
>         Attachments: dec.avro
>
>
> According to http://avro.apache.org/docs/1.8.2/spec.html#Decimal
> bq. For the purposes of schema resolution, two schemas that are {{decimal}} logical types _match_ if their scales and precisions match.
> This is not enforced.
> I wrote a file with (precision 5, scale 2) and tried to read it with a reader schema with (precision 3, scale 1). I expected an AvroTypeException to be thrown, but none was thrown.
> Test data file attached. The code to read it is:
> {noformat:title=ReadDecimal.java}
> import java.io.File;
> import org.apache.avro.Schema;
> import org.apache.avro.file.DataFileReader;
> import org.apache.avro.generic.GenericDatumReader;
> import org.apache.avro.generic.GenericRecord;
> import org.apache.avro.io.DatumReader;
> public class ReadDecimal {
>   public static void main(String[] args) throws Exception {
>     Schema schema = new Schema.Parser().parse("{\n" + "  \"type\" : \"record\",\n" + "  \"name\" : \"some_schema\",\n"
>         + "  \"namespace\" : \"com.howdy\",\n" + "  \"fields\" : [ {\n" + "    \"name\" : \"name\",\n"
>         + "    \"type\" : \"string\"\n" + "  }, {\n" + "    \"name\" : \"value\",\n" + "    \"type\" : {\n"
>         + "      \"type\" : \"bytes\",\n" + "      \"logicalType\" : \"decimal\",\n" + "      \"precision\" : 3,\n"
>         + "      \"scale\" : 1\n" + "    }\n" + "  } ]\n" + "}");
>     DatumReader<GenericRecord> datumReader = new GenericDatumReader<>(schema);
>     // dec.avro has precision 5, scale 2
>     DataFileReader<GenericRecord> dataFileReader = new DataFileReader<>(
>         new File("/tmp/dec.avro"), datumReader);
>     GenericRecord foo = null;
>     while (dataFileReader.hasNext()) {
>       foo = dataFileReader.next(foo);  // AvroTypeException expected due to change in scale/precision but none occurs
>     }
>   }
> }
> {noformat}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)