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