From d3a4a1a4893d6131e1e69ebba5eef49c45a03d94 Mon Sep 17 00:00:00 2001 From: wenshao Date: Sun, 20 Aug 2017 06:04:17 +0800 Subject: [PATCH] improved WallFilter support. issue #1923 --- .../statement/SQLAlterDatabaseStatement.java | 2 +- .../sql/ast/statement/SQLAlterStatement.java | 6 +++++ .../ast/statement/SQLAlterTableStatement.java | 2 +- .../SQLAlterViewRenameStatement.java | 2 +- .../statement/SQLCreateDatabaseStatement.java | 2 +- .../statement/SQLCreateFunctionStatement.java | 2 +- .../statement/SQLCreateIndexStatement.java | 2 +- .../SQLCreateMaterializedViewStatement.java | 2 +- .../SQLCreateProcedureStatement.java | 2 +- .../statement/SQLCreateSequenceStatement.java | 2 +- .../sql/ast/statement/SQLCreateStatement.java | 6 +++++ .../statement/SQLCreateTableStatement.java | 2 +- .../statement/SQLCreateTriggerStatement.java | 2 +- .../ast/statement/SQLCreateViewStatement.java | 2 +- .../statement/SQLDropDatabaseStatement.java | 2 +- .../statement/SQLDropFunctionStatement.java | 2 +- .../ast/statement/SQLDropIndexStatement.java | 2 +- .../statement/SQLDropProcedureStatement.java | 2 +- .../statement/SQLDropSequenceStatement.java | 2 +- .../sql/ast/statement/SQLDropStatement.java | 4 ++++ .../statement/SQLDropTableSpaceStatement.java | 2 +- .../ast/statement/SQLDropTableStatement.java | 2 +- .../statement/SQLDropTriggerStatement.java | 2 +- .../ast/statement/SQLDropUserStatement.java | 2 +- .../ast/statement/SQLDropViewStatement.java | 2 +- .../statement/MySqlAlterUserStatement.java | 3 ++- .../statement/MySqlCreateUserStatement.java | 3 ++- .../odps/ast/OdpsAddStatisticStatement.java | 3 ++- .../ast/stmt/OracleAlterIndexStatement.java | 2 +- .../stmt/OracleAlterProcedureStatement.java | 2 +- .../ast/stmt/OracleAlterSessionStatement.java | 2 +- .../oracle/ast/stmt/OracleAlterStatement.java | 7 ++++++ .../ast/stmt/OracleAlterSynonymStatement.java | 2 +- .../stmt/OracleAlterTablespaceStatement.java | 2 +- .../ast/stmt/OracleAlterTriggerStatement.java | 2 +- .../ast/stmt/OracleAlterViewStatement.java | 2 +- .../OracleCreateDatabaseDbLinkStatement.java | 3 ++- .../ast/stmt/OracleCreateIndexStatement.java | 3 ++- .../stmt/OracleCreatePackageStatement.java | 3 ++- .../stmt/OracleCreateSynonymStatement.java | 3 ++- .../ast/stmt/OracleDropDbLinkStatement.java | 3 ++- .../druid/wall/spi/WallVisitorUtils.java | 22 ++++++------------- 42 files changed, 75 insertions(+), 52 deletions(-) create mode 100644 src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterStatement.java create mode 100644 src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateStatement.java create mode 100644 src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropStatement.java create mode 100644 src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleAlterStatement.java diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterDatabaseStatement.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterDatabaseStatement.java index e0808496a4..d72f660641 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterDatabaseStatement.java +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterDatabaseStatement.java @@ -19,7 +19,7 @@ import com.alibaba.druid.sql.ast.SQLName; import com.alibaba.druid.sql.ast.SQLStatementImpl; import com.alibaba.druid.sql.visitor.SQLASTVisitor; -public class SQLAlterDatabaseStatement extends SQLStatementImpl { +public class SQLAlterDatabaseStatement extends SQLStatementImpl implements SQLAlterStatement { private SQLName name; diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterStatement.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterStatement.java new file mode 100644 index 0000000000..55439a2e3e --- /dev/null +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterStatement.java @@ -0,0 +1,6 @@ +package com.alibaba.druid.sql.ast.statement; + +import com.alibaba.druid.sql.ast.SQLStatement; + +public interface SQLAlterStatement extends SQLStatement { +} diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterTableStatement.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterTableStatement.java index d633908b7d..f1b2b71824 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterTableStatement.java +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterTableStatement.java @@ -28,7 +28,7 @@ import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr; import com.alibaba.druid.sql.ast.expr.SQLPropertyExpr; import com.alibaba.druid.sql.visitor.SQLASTVisitor; -public class SQLAlterTableStatement extends SQLStatementImpl implements SQLDDLStatement { +public class SQLAlterTableStatement extends SQLStatementImpl implements SQLDDLStatement, SQLAlterStatement { private SQLExprTableSource tableSource; private List items = new ArrayList(); diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterViewRenameStatement.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterViewRenameStatement.java index 04c3228d0f..b52683f746 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterViewRenameStatement.java +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterViewRenameStatement.java @@ -19,7 +19,7 @@ import com.alibaba.druid.sql.ast.SQLName; import com.alibaba.druid.sql.ast.SQLStatementImpl; import com.alibaba.druid.sql.visitor.SQLASTVisitor; -public class SQLAlterViewRenameStatement extends SQLStatementImpl { +public class SQLAlterViewRenameStatement extends SQLStatementImpl implements SQLAlterStatement { private SQLName name; private SQLName to; diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateDatabaseStatement.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateDatabaseStatement.java index 68e6294c16..ca6a255372 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateDatabaseStatement.java +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateDatabaseStatement.java @@ -22,7 +22,7 @@ import com.alibaba.druid.sql.ast.SQLName; import com.alibaba.druid.sql.ast.SQLStatementImpl; import com.alibaba.druid.sql.visitor.SQLASTVisitor; -public class SQLCreateDatabaseStatement extends SQLStatementImpl { +public class SQLCreateDatabaseStatement extends SQLStatementImpl implements SQLCreateStatement { private SQLName name; diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateFunctionStatement.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateFunctionStatement.java index f66dccc7d2..4c2cd3b828 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateFunctionStatement.java +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateFunctionStatement.java @@ -25,7 +25,7 @@ import java.util.List; /** * Created by wenshao on 23/05/2017. */ -public class SQLCreateFunctionStatement extends SQLStatementImpl implements SQLDDLStatement { +public class SQLCreateFunctionStatement extends SQLStatementImpl implements SQLCreateStatement { private SQLName definer; private boolean create = true; diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateIndexStatement.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateIndexStatement.java index 039f2cfcf1..7362160b37 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateIndexStatement.java +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateIndexStatement.java @@ -25,7 +25,7 @@ import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr; import com.alibaba.druid.sql.ast.expr.SQLPropertyExpr; import com.alibaba.druid.sql.visitor.SQLASTVisitor; -public class SQLCreateIndexStatement extends SQLStatementImpl implements SQLDDLStatement { +public class SQLCreateIndexStatement extends SQLStatementImpl implements SQLCreateStatement { private SQLName name; diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateMaterializedViewStatement.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateMaterializedViewStatement.java index b86972f3f0..2307c721cd 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateMaterializedViewStatement.java +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateMaterializedViewStatement.java @@ -27,7 +27,7 @@ import java.util.List; /** * Created by wenshao on 30/06/2017. */ -public class SQLCreateMaterializedViewStatement extends SQLStatementImpl implements OracleSegmentAttributes { +public class SQLCreateMaterializedViewStatement extends SQLStatementImpl implements OracleSegmentAttributes, SQLCreateStatement { private SQLName name; private List columns = new ArrayList(); diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateProcedureStatement.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateProcedureStatement.java index c3e18b7f34..d48d7d592c 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateProcedureStatement.java +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateProcedureStatement.java @@ -24,7 +24,7 @@ import com.alibaba.druid.sql.ast.SQLStatement; import com.alibaba.druid.sql.ast.SQLStatementImpl; import com.alibaba.druid.sql.visitor.SQLASTVisitor; -public class SQLCreateProcedureStatement extends SQLStatementImpl { +public class SQLCreateProcedureStatement extends SQLStatementImpl implements SQLCreateStatement { private SQLName definer; diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateSequenceStatement.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateSequenceStatement.java index 7232924e5c..1f0902980f 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateSequenceStatement.java +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateSequenceStatement.java @@ -26,7 +26,7 @@ import com.alibaba.druid.sql.visitor.SQLASTVisitor; /** * Created by wenshao on 16/9/14. */ -public class SQLCreateSequenceStatement extends SQLStatementImpl implements SQLDDLStatement { +public class SQLCreateSequenceStatement extends SQLStatementImpl implements SQLCreateStatement { private SQLName name; private SQLExpr startWith; diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateStatement.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateStatement.java new file mode 100644 index 0000000000..647d3f433a --- /dev/null +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateStatement.java @@ -0,0 +1,6 @@ +package com.alibaba.druid.sql.ast.statement; + +import com.alibaba.druid.sql.ast.SQLStatement; + +public interface SQLCreateStatement extends SQLDDLStatement { +} diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateTableStatement.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateTableStatement.java index 327ab95926..daffd868da 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateTableStatement.java +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateTableStatement.java @@ -31,7 +31,7 @@ import com.alibaba.druid.sql.visitor.SQLASTVisitor; import com.alibaba.druid.util.ListDG; import com.alibaba.druid.util.lang.Consumer; -public class SQLCreateTableStatement extends SQLStatementImpl implements SQLDDLStatement { +public class SQLCreateTableStatement extends SQLStatementImpl implements SQLDDLStatement, SQLCreateStatement { protected boolean ifNotExiists = false; protected Type type; diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateTriggerStatement.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateTriggerStatement.java index 759a76a650..0274d1de76 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateTriggerStatement.java +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateTriggerStatement.java @@ -23,7 +23,7 @@ import com.alibaba.druid.sql.ast.SQLStatement; import com.alibaba.druid.sql.ast.SQLStatementImpl; import com.alibaba.druid.sql.visitor.SQLASTVisitor; -public class SQLCreateTriggerStatement extends SQLStatementImpl { +public class SQLCreateTriggerStatement extends SQLStatementImpl implements SQLCreateStatement { private SQLName name; diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateViewStatement.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateViewStatement.java index 1ca627b411..7f9c51ce66 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateViewStatement.java +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateViewStatement.java @@ -29,7 +29,7 @@ import com.alibaba.druid.sql.ast.expr.SQLLiteralExpr; import com.alibaba.druid.sql.ast.expr.SQLPropertyExpr; import com.alibaba.druid.sql.visitor.SQLASTVisitor; -public class SQLCreateViewStatement extends SQLStatementImpl implements SQLDDLStatement { +public class SQLCreateViewStatement extends SQLStatementImpl implements SQLCreateStatement { private boolean orReplace = false; private boolean force = false; diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropDatabaseStatement.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropDatabaseStatement.java index 8f306b6226..109d0900a1 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropDatabaseStatement.java +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropDatabaseStatement.java @@ -19,7 +19,7 @@ import com.alibaba.druid.sql.ast.SQLExpr; import com.alibaba.druid.sql.ast.SQLStatementImpl; import com.alibaba.druid.sql.visitor.SQLASTVisitor; -public class SQLDropDatabaseStatement extends SQLStatementImpl implements SQLDDLStatement { +public class SQLDropDatabaseStatement extends SQLStatementImpl implements SQLDropStatement { private SQLExpr database; private boolean ifExists; diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropFunctionStatement.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropFunctionStatement.java index da7a8e7415..debf5fe9d5 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropFunctionStatement.java +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropFunctionStatement.java @@ -19,7 +19,7 @@ import com.alibaba.druid.sql.ast.SQLName; import com.alibaba.druid.sql.ast.SQLStatementImpl; import com.alibaba.druid.sql.visitor.SQLASTVisitor; -public class SQLDropFunctionStatement extends SQLStatementImpl implements SQLDDLStatement { +public class SQLDropFunctionStatement extends SQLStatementImpl implements SQLDropStatement { private SQLName name; private boolean ifExists; diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropIndexStatement.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropIndexStatement.java index 2537f760ff..7db426e18d 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropIndexStatement.java +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropIndexStatement.java @@ -20,7 +20,7 @@ import com.alibaba.druid.sql.ast.SQLName; import com.alibaba.druid.sql.ast.SQLStatementImpl; import com.alibaba.druid.sql.visitor.SQLASTVisitor; -public class SQLDropIndexStatement extends SQLStatementImpl implements SQLDDLStatement { +public class SQLDropIndexStatement extends SQLStatementImpl implements SQLDropStatement { private SQLName indexName; private SQLExprTableSource tableName; diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropProcedureStatement.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropProcedureStatement.java index f2a67c7571..3c30a2ad9e 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropProcedureStatement.java +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropProcedureStatement.java @@ -19,7 +19,7 @@ import com.alibaba.druid.sql.ast.SQLName; import com.alibaba.druid.sql.ast.SQLStatementImpl; import com.alibaba.druid.sql.visitor.SQLASTVisitor; -public class SQLDropProcedureStatement extends SQLStatementImpl implements SQLDDLStatement { +public class SQLDropProcedureStatement extends SQLStatementImpl implements SQLDropStatement { private SQLName name; private boolean ifExists; diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropSequenceStatement.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropSequenceStatement.java index e5756f8028..cfe3d27ebe 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropSequenceStatement.java +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropSequenceStatement.java @@ -20,7 +20,7 @@ import com.alibaba.druid.sql.ast.SQLStatementImpl; import com.alibaba.druid.sql.ast.expr.SQLPropertyExpr; import com.alibaba.druid.sql.visitor.SQLASTVisitor; -public class SQLDropSequenceStatement extends SQLStatementImpl implements SQLDDLStatement { +public class SQLDropSequenceStatement extends SQLStatementImpl implements SQLDropStatement { private SQLName name; private boolean ifExists; diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropStatement.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropStatement.java new file mode 100644 index 0000000000..4903589d76 --- /dev/null +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropStatement.java @@ -0,0 +1,4 @@ +package com.alibaba.druid.sql.ast.statement; + +public interface SQLDropStatement extends SQLDDLStatement { +} diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropTableSpaceStatement.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropTableSpaceStatement.java index e3f60ff876..3cb75d9021 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropTableSpaceStatement.java +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropTableSpaceStatement.java @@ -19,7 +19,7 @@ import com.alibaba.druid.sql.ast.SQLName; import com.alibaba.druid.sql.ast.SQLStatementImpl; import com.alibaba.druid.sql.visitor.SQLASTVisitor; -public class SQLDropTableSpaceStatement extends SQLStatementImpl implements SQLDDLStatement { +public class SQLDropTableSpaceStatement extends SQLStatementImpl implements SQLDropStatement { private SQLName name; private boolean ifExists; diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropTableStatement.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropTableStatement.java index e9baac6031..ec9e7dc8fb 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropTableStatement.java +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropTableStatement.java @@ -24,7 +24,7 @@ import com.alibaba.druid.sql.ast.SQLStatementImpl; import com.alibaba.druid.sql.ast.expr.SQLPropertyExpr; import com.alibaba.druid.sql.visitor.SQLASTVisitor; -public class SQLDropTableStatement extends SQLStatementImpl implements SQLDDLStatement { +public class SQLDropTableStatement extends SQLStatementImpl implements SQLDropStatement { private List hints; protected List tableSources = new ArrayList(); diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropTriggerStatement.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropTriggerStatement.java index ef0468cf20..0469b660de 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropTriggerStatement.java +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropTriggerStatement.java @@ -19,7 +19,7 @@ import com.alibaba.druid.sql.ast.SQLName; import com.alibaba.druid.sql.ast.SQLStatementImpl; import com.alibaba.druid.sql.visitor.SQLASTVisitor; -public class SQLDropTriggerStatement extends SQLStatementImpl implements SQLDDLStatement { +public class SQLDropTriggerStatement extends SQLStatementImpl implements SQLDropStatement { private SQLName name; private boolean ifExists; diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropUserStatement.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropUserStatement.java index 600dc18f50..41b031b784 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropUserStatement.java +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropUserStatement.java @@ -22,7 +22,7 @@ import com.alibaba.druid.sql.ast.SQLExpr; import com.alibaba.druid.sql.ast.SQLStatementImpl; import com.alibaba.druid.sql.visitor.SQLASTVisitor; -public class SQLDropUserStatement extends SQLStatementImpl implements SQLDDLStatement { +public class SQLDropUserStatement extends SQLStatementImpl implements SQLDropStatement { private List users = new ArrayList(2); diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropViewStatement.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropViewStatement.java index 1cc6273112..8477f966b0 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropViewStatement.java +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLDropViewStatement.java @@ -22,7 +22,7 @@ import com.alibaba.druid.sql.ast.SQLName; import com.alibaba.druid.sql.ast.SQLStatementImpl; import com.alibaba.druid.sql.visitor.SQLASTVisitor; -public class SQLDropViewStatement extends SQLStatementImpl implements SQLDDLStatement { +public class SQLDropViewStatement extends SQLStatementImpl implements SQLDropStatement { protected List tableSources = new ArrayList(); diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlAlterUserStatement.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlAlterUserStatement.java index c3c8854424..3ce9b6d4ad 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlAlterUserStatement.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlAlterUserStatement.java @@ -19,9 +19,10 @@ import java.util.ArrayList; import java.util.List; import com.alibaba.druid.sql.ast.SQLExpr; +import com.alibaba.druid.sql.ast.statement.SQLAlterStatement; import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitor; -public class MySqlAlterUserStatement extends MySqlStatementImpl { +public class MySqlAlterUserStatement extends MySqlStatementImpl implements SQLAlterStatement { private final List users = new ArrayList(); diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlCreateUserStatement.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlCreateUserStatement.java index 52b420e956..9dcf6086d7 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlCreateUserStatement.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlCreateUserStatement.java @@ -19,10 +19,11 @@ import java.util.ArrayList; import java.util.List; import com.alibaba.druid.sql.ast.SQLExpr; +import com.alibaba.druid.sql.ast.statement.SQLCreateStatement; import com.alibaba.druid.sql.dialect.mysql.ast.MySqlObjectImpl; import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitor; -public class MySqlCreateUserStatement extends MySqlStatementImpl { +public class MySqlCreateUserStatement extends MySqlStatementImpl implements SQLCreateStatement { private List users = new ArrayList(2); diff --git a/src/main/java/com/alibaba/druid/sql/dialect/odps/ast/OdpsAddStatisticStatement.java b/src/main/java/com/alibaba/druid/sql/dialect/odps/ast/OdpsAddStatisticStatement.java index da5c23c0a9..24f9a224b9 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/odps/ast/OdpsAddStatisticStatement.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/odps/ast/OdpsAddStatisticStatement.java @@ -16,10 +16,11 @@ package com.alibaba.druid.sql.dialect.odps.ast; import com.alibaba.druid.sql.ast.SQLName; +import com.alibaba.druid.sql.ast.statement.SQLAlterStatement; import com.alibaba.druid.sql.ast.statement.SQLExprTableSource; import com.alibaba.druid.sql.dialect.odps.visitor.OdpsASTVisitor; -public class OdpsAddStatisticStatement extends OdpsStatementImpl { +public class OdpsAddStatisticStatement extends OdpsStatementImpl implements SQLAlterStatement { private SQLExprTableSource table; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleAlterIndexStatement.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleAlterIndexStatement.java index 155eb70c7a..dd90c0b786 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleAlterIndexStatement.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleAlterIndexStatement.java @@ -21,7 +21,7 @@ import com.alibaba.druid.sql.ast.SQLObject; import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObjectImpl; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; -public class OracleAlterIndexStatement extends OracleStatementImpl { +public class OracleAlterIndexStatement extends OracleStatementImpl implements OracleAlterStatement { private SQLName name; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleAlterProcedureStatement.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleAlterProcedureStatement.java index edc4dbb273..ae2a8590fb 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleAlterProcedureStatement.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleAlterProcedureStatement.java @@ -18,7 +18,7 @@ package com.alibaba.druid.sql.dialect.oracle.ast.stmt; import com.alibaba.druid.sql.ast.SQLExpr; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; -public class OracleAlterProcedureStatement extends OracleStatementImpl { +public class OracleAlterProcedureStatement extends OracleStatementImpl implements OracleAlterStatement { private SQLExpr name; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleAlterSessionStatement.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleAlterSessionStatement.java index 668ab0c2c0..1df704aca4 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleAlterSessionStatement.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleAlterSessionStatement.java @@ -21,7 +21,7 @@ import java.util.List; import com.alibaba.druid.sql.ast.statement.SQLAssignItem; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; -public class OracleAlterSessionStatement extends OracleStatementImpl { +public class OracleAlterSessionStatement extends OracleStatementImpl implements OracleAlterStatement { private List items = new ArrayList(); diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleAlterStatement.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleAlterStatement.java new file mode 100644 index 0000000000..d1b9eb777c --- /dev/null +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleAlterStatement.java @@ -0,0 +1,7 @@ +package com.alibaba.druid.sql.dialect.oracle.ast.stmt; + +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.ast.statement.SQLAlterStatement; + +public interface OracleAlterStatement extends SQLAlterStatement, OracleStatement { +} diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleAlterSynonymStatement.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleAlterSynonymStatement.java index 4588e3cf27..ea0e1867ee 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleAlterSynonymStatement.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleAlterSynonymStatement.java @@ -18,7 +18,7 @@ package com.alibaba.druid.sql.dialect.oracle.ast.stmt; import com.alibaba.druid.sql.ast.SQLName; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; -public class OracleAlterSynonymStatement extends OracleStatementImpl { +public class OracleAlterSynonymStatement extends OracleStatementImpl implements OracleAlterStatement { private SQLName name; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleAlterTablespaceStatement.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleAlterTablespaceStatement.java index 66fe08e347..f1c09f929c 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleAlterTablespaceStatement.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleAlterTablespaceStatement.java @@ -18,7 +18,7 @@ package com.alibaba.druid.sql.dialect.oracle.ast.stmt; import com.alibaba.druid.sql.ast.SQLName; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; -public class OracleAlterTablespaceStatement extends OracleStatementImpl { +public class OracleAlterTablespaceStatement extends OracleStatementImpl implements OracleAlterStatement { private SQLName name; private OracleAlterTablespaceItem item; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleAlterTriggerStatement.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleAlterTriggerStatement.java index 32ac12bb81..c6c8fb42a8 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleAlterTriggerStatement.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleAlterTriggerStatement.java @@ -18,7 +18,7 @@ package com.alibaba.druid.sql.dialect.oracle.ast.stmt; import com.alibaba.druid.sql.ast.SQLName; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; -public class OracleAlterTriggerStatement extends OracleStatementImpl { +public class OracleAlterTriggerStatement extends OracleStatementImpl implements OracleAlterStatement { private SQLName name; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleAlterViewStatement.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleAlterViewStatement.java index 3b6dfa5935..f31cd19d18 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleAlterViewStatement.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleAlterViewStatement.java @@ -18,7 +18,7 @@ package com.alibaba.druid.sql.dialect.oracle.ast.stmt; import com.alibaba.druid.sql.ast.SQLName; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; -public class OracleAlterViewStatement extends OracleStatementImpl { +public class OracleAlterViewStatement extends OracleStatementImpl implements OracleAlterStatement { private SQLName name; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleCreateDatabaseDbLinkStatement.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleCreateDatabaseDbLinkStatement.java index 49e0bef803..5a3f7ac109 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleCreateDatabaseDbLinkStatement.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleCreateDatabaseDbLinkStatement.java @@ -17,9 +17,10 @@ package com.alibaba.druid.sql.dialect.oracle.ast.stmt; import com.alibaba.druid.sql.ast.SQLExpr; import com.alibaba.druid.sql.ast.SQLName; +import com.alibaba.druid.sql.ast.statement.SQLCreateStatement; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; -public class OracleCreateDatabaseDbLinkStatement extends OracleStatementImpl { +public class OracleCreateDatabaseDbLinkStatement extends OracleStatementImpl implements SQLCreateStatement { private boolean shared; private boolean _public; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleCreateIndexStatement.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleCreateIndexStatement.java index 2bd56496a1..dddd5a02ad 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleCreateIndexStatement.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleCreateIndexStatement.java @@ -17,6 +17,7 @@ package com.alibaba.druid.sql.dialect.oracle.ast.stmt; import com.alibaba.druid.sql.ast.*; import com.alibaba.druid.sql.ast.statement.SQLCreateIndexStatement; +import com.alibaba.druid.sql.ast.statement.SQLCreateStatement; import com.alibaba.druid.sql.dialect.oracle.ast.OracleSegmentAttributes; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; import com.alibaba.druid.sql.visitor.SQLASTVisitor; @@ -25,7 +26,7 @@ import com.alibaba.druid.util.JdbcConstants; import java.util.ArrayList; import java.util.List; -public class OracleCreateIndexStatement extends SQLCreateIndexStatement implements OracleDDLStatement, OracleSegmentAttributes { +public class OracleCreateIndexStatement extends SQLCreateIndexStatement implements OracleDDLStatement, OracleSegmentAttributes, SQLCreateStatement { private boolean online = false; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleCreatePackageStatement.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleCreatePackageStatement.java index 6f78018c39..8662e7684c 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleCreatePackageStatement.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleCreatePackageStatement.java @@ -17,6 +17,7 @@ package com.alibaba.druid.sql.dialect.oracle.ast.stmt; import com.alibaba.druid.sql.ast.SQLName; import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.ast.statement.SQLCreateStatement; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; import com.alibaba.druid.util.JdbcConstants; import org.apache.ibatis.jdbc.SQL; @@ -27,7 +28,7 @@ import java.util.List; /** * Created by wenshao on 23/05/2017. */ -public class OracleCreatePackageStatement extends OracleStatementImpl { +public class OracleCreatePackageStatement extends OracleStatementImpl implements SQLCreateStatement { private boolean orReplace; private SQLName name; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleCreateSynonymStatement.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleCreateSynonymStatement.java index 51b06d2132..81218a9108 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleCreateSynonymStatement.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleCreateSynonymStatement.java @@ -1,9 +1,10 @@ package com.alibaba.druid.sql.dialect.oracle.ast.stmt; import com.alibaba.druid.sql.ast.SQLName; +import com.alibaba.druid.sql.ast.statement.SQLCreateStatement; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; -public class OracleCreateSynonymStatement extends OracleStatementImpl { +public class OracleCreateSynonymStatement extends OracleStatementImpl implements SQLCreateStatement { private boolean orReplace; private SQLName name; private boolean isPublic; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleDropDbLinkStatement.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleDropDbLinkStatement.java index f50d04b987..6e70ea030f 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleDropDbLinkStatement.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleDropDbLinkStatement.java @@ -16,9 +16,10 @@ package com.alibaba.druid.sql.dialect.oracle.ast.stmt; import com.alibaba.druid.sql.ast.SQLName; +import com.alibaba.druid.sql.ast.statement.SQLDropStatement; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; -public class OracleDropDbLinkStatement extends OracleStatementImpl { +public class OracleDropDbLinkStatement extends OracleStatementImpl implements SQLDropStatement { private boolean isPublic; diff --git a/src/main/java/com/alibaba/druid/wall/spi/WallVisitorUtils.java b/src/main/java/com/alibaba/druid/wall/spi/WallVisitorUtils.java index 00870e1f60..6038ea3a54 100644 --- a/src/main/java/com/alibaba/druid/wall/spi/WallVisitorUtils.java +++ b/src/main/java/com/alibaba/druid/wall/spi/WallVisitorUtils.java @@ -64,6 +64,7 @@ import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowStatement; import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlUpdateStatement; import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterIndexStatement; +import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleExecuteImmediateStatement; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleMultiInsertStatement; import com.alibaba.druid.sql.dialect.postgresql.ast.stmt.PGShowStatement; import com.alibaba.druid.sql.dialect.sqlserver.ast.stmt.SQLServerExecStatement; @@ -2486,7 +2487,9 @@ public class WallVisitorUtils { allow = config.isMergeAllow(); denyMessage = "merge not allow"; errorCode = ErrorCode.MERGE_NOT_ALLOW; - } else if (x instanceof SQLCallStatement || x instanceof SQLServerExecStatement) { + } else if (x instanceof SQLCallStatement + || x instanceof SQLServerExecStatement + || x instanceof OracleExecuteImmediateStatement) { allow = config.isCallAllow(); denyMessage = "call not allow"; errorCode = ErrorCode.CALL_NOT_ALLOW; @@ -2494,26 +2497,15 @@ public class WallVisitorUtils { allow = config.isTruncateAllow(); denyMessage = "truncate not allow"; errorCode = ErrorCode.TRUNCATE_NOT_ALLOW; - } else if (x instanceof SQLCreateTableStatement // - || x instanceof SQLCreateIndexStatement // - || x instanceof SQLCreateViewStatement // - || x instanceof SQLCreateTriggerStatement // - || x instanceof SQLCreateSequenceStatement // - ) { + } else if (x instanceof SQLCreateStatement) { allow = config.isCreateTableAllow(); denyMessage = "create table not allow"; errorCode = ErrorCode.CREATE_TABLE_NOT_ALLOW; - } else if (x instanceof SQLAlterTableStatement || x instanceof OracleAlterIndexStatement) { + } else if (x instanceof SQLAlterStatement) { allow = config.isAlterTableAllow(); denyMessage = "alter table not allow"; errorCode = ErrorCode.ALTER_TABLE_NOT_ALLOW; - } else if (x instanceof SQLDropTableStatement // - || x instanceof SQLDropIndexStatement // - || x instanceof SQLDropViewStatement // - || x instanceof SQLDropTriggerStatement // - || x instanceof SQLDropSequenceStatement // - || x instanceof SQLDropProcedureStatement // - ) { + } else if (x instanceof SQLDropStatement) { allow = config.isDropTableAllow(); denyMessage = "drop table not allow"; errorCode = ErrorCode.DROP_TABLE_NOT_ALLOW;