Skip to content

Commit eb3e035

Browse files
Merge branch 'master' of github.com:JSQLParser/JSqlParser
2 parents 22023a4 + ff2bc8d commit eb3e035

27 files changed

Lines changed: 1762 additions & 14 deletions

src/main/java/module-info.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
exports net.sf.jsqlparser.statement.alter.sequence;
2626
exports net.sf.jsqlparser.statement.analyze;
2727
exports net.sf.jsqlparser.statement.comment;
28+
exports net.sf.jsqlparser.statement.create.event;
2829
exports net.sf.jsqlparser.statement.create.function;
2930
exports net.sf.jsqlparser.statement.create.index;
3031
exports net.sf.jsqlparser.statement.create.policy;
@@ -33,6 +34,8 @@
3334
exports net.sf.jsqlparser.statement.create.sequence;
3435
exports net.sf.jsqlparser.statement.create.synonym;
3536
exports net.sf.jsqlparser.statement.create.table;
37+
exports net.sf.jsqlparser.statement.create.trigger;
38+
exports net.sf.jsqlparser.statement.create.user;
3639
exports net.sf.jsqlparser.statement.create.view;
3740
exports net.sf.jsqlparser.statement.delete;
3841
exports net.sf.jsqlparser.statement.drop;

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

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,16 @@
1717
import net.sf.jsqlparser.statement.analyze.Analyze;
1818
import net.sf.jsqlparser.statement.comment.Comment;
1919
import net.sf.jsqlparser.statement.create.database.CreateDatabase;
20+
import net.sf.jsqlparser.statement.create.event.AlterEvent;
21+
import net.sf.jsqlparser.statement.create.event.CreateEvent;
2022
import net.sf.jsqlparser.statement.create.index.CreateIndex;
2123
import net.sf.jsqlparser.statement.create.policy.CreatePolicy;
2224
import net.sf.jsqlparser.statement.create.schema.CreateSchema;
2325
import net.sf.jsqlparser.statement.create.sequence.CreateSequence;
2426
import net.sf.jsqlparser.statement.create.synonym.CreateSynonym;
2527
import net.sf.jsqlparser.statement.create.table.CreateTable;
28+
import net.sf.jsqlparser.statement.create.trigger.CreateTrigger;
29+
import net.sf.jsqlparser.statement.create.user.CreateUser;
2630
import net.sf.jsqlparser.statement.create.view.AlterView;
2731
import net.sf.jsqlparser.statement.create.view.CreateView;
2832
import net.sf.jsqlparser.statement.delete.Delete;
@@ -125,12 +129,30 @@ default void visit(CreateDatabase createDatabase) {
125129
this.visit(createDatabase, null);
126130
}
127131

132+
<S> T visit(CreateUser createUser, S context);
133+
134+
default void visit(CreateUser createUser) {
135+
this.visit(createUser, null);
136+
}
137+
138+
<S> T visit(CreateEvent createEvent, S context);
139+
140+
default void visit(CreateEvent createEvent) {
141+
this.visit(createEvent, null);
142+
}
143+
128144
<S> T visit(CreateTable createTable, S context);
129145

130146
default void visit(CreateTable createTable) {
131147
this.visit(createTable, null);
132148
}
133149

150+
<S> T visit(CreateTrigger createTrigger, S context);
151+
152+
default void visit(CreateTrigger createTrigger) {
153+
this.visit(createTrigger, null);
154+
}
155+
134156
<S> T visit(CreateView createView, S context);
135157

