Skip to content

Commit 4ac5ab4

Browse files
Implement Oracle's Alter System (#1288)
1 parent c8a5d7c commit 4ac5ab4

10 files changed

Lines changed: 361 additions & 1 deletion

File tree

src/main/java/net/sf/jsqlparser/statement/StatementVisitor.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
import net.sf.jsqlparser.statement.alter.Alter;
1313
import net.sf.jsqlparser.statement.alter.AlterSession;
14+
import net.sf.jsqlparser.statement.alter.AlterSystemStatement;
1415
import net.sf.jsqlparser.statement.alter.RenameTableStatement;
1516
import net.sf.jsqlparser.statement.alter.sequence.AlterSequence;
1617
import net.sf.jsqlparser.statement.comment.Comment;
@@ -116,4 +117,6 @@ public interface StatementVisitor {
116117
void visit(RenameTableStatement renameTableStatement);
117118

118119
void visit(PurgeStatement purgeStatement);
120+
121+
void visit(AlterSystemStatement alterSystemStatement);
119122
}

src/main/java/net/sf/jsqlparser/statement/StatementVisitorAdapter.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
import net.sf.jsqlparser.statement.alter.Alter;
1313
import net.sf.jsqlparser.statement.alter.AlterSession;
14+
import net.sf.jsqlparser.statement.alter.AlterSystemStatement;
1415
import net.sf.jsqlparser.statement.alter.RenameTableStatement;
1516
import net.sf.jsqlparser.statement.alter.sequence.AlterSequence;
1617
import net.sf.jsqlparser.statement.comment.Comment;
@@ -216,6 +217,11 @@ public void visit(AlterSession alterSession) {
216217
public void visit(RenameTableStatement renameTableStatement) {
217218
}
218219

220+
@Override
219221
public void visit(PurgeStatement purgeStatement) {
220222
}
223+
224+
@Override
225+
public void visit(AlterSystemStatement alterSystemStatement) {
226+
}
221227
}
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
/*-
2+
* #%L
3+
* JSQLParser library
4+
* %%
5+
* Copyright (C) 2004 - 2021 JSQLParser
6+
* %%
7+
* Dual licensed under GNU LGPL 2.1 or Apache License 2.0
8+
* #L%
9+
*/
10+
/*
11+
* Copyright (C) 2021 JSQLParser.
12+
*
13+
* This library is free software; you can redistribute it and/or modify it under the terms of the
14+
* GNU Lesser General Public License as published by the Free Software Foundation; either version
15+
* 2.1 of the License, or (at your option) any later version.
16+
*
17+
* This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
18+
* even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19+
* Lesser General Public License for more details.
20+
*
21+
* You should have received a copy of the GNU Lesser General Public License along with this library;
22+
* if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
23+
* 02110-1301 USA
24+
*/
25+
26+
package net.sf.jsqlparser.statement.alter;
27+
28+
/**
29+
*
30+
* @author <a href="mailto:andreas@manticore-projects.com">Andreas Reichel</a>
31+
* @see <a href="https://docs.oracle.com/cd/B12037_01/server.101/b10759/statements_2013.htm">ALTER SESSION</a>
32+
*/
33+
34+
public enum AlterSystemOperation {
35+
ARCHIVE_LOG("ARCHIVE LOG")
36+
, CHECKPOINT("CHECKPOINT")
37+
, CHECK_DATAFILES("CHECK DATAFILES")
38+
, DUMP_ACTIVE_SESSION_HISTORY("DUMP ACTIVE SESSION HISTORY")
39+
, ENABLE_DISTRIBUTED_RECOVERY("ENABLE DISTRIBUTED RECOVERY")
40+
, DISABLE_DISTRIBUTED_RECOVERY("DISABLE DISTRIBUTED RECOVERY")
41+
, ENABLE_RESTRICTED_SESSION("ENABLE RESTRICTED SESSION")
42+
, DISABLE_RESTRICTED_SESSION("DISABLE RESTRICTED SESSION")
43+
, FLUSH("FLUSH")
44+
, DISCONNECT_SESSION("DISCONNECT SESSION")
45+
, KILL_SESSION("KILL SESSION")
46+
, SWITCH("SWITCH")
47+
, SUSPEND("SUSPEND")
48+
, RESUME("RESUME")
49+
, QUIESCE("QUIESCE RESTRICTED")
50+
, UNQUIESCE("UNQUIESCE")
51+
, SHUTDOWN("SHUTDOWN")
52+
, REGISTER("REGISTER")
53+
, SET("SET")
54+
, RESET("RESET");
55+
56+
private final String label;
57+
58+
AlterSystemOperation(String label) {
59+
this.label = label;
60+
}
61+
62+
@Override
63+
public String toString() {
64+
return label;
65+
}
66+
67+
68+
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
/*-
2+
* #%L
3+
* JSQLParser library
4+
* %%
5+
* Copyright (C) 2004 - 2021 JSQLParser
6+
* %%
7+
* Dual licensed under GNU LGPL 2.1 or Apache License 2.0
8+
* #L%
9+
*/
10+
package net.sf.jsqlparser.statement.alter;
11+
12+
import java.util.List;
13+
import java.util.Objects;
14+
import net.sf.jsqlparser.statement.Statement;
15+
import net.sf.jsqlparser.statement.StatementVisitor;
16+
17+
/**
18+
*
19+
* @author <a href="mailto:andreas@manticore-projects.com">Andreas Reichel</a>
20+
* @see <a href="https://docs.oracle.com/cd/B12037_01/server.101/b10759/statements_2013.htm">ALTER SESSION</a>
21+
*/
22+
23+
public class AlterSystemStatement implements Statement {
24+
private final AlterSystemOperation operation;
25+
private final List<String> parameters;
26+
27+
public AlterSystemStatement(AlterSystemOperation operation, List<String> parameters) {
28+
this.operation = Objects.requireNonNull(operation, "The ALTER SYSTEM Operation must not be Null");
29+
this.parameters = Objects.requireNonNull(parameters, "The PARAMETERS List must not be null although it can be empty.");
30+
}
31+
32+
public AlterSystemOperation getOperation() {
33+
return operation;
34+
}
35+
36+
public List<String> getParameters() {
37+
return parameters;
38+
}
39+
40+
@Override
41+
public void accept(StatementVisitor statementVisitor) {
42+
statementVisitor.visit(this);
43+
}
44+
45+
private static void appendParameters(StringBuilder builder, List<String> parameters) {
46+
for (String s: parameters) {
47+
builder.append(" ").append(s);
48+
}
49+
}
50+
51+
public StringBuilder appendTo(StringBuilder builder) {
52+
builder.append("ALTER SYSTEM ").append(operation);
53+
appendParameters(builder, parameters);
54+
return builder;
55+
}
56+
57+
@Override
58+
public String toString() {
59+
return appendTo(new StringBuilder()).toString();
60+
}
61+
62+
}

src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@
7070
import net.sf.jsqlparser.statement.*;
7171
import net.sf.jsqlparser.statement.alter.Alter;
7272
import net.sf.jsqlparser.statement.alter.AlterSession;
73+
import net.sf.jsqlparser.statement.alter.AlterSystemStatement;
7374
import net.sf.jsqlparser.statement.alter.RenameTableStatement;
7475
import net.sf.jsqlparser.statement.alter.sequence.AlterSequence;
7576
import net.sf.jsqlparser.statement.comment.Comment;
@@ -1047,4 +1048,9 @@ public void visit(PurgeStatement purgeStatement) {
10471048
((Table) purgeStatement.getObject()).accept(this);
10481049
}
10491050
}
1051+
1052+
@Override
1053+
public void visit(AlterSystemStatement alterSystemStatement) {
1054+
// no tables involved in this statement
1055+
}
10501056
}

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import net.sf.jsqlparser.statement.UseStatement;
3232
import net.sf.jsqlparser.statement.alter.Alter;
3333
import net.sf.jsqlparser.statement.alter.AlterSession;
34+
import net.sf.jsqlparser.statement.alter.AlterSystemStatement;
3435
import net.sf.jsqlparser.statement.alter.RenameTableStatement;
3536
import net.sf.jsqlparser.statement.alter.sequence.AlterSequence;
3637
import net.sf.jsqlparser.statement.comment.Comment;
@@ -361,4 +362,9 @@ public void visit(RenameTableStatement renameTableStatement) {
361362
public void visit(PurgeStatement purgeStatement) {
362363
purgeStatement.appendTo(buffer);
363364
}
365+
366+
@Override
367+
public void visit(AlterSystemStatement alterSystemStatement) {
368+
alterSystemStatement.appendTo(buffer);
369+
}
364370
}

src/main/java/net/sf/jsqlparser/util/validation/validator/StatementValidator.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import net.sf.jsqlparser.statement.UseStatement;
3030
import net.sf.jsqlparser.statement.alter.Alter;
3131
import net.sf.jsqlparser.statement.alter.AlterSession;
32+
import net.sf.jsqlparser.statement.alter.AlterSystemStatement;
3233
import net.sf.jsqlparser.statement.alter.RenameTableStatement;
3334
import net.sf.jsqlparser.statement.alter.sequence.AlterSequence;
3435
import net.sf.jsqlparser.statement.comment.Comment;
@@ -289,4 +290,9 @@ public void visit(RenameTableStatement renameTableStatement) {
289290
public void visit(PurgeStatement purgeStatement) {
290291
//TODO: not yet implemented
291292
}
293+
294+
@Override
295+
public void visit(AlterSystemStatement alterSystemStatement) {
296+
//TODO: not yet implemented
297+
}
292298
}

0 commit comments

Comments
 (0)