[ https://issues.apache.org/jira/browse/DRILL-5709?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16124397#comment-16124397 ]
ASF GitHub Bot commented on DRILL-5709: --------------------------------------- Github user Ben-Zvi commented on a diff in the pull request: https://github.com/apache/drill/pull/901#discussion_r132806694 --- 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 -- This loop may be a bit expensive; Is there a way to mark the whole bitmap with '1's "at once" ? A la "memset()". For example, keep a constant bitmap (of max length - 64K) someplace, and here just dup/copy it whole. > 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)