drill-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (DRILL-5709) Provide a value vector method to convert a vector to nullable
Date Sat, 12 Aug 2017 19:13:01 GMT

    [ https://issues.apache.org/jira/browse/DRILL-5709?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16124687#comment-16124687
] 

ASF GitHub Bot commented on DRILL-5709:
---------------------------------------

Github user paul-rogers commented on a diff in the pull request:

    https://github.com/apache/drill/pull/901#discussion_r132824835
  
    --- Diff: exec/vector/src/main/java/org/apache/drill/exec/vector/BaseValueVector.java
---
    @@ -133,5 +134,21 @@ public static boolean checkBufRefs(final ValueVector vv) {
       public BufferAllocator getAllocator() {
         return allocator;
       }
    +
    +  public static void fillBitsVector(UInt1Vector bits, int valueCount) {
    +
    +    // Create a new bits vector, all values non-null
    +
    +    bits.allocateNew(valueCount);
    +    UInt1Vector.Mutator bitsMutator = bits.getMutator();
    +    for (int i = 0; i < valueCount; i++) {
    +      bitsMutator.set(i, 1);
    +    }
    +  }
    --- End diff --
    
    Fixed.


> 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
>            Priority: Minor
>             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)

Mime
View raw message