std::pair<std::string_view,int8_t> FlatArray::GetValueBytes(int64_t index)

.second being -1 in every case other than a boolean ... in that case it
indicates the bit of importance in the single-byte string_view?

Just an idea.

On Wed, Nov 30, 2022 at 11:46 PM Micah Kornfield <emkornfi...@gmail.com>
wrote:

> Yeah, another base class doesn't seem great.  One option would be to use a
> union type like variant, but that seems also not particularly great?
>
>
>
> On Thu, Nov 17, 2022 at 1:15 AM Antoine Pitrou <anto...@python.org> wrote:
>
> >
> > Uh, you're right.  We may want another base class, not sure how it
> > should be named though (also, we may want to be careful with multiple
> > inheritance?).
> >
> > Regards
> >
> > Antoine.
> >
> >
> > Le 17/11/2022 à 06:15, Micah Kornfield a écrit :
> > >>
> > >> std::string_view FlatArray::GetValueBytes(int64_t index)
> > >
> > >
> > > I think this would be problematic for Boolean?
> > >
> > > On Tue, Nov 15, 2022 at 11:01 AM John Muehlhausen <j...@jgm.org> wrote:
> > >
> > >> If that covers primitive and binary(string) types, that would work for
> > me.
> > >>
> > >> On Tue, Nov 15, 2022 at 13:50 Antoine Pitrou <anto...@python.org>
> > wrote:
> > >>
> > >>>
> > >>> 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
> > >>>>>>>
> > >>>>>
> > >>>>>
> > >>>>
> > >>>
> > >>
> > >
> >
>

Reply via email to