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