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

Volodymyr Vysotskyi resolved DRILL-5690.
----------------------------------------
    Resolution: Fixed

Fixed in 
https://github.com/apache/drill/commit/40de8ca4f47533fa6593d1266403868ae1a2119f

> RepeatedDecimal18Vector does not pass scale, precision to data vector
> ---------------------------------------------------------------------
>
>                 Key: DRILL-5690
>                 URL: https://issues.apache.org/jira/browse/DRILL-5690
>             Project: Apache Drill
>          Issue Type: Bug
>    Affects Versions: 1.10.0
>            Reporter: Paul Rogers
>            Assignee: Paul Rogers
>             Fix For: 1.13.0
>
>
> Decimal types require not just the type (Decimal9, Decimal18, etc.) but also 
> a precision and scale. The triple of (minor type, precision, scale) appears 
> in the {{MaterializedField}} for the nullable or required vectors.
> A repeated vector has three parts: the {{RepeatedDecimal18Vector}} which is 
> composed of a {{UInt4Vector}} offset vector and a {{Decimal18Vector}} that 
> holds values.
> When {{RepeatedDecimal18Vector}} creates the {{Decimal18Vector}} to hold the 
> values, it clones the {{MaterializedField}}. But, it *does not* clone the 
> scale and precision, resulting in the loss of critical information.
> {code}
>   public RepeatedDecimal18Vector(MaterializedField field, BufferAllocator 
> allocator) {
>     super(field, allocator);
>     
> addOrGetVector(VectorDescriptor.create(Types.required(field.getType().getMinorType())));
>   }
> {code}
> This is normally not a problem because most code access the data via the 
> repeated vector. But, for code that needs to work with the values, the 
> results are wrong given that the types are wrong. (Values stored with one 
> scale, 123.45, (scale 2) will be retrieved with 0 scale (123, say).



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to