Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/main/java/module-info.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
exports net.sf.jsqlparser.statement.alter.sequence;
exports net.sf.jsqlparser.statement.analyze;
exports net.sf.jsqlparser.statement.comment;
exports net.sf.jsqlparser.statement.create.event;
exports net.sf.jsqlparser.statement.create.function;
exports net.sf.jsqlparser.statement.create.index;
exports net.sf.jsqlparser.statement.create.policy;
Expand Down
14 changes: 14 additions & 0 deletions src/main/java/net/sf/jsqlparser/statement/StatementVisitor.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
import net.sf.jsqlparser.statement.analyze.Analyze;
import net.sf.jsqlparser.statement.comment.Comment;
import net.sf.jsqlparser.statement.create.database.CreateDatabase;
import net.sf.jsqlparser.statement.create.event.AlterEvent;
import net.sf.jsqlparser.statement.create.event.CreateEvent;
import net.sf.jsqlparser.statement.create.index.CreateIndex;
import net.sf.jsqlparser.statement.create.policy.CreatePolicy;
import net.sf.jsqlparser.statement.create.schema.CreateSchema;
Expand Down Expand Up @@ -132,6 +134,12 @@ default void visit(CreateUser createUser) {
this.visit(createUser, null);
}

<S> T visit(CreateEvent createEvent, S context);

default void visit(CreateEvent createEvent) {
this.visit(createEvent, null);
}

<S> T visit(CreateTable createTable, S context);

