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 <[email protected]> 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 <[email protected]> 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/calcite/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/src/main/codegen/includes/parserImpls.ftl
>>  
>> <https://github.com/apache/drill/blob/master/exec/java-exec/src/main/codegen/includes/parserImpls.ftl>
>>
>> Thank you,
>> Sudheesh
>>
>>> On Dec 19, 2016, at 3:00 PM, Nagarajan Chinnasamy 
>>> <[email protected]> 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 <
>>> [email protected]> 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.
>>>>
>>
>

Reply via email to