hi Uwe,
For Contains, wouldn't you want to make the kernel binary so that the
"match" argument can be data-varying (e.g. it can be an Array, too)?
Aside from that, the way to pass static data to the kernel is through
an options. So you would do
struct MyArg : public FunctionOptions {
std::string value;
};
Then in the kernel implementation, you define:
using MyFuncState = OptionsWrapper<MyArg>;
and then set the kernel's init function to
kernel.init = InitWrapOptions<MyArg>;
So then your arg can be accessed wherever you have a KernelContext* with
MyArg arg = checked_cast<const MyFuncState&>(*ctx->state()).options;
This process could likely be simplified with some helper templates or macros
- Wes
On Wed, Jun 17, 2020 at 4:23 AM Uwe L. Korn <[email protected]> wrote:
>
> Hello all,
>
> I'm trying to implement a `contains` kernel that takes as an input a
> StringArray and a scalar string (see
> https://issues.apache.org/jira/browse/ARROW-9160). I feel confident with the
> rest of the new Kernels setup but I didn't find an example kernel where we
> also pass in a scalar attribute. Can someone point me to an approach on how
> to do this?
>
> Best
> Uwe