Paul Rogers commented on DRILL-6234:

As it turns out, {{setValueCount()}} is descriptive, not proscriptive. That is, 
{{setValueCount()}} says how many items are actually in the vector, not how 
many you would like to hold. Use {{allocateNew()}} to specify the number of 
entries (and entry width) you'd like to hold.

In general, the pattern that Drill use (for better or worse) is:

* Create the vector instance
* Allocate the vector memory with {{allocateNew()}}
* Write values into the vector.
* Report the number of items written with {{setValueCount()}}.

If you get an error, it is likely because you are trying to set the value count 
to greater than the actual number of entries.

There was a known bug that setting the count to 0, when the vector was 
unallocated, lead to an error.

> VarCharVector setValueCount can throw out of memory exception
> -------------------------------------------------------------
>                 Key: DRILL-6234
>                 URL: https://issues.apache.org/jira/browse/DRILL-6234
>             Project: Apache Drill
>          Issue Type: Improvement
>            Reporter: Timothy Farkas
>            Assignee: Timothy Farkas
>            Priority: Major
> Doing the following will throw an Index out of bounds exception.
> {code}
>       final VarCharVector vector = new VarCharVector(field, allocator);
>       vector.allocateNew();
>       vector.getMutator().setValueCount(100);
> {code}
> The expected behavior is to resize the array appropriately. If an index is 
> uninitialized it can return an empty byte array.

This message was sent by Atlassian JIRA

Reply via email to