[
https://issues.apache.org/jira/browse/CALCITE-4979?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17472369#comment-17472369
]
Julian Bright commented on CALCITE-4979:
----------------------------------------
Hi [~julianhyde], I would expect this would be *in addition* to the existing
SELECT, as I would like these to be able to work together, an example would be
the introduction of the PREDICT keyword, see example taken from [dask
sql|https://dask-sql.readthedocs.io/en/latest/pages/machine_learning.html#]
{{SELECT * FROM PREDICT ( MODEL my_model,}}
{{SELECT x, y, z FROM data}}
{{)}}
I have tested this works in with a fork, and confirm that the parser is able to
differentiate because the initial keyword is different.
Does this make sense?
> 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)