drill-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Paul Rogers (JIRA)" <j...@apache.org>
Subject [jira] [Created] (DRILL-5690) RepeatedDecimal18Vector does not pass scale, precision to data vector
Date Thu, 27 Jul 2017 01:27:00 GMT
Paul Rogers created DRILL-5690:
----------------------------------

             Summary: 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.12.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)

Mime
View raw message