Uploaded image for project: 'Calcite'
  1. Calcite
  2. CALCITE-4979

Add support for extending parser to support additional select statements

    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Open
    • Minor
    • Resolution: Unresolved
    • 1.29.0
    • None
    • extensions
    • 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

      Attachments

        Activity

          People

            Unassigned Unassigned
            brightsparc Julian Bright
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated: