You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@drill.apache.org by "Paul Rogers (JIRA)" <ji...@apache.org> on 2017/03/20 22:31:41 UTC
[jira] [Created] (DRILL-5372) IntervalVector.getObject() returns
non-normalized Period
Paul Rogers created DRILL-5372:
----------------------------------
Summary: IntervalVector.getObject() returns non-normalized Period
Key: DRILL-5372
URL: https://issues.apache.org/jira/browse/DRILL-5372
Project: Apache Drill
Issue Type: Bug
Reporter: Paul Rogers
Priority: Minor
The Drill {{IntervalVector.Accessor}} class provides a method to return the interval as a Joda {{Period}}:
{code}
public Period getObject(int index) {
final int offsetIndex = index * 16;
final int months = data.getInt(offsetIndex);
final int days = data.getInt(offsetIndex + 4);
final int millis = data.getInt(offsetIndex + 8);
final Period p = new Period();
return p.plusMonths(months).plusDays(days).plusMillis(millis);
}
{code}
This method returns the {{Period}} in non-normalized format. That is, the months field can contain a month count greater than 12 (rather than setting the year field and month field.)
Similarly, the millisecond field contains the entire time portion, rather than setting the hour, minute, second and ms fields.
What seems to be happening is that the code uses {{Period}} as a handy way to represent the Drill type rather than effectively converting the Drill type to the Joda {{Period}} format.
The workaround is to call the {{.normalizedStandard()}} method on the returned value:
{code}
IntervalVector.Accessor accessor = ...
Period p = accessor.getObject(rowNo).normalizedStandard();
{code}
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)