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
2 changes: 2 additions & 0 deletions src/main/java/net/sf/jsqlparser/parser/feature/Feature.java
Original file line number Diff line number Diff line change
Expand Up @@ -580,6 +580,8 @@ public enum Feature {
*/
createSequence,
/** Publication and subscription definitions. */
createForeignDataWrapper, alterForeignDataWrapper, createServer, alterServer, createUserMapping, alterUserMapping,

createPublication, alterPublication, createSubscription, alterSubscription,
/**
* Structured type, domain and extension statements.
Expand Down
54 changes: 54 additions & 0 deletions src/main/java/net/sf/jsqlparser/statement/StatementVisitor.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,12 @@
*/
package net.sf.jsqlparser.statement;

import net.sf.jsqlparser.statement.create.fdw.CreateForeignDataWrapper;
import net.sf.jsqlparser.statement.alter.AlterForeignDataWrapper;
import net.sf.jsqlparser.statement.create.server.CreateServer;
import net.sf.jsqlparser.statement.alter.AlterServer;
import net.sf.jsqlparser.statement.create.usermapping.CreateUserMapping;
import net.sf.jsqlparser.statement.alter.AlterUserMapping;
import net.sf.jsqlparser.statement.alter.AlterPolicy;
import net.sf.jsqlparser.statement.drop.DropPolicy;
import net.sf.jsqlparser.statement.create.statistics.CreateStatistics;
Expand Down Expand Up @@ -733,4 +739,52 @@ default <S> T visit(AlterStatistics statement, S context) {
default void visit(AlterStatistics statement) {
visit(statement, null);
}

default <S> T visit(CreateForeignDataWrapper statement, S context) {
return null;
}

default void visit(CreateForeignDataWrapper statement) {
visit(statement, null);
}

default <S> T visit(AlterForeignDataWrapper statement, S context) {
return null;
}

default void visit(AlterForeignDataWrapper statement) {
visit(statement, null);
}

default <S> T visit(CreateServer statement, S context) {
return null;
}

default void visit(CreateServer statement) {
visit(statement, null);
}

default <S> T visit(AlterServer statement, S context) {
return null;
}

default void visit(AlterServer statement) {
visit(statement, null);
}

default <S> T visit(CreateUserMapping statement, S context) {
return null;
}

default void visit(CreateUserMapping statement) {
visit(statement, null);
}

default <S> T visit(AlterUserMapping statement, S context) {
return null;
}

default void visit(AlterUserMapping statement) {
visit(statement, null);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
/*-
* #%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.alter;

import java.util.function.Consumer;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.statement.StatementVisitor;
import net.sf.jsqlparser.statement.foreign.ForeignDataStatement;
import net.sf.jsqlparser.statement.create.fdw.ForeignDataWrapperFunctions;

public class AlterForeignDataWrapper extends ForeignDataStatement {
public enum Action {
OPTIONS, OWNER, RENAME
}

private String name;
private Action action = Action.OPTIONS;
private String newName;
private String owner;
private ForeignDataWrapperFunctions functions = new ForeignDataWrapperFunctions();

public String getName() {
return name;
}

public void setName(String value) {
name = value;
}

public Action getAction() {
return action;
}

public void setAction(Action value) {
action = value;
}

public String getNewName() {
return newName;
}

public void setNewName(String value) {
newName = value;
}

public String getOwner() {
return owner;
}

public void setOwner(String value) {
owner = value;
}

public ForeignDataWrapperFunctions getFunctions() {
return functions;
}

public void setFunctions(ForeignDataWrapperFunctions value) {
functions = value;
}

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

@Override
public StringBuilder appendTo(StringBuilder sql, Consumer<Expression> printer) {
sql.append("ALTER FOREIGN DATA WRAPPER ").append(name);
switch (action) {
case RENAME:
sql.append(" RENAME TO ").append(newName);
break;
case OWNER:
sql.append(" OWNER TO ").append(owner);
break;
case OPTIONS:
functions.appendTo(sql);
appendOptionsTo(sql, printer);
break;
default:
throw new IllegalStateException("Unknown foreign-data wrapper action: " + action);
}
return sql;
}

@Override
public void visitExpressions(Consumer<Expression> visitor) {
if (action == Action.OPTIONS) {
super.visitExpressions(visitor);
}
}
}
104 changes: 104 additions & 0 deletions src/main/java/net/sf/jsqlparser/statement/alter/AlterServer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
/*-
* #%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.alter;

import java.util.function.Consumer;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.statement.StatementVisitor;
import net.sf.jsqlparser.statement.foreign.ForeignDataStatement;

public class AlterServer extends ForeignDataStatement {
public enum Action {
OPTIONS, OWNER, RENAME
}

private String name;
private Action action = Action.OPTIONS;
private String newName;
private String owner;
private Expression version;

public String getName() {
return name;
}

public void setName(String value) {
name = value;
}

public Action getAction() {
return action;
}

public void setAction(Action value) {
action = value;
}

public String getNewName() {
return newName;
}

public void setNewName(String value) {
newName = value;
}

public String getOwner() {
return owner;
}

public void setOwner(String value) {
owner = value;
}

public Expression getVersion() {
return version;
}

public void setVersion(Expression value) {
version = value;
}

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

@Override
public StringBuilder appendTo(StringBuilder sql, Consumer<Expression> printer) {
sql.append("ALTER SERVER ").append(name);
switch (action) {
case RENAME:
sql.append(" RENAME TO ").append(newName);
break;
case OWNER:
sql.append(" OWNER TO ").append(owner);
break;
case OPTIONS:
if (version != null) {
sql.append(" VERSION ");
printer.accept(version);
}
appendOptionsTo(sql, printer);
break;
default:
throw new IllegalStateException("Unknown server action: " + action);
}
return sql;
}

@Override
public void visitExpressions(Consumer<Expression> visitor) {
if (action != Action.OPTIONS) {
return;
}
super.visitExpressions(visitor);
visit(version, visitor);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
/*-
* #%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.alter;

import java.util.function.Consumer;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.statement.StatementVisitor;
import net.sf.jsqlparser.statement.foreign.ForeignDataStatement;

public class AlterUserMapping extends ForeignDataStatement {
private String user;
private String server;

public String getUser() {
return user;
}

public void setUser(String value) {
user = value;
}

public String getServer() {
return server;
}

public void setServer(String value) {
server = value;
}

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

@Override
public StringBuilder appendTo(StringBuilder sql, Consumer<Expression> printer) {
sql.append("ALTER USER MAPPING FOR ").append(user).append(" SERVER ").append(server);
appendOptionsTo(sql, printer);
return sql;
}
}
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.fdw;

import java.util.function.Consumer;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.statement.StatementVisitor;
import net.sf.jsqlparser.statement.foreign.ForeignDataStatement;

public class CreateForeignDataWrapper extends ForeignDataStatement {
private String name;
private ForeignDataWrapperFunctions functions = new ForeignDataWrapperFunctions();

public String getName() {
return name;
}

public void setName(String value) {
name = value;
}

public ForeignDataWrapperFunctions getFunctions() {
return functions;
}

public void setFunctions(ForeignDataWrapperFunctions value) {
functions = value;
}

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

@Override
public StringBuilder appendTo(StringBuilder sql, Consumer<Expression> printer) {
sql.append("CREATE FOREIGN DATA WRAPPER ").append(name);
functions.appendTo(sql);
appendOptionsTo(sql, printer);
return sql;
}
}
Loading
Loading