[
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)