You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@drill.apache.org by "Volodymyr Vysotskyi (JIRA)" <ji...@apache.org> on 2018/01/12 13:06:01 UTC

[jira] [Resolved] (DRILL-5690) RepeatedDecimal18Vector does not pass scale, precision to data vector

     [ 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)