File tree Expand file tree Collapse file tree 4 files changed +22
-0
lines changed
javacc/net/sf/jsqlparser/parser
test/java/net/sf/jsqlparser/test/create Expand file tree Collapse file tree 4 files changed +22
-0
lines changed Original file line number Diff line number Diff line change @@ -37,6 +37,7 @@ public class CreateView implements Statement {
3737 private SelectBody selectBody ;
3838 private boolean orReplace = false ;
3939 private List <String > columnNames = null ;
40+ private boolean materialized = false ;
4041
4142 @ Override
4243 public void accept (StatementVisitor statementVisitor ) {
@@ -89,12 +90,23 @@ public void setColumnNames(List<String> columnNames) {
8990 this .columnNames = columnNames ;
9091 }
9192
93+ public boolean isMaterialized () {
94+ return materialized ;
95+ }
96+
97+ public void setMaterialized (boolean materialized ) {
98+ this .materialized = materialized ;
99+ }
100+
92101 @ Override
93102 public String toString () {
94103 StringBuilder sql = new StringBuilder ("CREATE " );
95104 if (isOrReplace ()) {
96105 sql .append ("OR REPLACE " );
97106 }
107+ if (isMaterialized ()) {
108+ sql .append ("MATERIALIZED " );
109+ }
98110 sql .append ("VIEW " );
99111 sql .append (view );
100112 if (columnNames != null ) {
Original file line number Diff line number Diff line change @@ -44,6 +44,9 @@ public void deParse(CreateView createView) {
4444 if (createView .isOrReplace ()) {
4545 buffer .append ("OR REPLACE " );
4646 }
47+ if (createView .isMaterialized ()) {
48+ buffer .append ("MATERIALIZED " );
49+ }
4750 buffer .append ("VIEW " ).append (createView .getView ().getWholeTableName ());
4851 if (createView .getColumnNames () != null ) {
4952 buffer .append (PlainSelect .getStringList (createView .getColumnNames (), true , true ));
Original file line number Diff line number Diff line change @@ -237,6 +237,7 @@ TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */
237237| <K_PARTITION:"PARTITION">
238238| <K_EXTRACT:"EXTRACT">
239239| <K_LATERAL:"LATERAL">
240+ | <K_MATERIALIZED:"MATERIALIZED">
240241}
241242
242243
@@ -1857,6 +1858,7 @@ CreateView CreateView():
18571858{
18581859 <K_CREATE>
18591860 [ <K_OR> <K_REPLACE> { createView.setOrReplace(true);} ]
1861+ [ <K_MATERIALIZED> { createView.setMaterialized(true);} ]
18601862 <K_VIEW> view=Table() { createView.setView(view); }
18611863 [ columnNames = ColumnsNamesList() { createView.setColumnNames(columnNames); } ]
18621864 <K_AS>
Original file line number Diff line number Diff line change @@ -64,6 +64,11 @@ public void testCreateViewUnion() throws JSQLParserException {
6464 String stmt = "CREATE VIEW view1 AS (SELECT a, b FROM testtab) UNION (SELECT b, c FROM testtab2)" ;
6565 assertSqlCanBeParsedAndDeparsed (stmt );
6666 }
67+
68+ public void testCreateMaterializedView () throws JSQLParserException {
69+ String stmt = "CREATE MATERIALIZED VIEW view1 AS SELECT a, b FROM testtab" ;
70+ assertSqlCanBeParsedAndDeparsed (stmt );
71+ }
6772
6873 private void assertSqlCanBeParsedAndDeparsed (String statement ) throws JSQLParserException {
6974 Statement parsed = parserManager .parse (new StringReader (statement ));
You can’t perform that action at this time.
0 commit comments