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?
