Paul Rogers created DRILL-5709:
----------------------------------

             Summary: Provide a value vector method to convert a vector to 
nullable
                 Key: DRILL-5709
                 URL: https://issues.apache.org/jira/browse/DRILL-5709
             Project: Apache Drill
          Issue Type: Improvement
            Reporter: Paul Rogers
            Assignee: Paul Rogers
             Fix For: 1.12.0


The hash agg spill work has need to convert a non-null scalar vector to the 
nullable equivalent. For efficiency, the code wishes to simply transfer the 
underlying data buffer(s), and create the required "bits" vector, rather than 
generating code that does the transfer row-by-row.

The solution is to add a {{toNullable(ValueVector nullableVector)}} method to 
the {{ValueVector}} class, then implement it where needed.

Since the target code only works with scalars (that is, no arrays, no maps, no 
lists), the code only handles these cases, throwing an 
{{UnsupportedOperationException}} in other cases.

Usage:

{code}
ValueVector nonNullableVector = // your non-nullable vector
MajorType type = MajorType.newBuilder(nonNullableVector.getType)
    .setMode(DataMode.OPTIONAL)
    .build();
MaterializedField field = MaterializedField.create(name, type);
ValueVector nullableVector = TypeHelper.getNewVector(field, 
oContext.getAllocator());
nonNullableVector.toNullable(nullableVector);
// Data is now in nullableVector
{code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to