Details
-
New Feature
-
Status: Open
-
Minor
-
Resolution: Unresolved
-
1.29.0
-
None
-
None
-
- mac-arm64
Description
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. # Return type of method implementation should be 'SqlNode'. # Example: SqlSelect() selectStatementParserMethods: [ ]
Files required to be updated main codegen are:
- core/src/main/codegen/templates/Parser.jj
- core/src/main/codegen/default_config.fmpp