docs: protected AstNode parseMaterializedViewStatement( DdlTokenStream tokens,
                                                        AstNode parentNode ) throws ParsingException {
          assert tokens != null;
          assert parentNode != null;
  
          markStartOfStatement(tokens);
  
          /* ----------------------------------------------------------------------
              CREATE MATERIALIZED VIEW
                [ schema. ]materialized_view
                [ column_alias [, column_alias]... ]
                [ OF [ schema. ]object_type ] .................... (MORE...)
  
              EXAMPLES:
              
                  CREATE MATERIALIZED VIEW LOG ON products
                     WITH ROWID, SEQUENCE (prod_id)
                     INCLUDING NEW VALUES;
                  
                  CREATE MATERIALIZED VIEW sales_mv
                     BUILD IMMEDIATE
                     REFRESH FAST ON COMMIT
                     AS SELECT t.calendar_year, p.prod_id, 
                        SUM(s.amount_sold) AS sum_sales
                        FROM times t, products p, sales s
                        WHERE t.time_id = s.time_id AND p.prod_id = s.prod_id
                        GROUP BY t.calendar_year, p.prod_id;
          ---------------------------------------------------------------------- */
  
          boolean isLog = tokens.canConsume(STMT_CREATE_MATERIALIZED_VEIW_LOG);
  
          tokens.canConsume(STMT_CREATE_MATERIALIZED_VIEW);
  
          String name = parseName(tokens);
  
          AstNode node = null;
  
          if (isLog) {
              node = nodeFactory().node(name, parentNode, TYPE_CREATE_MATERIALIZED_VIEW_LOG_STATEMENT);
          } else {
              node = nodeFactory().node(name, parentNode, TYPE_CREATE_MATERIALIZED_VIEW_STATEMENT);
          }
  
          parseUntilTerminator(tokens);
  
          markEndOfStatement(tokens, node);
  
          return node;
      }