default void visit(CreateTable createTable) {
Expand Down Expand Up @@ -162,6 +170,12 @@ default void visit(Alter alter) {
this.visit(alter, null);
}

<S> T visit(AlterEvent alterEvent, S context);

default void visit(AlterEvent alterEvent) {
this.visit(alterEvent, null);
}

<S> T visit(Statements statements, S context);

default void visit(Statements statements) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
import net.sf.jsqlparser.statement.analyze.Analyze;
import net.sf.jsqlparser.statement.comment.Comment;
import net.sf.jsqlparser.statement.create.database.CreateDatabase;
import net.sf.jsqlparser.statement.create.event.AlterEvent;
import net.sf.jsqlparser.statement.create.event.CreateEvent;
import net.sf.jsqlparser.statement.create.index.CreateIndex;
import net.sf.jsqlparser.statement.create.policy.CreatePolicy;
import net.sf.jsqlparser.statement.create.schema.CreateSchema;
Expand Down Expand Up @@ -273,6 +275,11 @@ public <S> T visit(CreateUser createUser, S context) {
return null;
}

@Override
public <S> T visit(CreateEvent createEvent, S context) {
return null;
}

@Override
public <S> T visit(CreateTable createTable, S context) {
return createTable.getTable().accept(fromItemVisitor, context);
Expand All @@ -289,6 +296,11 @@ public <S> T visit(Alter alter, S context) {
return null;
}

@Override
public <S> T visit(AlterEvent alterEvent, S context) {
return null;
}

@Override
public <S> T visit(Statements statements, S context) {
for (Statement statement : statements) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
/*-
* #%L
* JSQLParser library
* %%
* Copyright (C) 2004 - 2026 JSQLParser
* %%
* Dual licensed under GNU LGPL 2.1 or Apache License 2.0
* #L%
*/
package net.sf.jsqlparser.statement.create.event;

import net.sf.jsqlparser.schema.Table;
import net.sf.jsqlparser.statement.StatementVisitor;

/** MySQL {@code ALTER EVENT} statement. */
public class AlterEvent extends EventStatement {

private Table renameTo;

public Table getRenameTo() {
return renameTo;
}

public void setRenameTo(Table renameTo) {
this.renameTo = renameTo;
}

@Override
public <T, S> T accept(StatementVisitor<T> statementVisitor, S context) {
return statementVisitor.visit(this, context);
}

@Override
public String toString() {
StringBuilder builder = new StringBuilder("ALTER EVENT ").append(getEvent());
appendScheduleAndCompletion(builder);
if (renameTo != null) {
builder.append(" RENAME TO ").append(renameTo);
}
appendStatusAndComment(builder);
if (getBody() != null) {
builder.append(" DO ").append(getBody());
}
return builder.toString();
}

public AlterEvent withRenameTo(Table renameTo) {
setRenameTo(renameTo);
return this;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
/*-
* #%L
* JSQLParser library
* %%
* Copyright (C) 2004 - 2026 JSQLParser
* %%
* Dual licensed under GNU LGPL 2.1 or Apache License 2.0
* #L%
*/
package net.sf.jsqlparser.statement.create.event;

import net.sf.jsqlparser.statement.StatementVisitor;

/** MySQL {@code CREATE EVENT} statement. */
public class CreateEvent extends EventStatement {

private boolean ifNotExists;

public boolean isIfNotExists() {
return ifNotExists;
}

public void setIfNotExists(boolean ifNotExists) {
this.ifNotExists = ifNotExists;
}

@Override
public <T, S> T accept(StatementVisitor<T> statementVisitor, S context) {
return statementVisitor.visit(this, context);
}

@Override
public String toString() {
StringBuilder builder = new StringBuilder("CREATE EVENT ");
if (ifNotExists) {
builder.append("IF NOT EXISTS ");
}
builder.append(getEvent());
appendScheduleAndCompletion(builder);
appendStatusAndComment(builder);
builder.append(" DO ").append(getBody());
return builder.toString();
}

public CreateEvent withIfNotExists(boolean ifNotExists) {
setIfNotExists(ifNotExists);
return this;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
/*-
* #%L
* JSQLParser library
* %%
* Copyright (C) 2004 - 2026 JSQLParser
* %%
* Dual licensed under GNU LGPL 2.1 or Apache License 2.0
* #L%
*/
package net.sf.jsqlparser.statement.create.event;

import java.io.Serializable;
import net.sf.jsqlparser.expression.Expression;

/** Structured {@code ON SCHEDULE} clause of a MySQL event. */
public class EventSchedule implements Serializable {

public enum Type {
AT, EVERY
}

private Type type;
private Expression executeAt;
private Expression interval;
private String intervalUnit;
private Expression starts;
private Expression ends;

public Type getType() {
return type;
}

public void setType(Type type) {
this.type = type;
}

public Expression getExecuteAt() {
return executeAt;
}

public void setExecuteAt(Expression executeAt) {
this.executeAt = executeAt;
}

public Expression getInterval() {
return interval;
}

public void setInterval(Expression interval) {
this.interval = interval;
}

public String getIntervalUnit() {
return intervalUnit;
}

public void setIntervalUnit(String intervalUnit) {
this.intervalUnit = intervalUnit;
}

public Expression getStarts() {
return starts;
}

public void setStarts(Expression starts) {
this.starts = starts;
}

public Expression getEnds() {
return ends;
}

public void setEnds(Expression ends) {
this.ends = ends;
}

@Override
public String toString() {
StringBuilder builder = new StringBuilder();
if (type == Type.AT) {
builder.append("AT ").append(executeAt);
} else if (type == Type.EVERY) {
builder.append("EVERY ").append(interval).append(" ").append(intervalUnit);
if (starts != null) {
builder.append(" STARTS ").append(starts);
}
if (ends != null) {
builder.append(" ENDS ").append(ends);
}
}
return builder.toString();
}

public EventSchedule withType(Type type) {
setType(type);
return this;
}

public EventSchedule withExecuteAt(Expression executeAt) {
setExecuteAt(executeAt);
return this;
}

public EventSchedule withInterval(Expression interval) {
setInterval(interval);
return this;
}

public EventSchedule withIntervalUnit(String intervalUnit) {
setIntervalUnit(intervalUnit);
return this;
}

public EventSchedule withStarts(Expression starts) {
setStarts(starts);
return this;
}

public EventSchedule withEnds(Expression ends) {
setEnds(ends);
return this;
}
}
Loading
Loading