Julian Bright created CALCITE-4979:
--------------------------------------

             Summary: Add support for extending parser to support additional 
select statements
                 Key: CALCITE-4979
                 URL: https://issues.apache.org/jira/browse/CALCITE-4979
             Project: Calcite
          Issue Type: New Feature
          Components: extensions
    Affects Versions: 1.29.0
         Environment: * mac-arm64
            Reporter: Julian Bright


Calcite currently supports [extending the 
parser]([https://calcite.apache.org/docs/adapter.html#extending-the-parser)] 
with `config.fmpp` that has sections statements including alter and drop.

I require the ability to introduce a custom `SELECT` like statement which 
requires adding adding an additional clause to the LeafQuery syntax in the 
`Parser.jj` file eg:

{{/**}}
{{ * Parses a leaf in a query expression (SELECT, VALUES or TABLE).}}
{{ */}}
{{SqlNode LeafQuery(ExprContext exprContext) :}}
{{{}}
{{    SqlNode e;}}
{{}}}
{{{}}
{{    {}}
{{        // ensure a query is legal in this context}}
{{        checkQueryExpression(exprContext);}}
{{    }}}
{{    e = SqlSelect() \{ return e; }}}
{{|}}
{{<#-- Add methods to parse additional select statements here -->}}
{{<#list 
(parser.selectStatementParserMethods!default.parser.selectStatementParserMethods)
 as method>}}
{{    e = ${method} \{ return e; }}}
{{|}}
{{</#list>}}
{{    e = TableConstructor() \{ return e; }}}
{{|}}
{{    e = ExplicitTable(getPos()) \{ return e; }}}
{{}}}

I would like to add a new section `selectStatementParserMethods` to the config 
eg:

{{    # List of methods for parsing custom select statements.}}
{{    selectStatementParserMethods: [}}
{{      "SqlCustomSelect()"}}
{{    ]}}

Files required to be updated main codegen are:
 * core/src/main/codegen/templates/Parser.jj
 * core/src/main/codegen/default_config.fmpp



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to