From bc13ef1f43a0256dc38eef0fb05e53b7469177f9 Mon Sep 17 00:00:00 2001 From: wenshao Date: Sun, 20 Aug 2017 05:37:14 +0800 Subject: [PATCH] WallFilter support OracleAlterIndexStatement. issue #1923 --- .../druid/wall/spi/WallVisitorUtils.java | 3 +- .../bvt/filter/wall/WallAlterTest_0.java | 36 +++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 src/test/java/com/alibaba/druid/bvt/filter/wall/WallAlterTest_0.java 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 bc285057a0..00870e1f60 100644 --- a/src/main/java/com/alibaba/druid/wall/spi/WallVisitorUtils.java +++ b/src/main/java/com/alibaba/druid/wall/spi/WallVisitorUtils.java @@ -63,6 +63,7 @@ import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowGrantsStatemen 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.OracleMultiInsertStatement; import com.alibaba.druid.sql.dialect.postgresql.ast.stmt.PGShowStatement; import com.alibaba.druid.sql.dialect.sqlserver.ast.stmt.SQLServerExecStatement; @@ -2502,7 +2503,7 @@ public class WallVisitorUtils { allow = config.isCreateTableAllow(); denyMessage = "create table not allow"; errorCode = ErrorCode.CREATE_TABLE_NOT_ALLOW; - } else if (x instanceof SQLAlterTableStatement) { + } else if (x instanceof SQLAlterTableStatement || x instanceof OracleAlterIndexStatement) { allow = config.isAlterTableAllow(); denyMessage = "alter table not allow"; errorCode = ErrorCode.ALTER_TABLE_NOT_ALLOW; diff --git a/src/test/java/com/alibaba/druid/bvt/filter/wall/WallAlterTest_0.java b/src/test/java/com/alibaba/druid/bvt/filter/wall/WallAlterTest_0.java new file mode 100644 index 0000000000..87cfdad663 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/filter/wall/WallAlterTest_0.java @@ -0,0 +1,36 @@ +/* + * Copyright 1999-2017 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.filter.wall; + +import com.alibaba.druid.wall.WallConfig; +import com.alibaba.druid.wall.WallUtils; +import junit.framework.TestCase; +import org.junit.Assert; + +public class WallAlterTest_0 extends TestCase { + private String sql = "alter index idx_t1 rebuild"; + + private WallConfig config = new WallConfig(); + + protected void setUp() throws Exception { + config.setUpdateAllow(true); + } + + public void testORACLE() throws Exception { + + assertTrue(WallUtils.isValidateOracle(sql, config)); + } +}