Using a repeatedholder as a @param I've got working. I was working on a
custom aggregator function using DrillAggFunc. In this I can do simple
things but If I want to build a list values and do something with it in the
final output method I think I need to use RepeatedHolders in the
@Workspace. To do that I need to create a new one in the setup method. I
can't get one built. They all require a BufferAllocator to be passed in to
build it. I have not found a way to get an allocator yet. Any suggestions?

On Sat, Jul 4, 2015 at 1:37 PM, Ted Dunning <[email protected]> wrote:

> If you look at the zip function in
> https://github.com/mapr-demos/simple-drill-functions you can have an
> example of building a structure.
>
> The basic idea is that your output is denoted as
>
>         @Output
>         BaseWriter.ComplexWriter writer;
>
> The pattern for building a list of lists of integers is like this:
>
>         writer.setValueCount(n);
>         ...
>         BaseWriter.ListWriter outer = writer.rootAsList();
>         outer.start(); // [ outer list
>         ...
>         // for each inner list
>             BaseWriter.ListWriter inner = outer.list();
>             inner.start();
>             // for each inner list element
>                 inner.integer().writeInt(accessor.get(i));
>             }
>             inner.end();   // ] inner list
>         }
>         outer.end(); // ] outer list
>
>
>
> On Sat, Jul 4, 2015 at 10:29 AM, Jim Bates <[email protected]> wrote:
>
> > I have working aggregation and simple UDFs. I've been trying to document
> > and understand each of the options available in a Drill UDF.
> Understanding
> > the different FunctionScope's, the ones that are allowed, the ones that
> are
> > not. The impact of different cost categories. The different  steps needed
> > to understand handling any of the supported data types  and structures in
> > drill.
> >
> > Here are a few of my current road blocks. Any pointers would be greatly
> > appreciated.
> >
> >
> >    1. I've been trying to understand how to correctly use RepeatedHolders
> >    of whatever type. For this discussion lets start with a
> >    RepeatedBigIntHolder. I'm trying to figure out the best way to create
> a
> > new
> >    one. I have not figured out where in the existing drill code someone
> > does
> >    this. If I use a  RepeatedBigIntHolder as a Workspace object is is
> null
> > to
> >    start with. I created a new one in the startup section of the udf but
> > the
> >    vector was null. I can find no reference in creating a new
> BigIntVector.
> >    There is a way to create a BigIntVector and I did find an example of
> >    creating a new VarCharVector but I can't do that using the drill jar
> > files
> >    from 1.0. The org.apache.drill.common.types.TypeProtos and
> >    the org.apache.drill.common.types.TypeProtos.MinorType classes do not
> >    appear to be accessible from the drill jar files.
> >    2. What is the best way to close out a UDF in the event it generates
> an
> >    exception? Are there specific steps one should follow to make a clean
> > exit
> >    in a catch block that are beneficial to Drill?
> >
>

Reply via email to