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