Skip to content

Commit b4fac4e

Browse files
committed
feat: add support for CREATE SECURE VIEW
1 parent d55586d commit b4fac4e

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

+12
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public class CreateView implements Statement {
2626
private ExpressionList<Column> columnNames = null;
2727
private boolean materialized = false;
2828
private ForceOption force = ForceOption.NONE;
29+
private boolean secure = false;
2930
private TemporaryOption temp = TemporaryOption.NONE;
3031
private AutoRefreshOption autoRefresh = AutoRefreshOption.NONE;
3132
private boolean withReadOnly = false;
@@ -88,6 +89,14 @@ public void setForce(ForceOption force) {
8889
this.force = force;
8990
}
9091

92+
public boolean isSecure() {
93+
return secure;
94+
}
95+
96+
public void setSecure(boolean secure) {
97+
this.secure = secure;
98+
}
99+
91100
public TemporaryOption getTemporary() {
92101
return temp;
93102
}
@@ -127,6 +136,9 @@ public String toString() {
127136
sql.append("OR REPLACE ");
128137
}
129138
appendForceOptionIfApplicable(sql);
139+
if (secure) {
140+
sql.append("SECURE ");
141+
}
130142

131143
if (temp != TemporaryOption.NONE) {
132144
sql.append(temp.name()).append(" ");

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

+3
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ public void deParse(CreateView createView) {
5353
default:
5454
// nothing
5555
}
56+
if (createView.isSecure()) {
57+
buffer.append("SECURE ");
58+
}
5659
if (createView.getTemporary() != TemporaryOption.NONE) {
5760
buffer.append(createView.getTemporary().name()).append(" ");
5861
}

src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt

+2
Original file line numberDiff line numberDiff line change
@@ -391,6 +391,7 @@ TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */
391391
| <K_SAMPLE: "SAMPLE">
392392
| <K_SAVEPOINT: "SAVEPOINT">
393393
| <K_SCHEMA: "SCHEMA">
394+
| <K_SECURE: "SECURE">
394395
| <K_SEED: "SEED">
395396
| <K_SELECT: ("SELECT" | "SEL")>
396397
| <K_SEMI : "SEMI">
@@ -5812,6 +5813,7 @@ CreateView CreateView(boolean isUsingOrReplace):
58125813
<K_NO> <K_FORCE> { createView.setForce(ForceOption.NO_FORCE); }
58135814
| <K_FORCE> { createView.setForce(ForceOption.FORCE); }
58145815
]
5816+
[ <K_SECURE> { createView.setSecure(true);} ]
58155817
[
58165818
<K_TEMP> { createView.setTemporary(TemporaryOption.TEMP); }
58175819
| <K_TEMPORARY> { createView.setTemporary(TemporaryOption.TEMPORARY); }

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

+5
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,11 @@ public void testCreateForceView3() throws JSQLParserException {
119119
"CREATE OR REPLACE NO FORCE VIEW view1 AS SELECT a, b FROM testtab");
120120
}
121121

122+
@Test
123+
public void testCreateSecureView() throws JSQLParserException {
124+
assertSqlCanBeParsedAndDeparsed("CREATE SECURE VIEW myview AS SELECT * FROM mytable");
125+
}
126+
122127
@Test
123128
public void testCreateVolatileView() throws JSQLParserException {
124129
assertSqlCanBeParsedAndDeparsed("CREATE VOLATILE VIEW myview AS SELECT * FROM mytable");

0 commit comments

Comments
 (0)