[
https://issues.apache.org/jira/browse/HIVE-7174?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jarek Jarcec Cecho updated HIVE-7174:
-------------------------------------
Attachment: dec.avro
> Do not accept string as scale and precision when reading Avro schema
> --------------------------------------------------------------------
>
> Key: HIVE-7174
> URL: https://issues.apache.org/jira/browse/HIVE-7174
> Project: Hive
> Issue Type: Bug
> Reporter: Jarek Jarcec Cecho
> Assignee: Jarek Jarcec Cecho
> Fix For: 0.14.0
>
> Attachments: HIVE-7174.patch, dec.avro
>
>
> I've noticed that the current AvroSerde will happily accept schema that uses
> string instead of integer for scale and precision, e.g. fragment
> {{"precision":"4","scale":"1"}} from following table:
> {code}
> CREATE TABLE `avro_dec1`(
> `name` string COMMENT 'from deserializer',
> `value` decimal(4,1) COMMENT 'from deserializer')
> COMMENT 'just drop the schema right into the HQL'
> ROW FORMAT SERDE
> 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
> STORED AS INPUTFORMAT
> 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
> OUTPUTFORMAT
> 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
> TBLPROPERTIES (
> 'numFiles'='1',
>
> 'avro.schema.literal'='{\"namespace\":\"com.howdy\",\"name\":\"some_schema\",\"type\":\"record\",\"fields\":[{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"value\",\"type\":{\"type\":\"bytes\",\"logicalType\":\"decimal\",\"precision\":\"4\",\"scale\":\"1\"}}]}'
> );
> {code}
> However the Decimal spec defined in AVRO-1402 requires only integer to be
> there and hence is allowing only following fragment instead
> {{"precision":4,"scale":1}} (e.g. no double quotes around numbers).
> As Hive can propagate this incorrect schema to new files and hence creating
> files with invalid schema, I think that we should alter the behavior and
> insist on the correct schema.
--
This message was sent by Atlassian JIRA
(v6.2#6252)