136158
default void visit(CreateView createView) {
@@ -155,6 +177,12 @@ default void visit(Alter alter) {
155177
this.visit(alter, null);
156178
}
157179

180+
<S> T visit(AlterEvent alterEvent, S context);
181+
182+
default void visit(AlterEvent alterEvent) {
183+
this.visit(alterEvent, null);
184+
}
185+
158186
<S> T visit(Statements statements, S context);
159187

160188
default void visit(Statements statements) {

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

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,16 @@
2121
import net.sf.jsqlparser.statement.analyze.Analyze;
2222
import net.sf.jsqlparser.statement.comment.Comment;
2323
import net.sf.jsqlparser.statement.create.database.CreateDatabase;
24+
import net.sf.jsqlparser.statement.create.event.AlterEvent;
25+
import net.sf.jsqlparser.statement.create.event.CreateEvent;
2426
import net.sf.jsqlparser.statement.create.index.CreateIndex;
2527
import net.sf.jsqlparser.statement.create.policy.CreatePolicy;
2628
import net.sf.jsqlparser.statement.create.schema.CreateSchema;
2729
import net.sf.jsqlparser.statement.create.sequence.CreateSequence;
2830
import net.sf.jsqlparser.statement.create.synonym.CreateSynonym;
2931
import net.sf.jsqlparser.statement.create.table.CreateTable;
32+
import net.sf.jsqlparser.statement.create.trigger.CreateTrigger;
33+
import net.sf.jsqlparser.statement.create.user.CreateUser;
3034
import net.sf.jsqlparser.statement.create.view.AlterView;
3135
import net.sf.jsqlparser.statement.create.view.CreateView;
3236
import net.sf.jsqlparser.statement.delete.Delete;
@@ -322,11 +326,26 @@ public <S> T visit(CreateDatabase createDatabase, S context) {
322326
return null;
323327
}
324328

329+
@Override
330+
public <S> T visit(CreateUser createUser, S context) {
331+
return null;
332+
}
333+
334+
@Override
335+
public <S> T visit(CreateEvent createEvent, S context) {
336+
return null;
337+
}
338+
325339
@Override
326340
public <S> T visit(CreateTable createTable, S context) {
327341
return createTable.getTable().accept(fromItemVisitor, context);
328342
}
329343

344+
@Override
345+
public <S> T visit(CreateTrigger createTrigger, S context) {
346+
return null;
347+
}
348+
330349
@Override
331350
public <S> T visit(CreateView createView, S context) {
332351
return null;
@@ -338,6 +357,11 @@ public <S> T visit(Alter alter, S context) {
338357
return null;
339358
}
340359

360+
@Override
361+
public <S> T visit(AlterEvent alterEvent, S context) {
362+
return null;
363+
}
364+
341365
@Override
342366
public <S> T visit(Statements statements, S context) {
343367
for (Statement statement : statements) {
@@ -360,6 +384,9 @@ public <S> T visit(LockStatement lock, S context) {
360384

361385
@Override
362386
public <S> T visit(CreatePolicy createPolicy, S context) {
387+
fromItemVisitor.visitFromItem(createPolicy.getTable(), context);
388+
expressionVisitor.visitExpression(createPolicy.getUsingExpression(), context);
389+
expressionVisitor.visitExpression(createPolicy.getWithCheckExpression(), context);
363390

364391
return null;
365392
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
/*-
2+
* #%L
3+
* JSQLParser library
4+
* %%
5+
* Copyright (C) 2004 - 2026 JSQLParser
6+
* %%
7+
* Dual licensed under GNU LGPL 2.1 or Apache License 2.0
8+
* #L%
9+
*/
10+
package net.sf.jsqlparser.statement.create.event;
11+
12+
import net.sf.jsqlparser.schema.Table;
13+
import net.sf.jsqlparser.statement.StatementVisitor;
14+
15+
/** MySQL {@code ALTER EVENT} statement. */
16+
public class AlterEvent extends EventStatement {
17+
18+
private Table renameTo;
19+
20+
public Table getRenameTo() {
21+
return renameTo;
22+
}
23+
24+
public void setRenameTo(Table renameTo) {
25+
this.renameTo = renameTo;
26+
}
27+
28+
@Override
29+
public <T, S> T accept(StatementVisitor<T> statementVisitor, S context) {
30+
return statementVisitor.visit(this, context);
31+
}
32+
33+
@Override
34+
public String toString() {
35+
StringBuilder builder = new StringBuilder("ALTER EVENT ").append(getEvent());
36+
appendScheduleAndCompletion(builder);
37+
if (renameTo != null) {
38+
builder.append(" RENAME TO ").append(renameTo);
39+
}
40+
appendStatusAndComment(builder);
41+
if (getBody() != null) {
42+
builder.append(" DO ").append(getBody());
43+
}
44+
return builder.toString();
45+
}
46+
47+
public AlterEvent withRenameTo(Table renameTo) {
48+
setRenameTo(renameTo);
49+
return this;
50+
}
51+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/*-
2+
* #%L
3+
* JSQLParser library
4+
* %%
5+
* Copyright (C) 2004 - 2026 JSQLParser
6+
* %%
7+
* Dual licensed under GNU LGPL 2.1 or Apache License 2.0
8+
* #L%
9+
*/
10+
package net.sf.jsqlparser.statement.create.event;
11+
12+
import net.sf.jsqlparser.statement.StatementVisitor;
13+
14+
/** MySQL {@code CREATE EVENT} statement. */
15+
public class CreateEvent extends EventStatement {
16+
17+
private boolean ifNotExists;
18+
19+
public boolean isIfNotExists() {
20+
return ifNotExists;
21+
}
22+
23+
public void setIfNotExists(boolean ifNotExists) {
24+
this.ifNotExists = ifNotExists;
25+
}
26+
27+
@Override
28+
public <T, S> T accept(StatementVisitor<T> statementVisitor, S context) {
29+
return statementVisitor.visit(this, context);
30+
}
31+
32+
@Override
33+
public String toString() {
34+
StringBuilder builder = new StringBuilder("CREATE EVENT ");
35+
if (ifNotExists) {
36+
builder.append("IF NOT EXISTS ");
37+
}
38+
builder.append(getEvent());
39+
appendScheduleAndCompletion(builder);
40+
appendStatusAndComment(builder);
41+
builder.append(" DO ").append(getBody());
42+
return builder.toString();
43+
}
44+
45+
public CreateEvent withIfNotExists(boolean ifNotExists) {
46+
setIfNotExists(ifNotExists);
47+
return this;
48+
}
49+
}
Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
/*-
2+
* #%L
3+
* JSQLParser library
4+
* %%
5+
* Copyright (C) 2004 - 2026 JSQLParser
6+
* %%
7+
* Dual licensed under GNU LGPL 2.1 or Apache License 2.0
8+
* #L%
9+
*/
10+
package net.sf.jsqlparser.statement.create.event;
11+
12+
import java.io.Serializable;
13+
import net.sf.jsqlparser.expression.Expression;
14+
15+
/** Structured {@code ON SCHEDULE} clause of a MySQL event. */
16+
public class EventSchedule implements Serializable {
17+
18+
public enum Type {
19+
AT, EVERY
20+
}
21+
22+
private Type type;
23+
private Expression executeAt;
24+
private Expression interval;
25+
private String intervalUnit;
26+
private Expression starts;
27+
private Expression ends;
28+
29+
public Type getType() {
30+
return type;
31+
}
32+
33+
public void setType(Type type) {
34+
this.type = type;
35+
}
36+
37+
public Expression getExecuteAt() {
38+
return executeAt;
39+
}
40+
41+
public void setExecuteAt(Expression executeAt) {
42+
this.executeAt = executeAt;
43+
}
44+
45+
public Expression getInterval() {
46+
return interval;
47+
}
48+
49+
public void setInterval(Expression interval) {
50+
this.interval = interval;
51+
}
52+
53+
public String getIntervalUnit() {
54+
return intervalUnit;
55+
}
56+
57+
public void setIntervalUnit(String intervalUnit) {
58+
this.intervalUnit = intervalUnit;
59+
}
60+
61+
public Expression getStarts() {
62+
return starts;
63+
}
64+
65+
public void setStarts(Expression starts) {
66+
this.starts = starts;
67+
}
68+
69+
public Expression getEnds() {
70+
return ends;
71+
}
72+
73+
public void setEnds(Expression ends) {
74+
this.ends = ends;
75+
}
76+
77+
@Override
78+
public String toString() {
79+
StringBuilder builder = new StringBuilder();
80+
if (type == Type.AT) {
81+
builder.append("AT ").append(executeAt);
82+
} else if (type == Type.EVERY) {
83+
builder.append("EVERY ").append(interval).append(" ").append(intervalUnit);
84+
if (starts != null) {
85+
builder.append(" STARTS ").append(starts);
86+
}
87+
if (ends != null) {
88+
builder.append(" ENDS ").append(ends);
89+
}
90+
}
91+
return builder.toString();
92+
}
93+
94+
public EventSchedule withType(Type type) {
95+
setType(type);
96+
return this;
97+
}
98+
99+
public EventSchedule withExecuteAt(Expression executeAt) {
100+
setExecuteAt(executeAt);
101+
return this;
102+
}
103+
104+
public EventSchedule withInterval(Expression interval) {
105+
setInterval(interval);
106+
return this;
107+
}
108+
109+
public EventSchedule withIntervalUnit(String intervalUnit) {
110+
setIntervalUnit(intervalUnit);
111+
return this;
112+
}
113+
114+
public EventSchedule withStarts(Expression starts) {
115+
setStarts(starts);
116+
return this;
117+
}
118+
119+
public EventSchedule withEnds(Expression ends) {
120+
setEnds(ends);
121+
return this;
122+
}
123+
}

0 commit comments

Comments
 (0)