I had a use-case where untyped access to bytes would have been sufficient, vs branching depending on array type. This is what brought the idea to mind.
On Tue, Nov 15, 2022 at 02:34 Jin Shang <shangjin1...@gmail.com> wrote: > Hi John, > > In addition to Micah’s reply, does the member method Value(int64_t > i)[1][2][3] satisfy your need? It is defined for all array types with a > primitive value representation, i.e. all primitive arrays and binary arrays. > > [1] > https://github.com/js8544/arrow/blob/master/cpp/src/arrow/array/array_primitive.h#L50 > < > https://github.com/js8544/arrow/blob/master/cpp/src/arrow/array/array_primitive.h#L50 > > > [2] > https://github.com/js8544/arrow/blob/master/cpp/src/arrow/array/array_primitive.h#L109 > < > https://github.com/js8544/arrow/blob/master/cpp/src/arrow/array/array_primitive.h#L109 > > > [3] > https://github.com/js8544/arrow/blob/master/cpp/src/arrow/array/array_binary.h#L87 > < > https://github.com/js8544/arrow/blob/master/cpp/src/arrow/array/array_binary.h#L87 > > > > > > 2022年11月15日 13:06,Micah Kornfield <emkornfi...@gmail.com> 写道: > > > > Hi John, > > > > There are a couple of edge cases that need to be discussed to move the > > function to the base array class (which IIUC is this proposal): > > 1. boolean > > 2. struct > > 3. lists/LargeList > > 4. DictionaryArray > > > > FlatArray [1] seems like a better place for this method if there is > > consensus on adding it. > > > > Cheers, > > Micah > > > > [1] > > > https://github.com/apache/arrow/blob/master/cpp/src/arrow/array/array_base.h#L219 > > > > On Mon, Nov 14, 2022 at 11:46 AM John Muehlhausen <j...@jgm.org> wrote: > > > >> There exists: > >> const uint8_t* BaseBinaryArray::GetValue(int64_t i, offset_type* > >> out_length) const > >> > >> What about adding: > >> const uint8_t* Array::GetValue(int64_t i, offset_type* out_length) const > >> > >> This would allow GetValue to get the untyped bytes/length of any value? > >> E.g. out_length would be set to sizeof(T) for arrays of primitive type > T? > >> > >> For FixedSizeBinaryArray the existing GetValue would still be a valid > >> overload. > >> > >> -John > >> > >