Logically, your operator simply has three arguments. How the call with those arguments is converted back into SQL - whether it generates a comma or a space between arguments 1 and 2 - is a matter of syntax. It looks like your operator is unparsing calls using the default operator syntax, which uses commas, and you should override how it unparses itself.
> On Jan 29, 2022, at 1:28 AM, Zhe Hu <[email protected]> wrote: > > Hi, community. > > > I have one small question about how to create a SqlBasicCall in Parser.jj > correctly. > Take TimestampAddFunctionCall as an example, we create it by: > SqlStdOperatorTable.TIMESTAMP_ADD.createCall(s.end(this), args) > As a result, call like “TIMESTAMPADD(arg0, arg1, arg2)” will be formed. > > > Here is my question: > How does the SqlParser assemble the operands with COMMA correctly? > Since the result is not “TIMESTAMPADD(arg0 arg1, arg2)”, which loses the > former COMMA; or “TIMESTAMPADD(arg0 arg1, arg2)”、“TIMESTAMPADD(arg0 arg1 > arg2)”. > > > I’ve noticed that SqlParserPos is involved, but I’m not sure if it’s relevant. > > > Any feedback would be awesome. > > > Best, > ZheHu
