Actually, this specific method seems to use a byte per value as you questioned. I think it's worth adding documentation and an explicit warning if it confused me. I'll let bkietz chime in to comment on the usage.
François On Fri, Mar 22, 2019 at 10:57 AM Francois Saint-Jacques < fsaintjacq...@gmail.com> wrote: > Hello Felipe, > > it's a bit per value as per memory layout documentation. > > François > > > > On Fri, Mar 22, 2019 at 10:48 AM Felipe Aramburu <fel...@blazingdb.com> > wrote: > >> In the builder base class I see this api >> >> >> https://github.com/apache/arrow/blob/ad1697e5d25eeaff5630421f55b0120f45cf0ce1/cpp/src/arrow/array/builder_base.h#L149 >> >> // Vector append. Treat each zero byte as a nullzero. If valid_bytes >> is >> null >> // assume all of length bits are valid. >> void UnsafeAppendToBitmap(const uint8_t* valid_bytes, int64_t length) >> >> Is valid_bytes an allocation of size (int8_t) * length, using an entire >> byte to indicate validity for each element in the array or is this a null >> bitmask where in each byte in valid_bytes encodes 8 values, one per bit? >> >> If this is using a byte per value is there an approved way of using a >> builder to initialize an array using the memory layout described here >> https://arrow.apache.org/docs/memory_layout.html#null-bitmaps? >> >