[ 
https://issues.apache.org/jira/browse/CALCITE-4979?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17473152#comment-17473152
 ] 

Julian Hyde commented on CALCITE-4979:
--------------------------------------

If you are able to change your syntax, that's great. It will make it easier to 
make the parser extensible. Note that in your dialect PREDICT would need to be 
a reserved word.

Can you cleanup the markup in your description? Jira doesn't use backticks; it 
uses double braces around single line code, and it uses a "code" tag before and 
after multiline code blocks.

> 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
>            Priority: Minor
>
> 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