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? > > >
