Then perhaps we can define a method:
std::string_view FlatArray::GetValueBytes(int64_t index)
?
Le 15/11/2022 à 19:39, John Muehlhausen a écrit :
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