Skip to content

Commit fa5daaa

Browse files
committed
add simple materialized view parsing without additional parameters
1 parent a661593 commit fa5daaa

File tree

4 files changed

+22
-0
lines changed

4 files changed

+22
-0
lines changed

src/main/java/net/sf/jsqlparser/statement/create/view/CreateView.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff 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) {

src/main/java/net/sf/jsqlparser/util/deparser/CreateViewDeParser.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff 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));

src/main/javacc/net/sf/jsqlparser/parser/JSqlParserCC.jj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff 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>

src/test/java/net/sf/jsqlparser/test/create/CreateViewTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff 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));

0 commit comments

Comments
 (0)