drill-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Nagarajan Chinnasamy <nagarajanchinnas...@gmail.com>
Subject Re: Invoking UDF that doesn't have parameters without paranthesis
Date Tue, 27 Dec 2016 07:38:32 GMT
Code for session_id function can be viewed at:
https://github.com/apache/drill/pull/685/files#diff-017c33174625f4e64c2aba21b59aadb6

Appreciate if you can check this and tell me how I can make it work without
using parenthesis while calling.

Best Regards,
Nagu.

On Fri, Dec 23, 2016 at 12:39 PM, Nagarajan Chinnasamy <
nagarajanchinnasamy@gmail.com> wrote:

> Looks like session_id is not being treated as a *built-in* function.
> However its in the same jar as other context-based-functions. It does
> figure in the registry. Is there anything special needs to be done to get
> session_id to be treated as a built-in function -- in Drill????
>
> Best Regards,
> Nagu.
>
> On Fri, Dec 23, 2016 at 2:02 AM, Nagarajan Chinnasamy <
> nagarajanchinnasamy@gmail.com> wrote:
>
>> I have coded session_id same as other functions that work without
>> parenthesis. That means, in Drill, there has to be a way to make a function
>> to work without parenthesis (through Calcite). I researched enough and I
>> could not find the place where I can configure to make it work so.... Drill
>> Gurus have to help me here...
>>
>> Best Regards,
>> Nagu.
>>
>> On Wed, Dec 21, 2016 at 1:20 AM, Jinfeng Ni <jni@apache.org> wrote:
>>
>>> For function without parentheses, Calcite validator checks a
>>> SqlIdentifier against validator's operatorTable. If such identifier
>>> appears in the operatorTable, the SqlIdentifier is converted to a
>>> SqlCall. For your use case, you probably need add such function into
>>> operatorTable. You may follow Julian's suggestion of looking at
>>> CURRENT_DATE function.
>>>
>>> 1. https://github.com/apache/calcite/blob/master/core/src/main/
>>> java/org/apache/calcite/sql/SqlIdentifier.java#L302-L308
>>>
>>> On Tue, Dec 20, 2016 at 11:19 AM, Julian Hyde <jhyde@apache.org> wrote:
>>> > I don’t think you need to change the parser, just the validator (the
>>> changes to SqlOperator.getSyntax I described already). The parser will
>>> parse an identifier, and the validator will recognize that it is a call to
>>> a function with no arguments.
>>> >
>>> > Unless Drill has diverged further from Calcite than I imagine it has.
>>> >
>>> > Julian
>>> >
>>> >
>>> >> On Dec 20, 2016, at 10:51 AM, Sudheesh Katkam <skatkam@maprtech.com>
>>> wrote:
>>> >>
>>> >> I do not know the exact answer.
>>> >>
>>> >> Quite likely the Calcite parser needs to be changed, this blob:
>>> >>
>>> >> https://github.com/apache/calcite/blob/master/core/src/main/
>>> codegen/templates/Parser.jj#L4765 <https://github.com/apache/cal
>>> cite/blob/master/core/src/main/codegen/templates/Parser.jj#L4765>
>>> >>
>>> >> Drill extends the Calcite parser, not sure if the change can be made
>>> here:
>>> >>
>>> >> https://github.com/apache/drill/blob/master/exec/java-exec/s
>>> rc/main/codegen/includes/parserImpls.ftl <https://github.com/apache/dri
>>> ll/blob/master/exec/java-exec/src/main/codegen/includes/parserImpls.ftl>
>>> >>
>>> >> Thank you,
>>> >> Sudheesh
>>> >>
>>> >>> On Dec 19, 2016, at 3:00 PM, Nagarajan Chinnasamy <
>>> nagarajanchinnasamy@gmail.com> wrote:
>>> >>>
>>> >>> Hi Julian Hyde,
>>> >>>
>>> >>> Thanks for your response. I am looking for the Drill way of doing
it.
>>> >>>
>>> >>> In fact I have coded session_id function exactly as one of other
>>> >>> ContextFunctions of Drill. I seem to be missing something :(
>>> >>>
>>> >>>
>>> >>>
>>> >>>
>>> >>> Best Regards,
>>> >>> Nagu.
>>> >>>
>>> >>> On Mon, Dec 19, 2016 at 1:30 PM, Nagarajan Chinnasamy <
>>> >>> nagarajanchinnasamy@gmail.com> wrote:
>>> >>>
>>> >>>> Hi,
>>> >>>>
>>> >>>> Am developing a UDF called SESSION_ID as detailed in issue:
>>> >>>>
>>> >>>>   https://issues.apache.org/jira/browse/DRILL-5043
>>> >>>>
>>> >>>> It does not take any input parameters. Now, I can only invoke
it
>>> using
>>> >>>> parenthesis as in:
>>> >>>>
>>> >>>>   SELECT SESSION_ID() FROM (Values(1));
>>> >>>>
>>> >>>> I would like to know what do I need to do if I need to invoke
it
>>> without
>>> >>>> paranthesis like:
>>> >>>>
>>> >>>>   SELECT SESSION_ID FROM (Values(1));
>>> >>>>
>>> >>>> Appreciate your input.
>>> >>>>
>>> >>>> Best Regards,
>>> >>>> Nagu.
>>> >>>>
>>> >>
>>> >
>>>
>>
>>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message