[
https://issues.apache.org/jira/browse/CALCITE-4979?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17473191#comment-17473191
]
Julian Bright edited comment on CALCITE-4979 at 1/11/22, 10:19 PM:
-------------------------------------------------------------------
Thanks, I've added the code block so it should be readable, yes I've added
PREDICT as keyword, and am using SqlKind.Other for now (although potentially it
could be useful to have a new SqlKind.Predict in future to include the GIVEN
keyword too).
Note, the method signature has no inputs, so it would potentially also need to
be included in the statementParserMethods section, unless you were to go ahead
and create these methods as a result of their inclusion in the
selectStatementParserMethods list.
was (Author: JIRAUSER283318):
Thanks, I've added the code block so it should be readable, yes I've added
PREDICT as keyword, and am using SqlKind.Other for now (although potentially it
could be useful to have a new SqlKind.Predict in future to include the GIVEN
keyword too)
> 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:
> {code}
> /**
> * 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; }
> }
> {code}
> I would like to add a new section `selectStatementParserMethods` to the
> config eg:
> {code}
> # List of methods for parsing custom select statements.
> # Return type of method implementation should be 'SqlNode'.
> # Example: SqlSelect()
> selectStatementParserMethods: [
> ]
> {code}
> 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)