Drill used to expose both scalar and aggregate functions correctly to
Optiq.  I'm confused on why it no longer does.

See here:
https://github.com/apache/incubator-drill/blob/master/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/DrillFunctionRegistry.java#L79

Yash, can you debug Optiq to see why this isn't already working?

J

On Mon, Sep 22, 2014 at 8:19 AM, Jinfeng Ni <[email protected]> wrote:

> There are some differences between Drill simple functions and aggregate
> functions.
>
> For Drill simple function, optiq will check Drill function registry whether
> a function exists. So, all you need to is to provide the function template,
> the function converter will automatically add the  function template into
> function registry.
>
> Aggregate functions are different in that simple function could appear
> anywhere in the query, while aggregate function could be only in certain
> clause ( no aggregation function in where clause, etc).  Optiq have to know
> one certain function is aggregate function, in order to validate such
> logic.  Seems we either need modify optiq to let it know new function
> "regr_avgx"
> is an aggregate, or Drill need provide a way to let optiq know "regr_avgx"
> is aggregate function, not simple function.
>
>
>
> On Mon, Sep 22, 2014 at 7:42 AM, Jason Altekruse <[email protected]
> >
> wrote:
>
> > Hi Yash,
> >
> > I did not work on the code for this, but if the functions are just acting
> > on columns to provide aggregates I believe they are just supported by
> > Drills default mechanism for tying into the parser. We ended up modifying
> > the parser with some FreeMarker hooks that allows for consumers of optiq
> to
> > provide custom syntax that extends the parser without forking the whole
> > thing.
> >
> > I believe that this works together with our function registry to provide
> > default support for UDFs (which our system functions are defined in the
> > same way as UDFs) without having to modify the parser itself. I haven't
> had
> > any trouble just adding new DrillFuncs and having them be discovered by
> > Drill and work after a new build. I believe I have only written scalar
> > functions and not aggregations, but you can look at the SumFunctions
> class
> > for some reference on the differences.
> >
> > -Jason
> >
> > On Mon, Sep 22, 2014 at 7:50 AM, Yash Sharma <[email protected]> wrote:
> >
> > > Hi All,
> > > I am planning to add new drill functions to optiq syntax for parsing.
> > > We have new functions like regr_avgx/regr_avgy etc and existing ones
> like
> > > covar_samp,covar_pop, correlation/corr etc.
> > >
> > > Going through this old thread[1] I see that we need to add the
> > definitions
> > > in the CombinedParser.jj[2] in Optiq.
> > >
> > > Is that the way we still use or its handled differently now ?
> > >
> > > Thanks.
> > >
> > > 1: https://groups.google.com/forum/#!topic/optiq-dev/dkkxsHh2MnE
> > > 2.
> > >
> > >
> >
> https://github.com/yssharma/optiq/blob/retired/core/src/main/codegen/templates/CombinedParser.jj
> > >
> >
>

Reply via email to