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 b15ed339f4..15d77f9f3e 100644 --- a/src/main/java/com/alibaba/druid/wall/spi/WallVisitorUtils.java +++ b/src/main/java/com/alibaba/druid/wall/spi/WallVisitorUtils.java @@ -2568,7 +2568,8 @@ public class WallVisitorUtils { allow = config.isUpdateAllow(); denyMessage = "update not allow"; errorCode = ErrorCode.UPDATE_NOT_ALLOW; - } else if (x instanceof OracleMultiInsertStatement) { + } else if (x instanceof OracleMultiInsertStatement + || x instanceof OracleMultiInsertStatement.InsertIntoClause) { allow = true; denyMessage = "multi-insert not allow"; errorCode = ErrorCode.INSERT_NOT_ALLOW; diff --git a/src/test/java/com/alibaba/druid/bvt/filter/wall/oracle/OracleWallTest7.java b/src/test/java/com/alibaba/druid/bvt/filter/wall/oracle/OracleWallTest7.java index e681dab968..d989e37396 100644 --- a/src/test/java/com/alibaba/druid/bvt/filter/wall/oracle/OracleWallTest7.java +++ b/src/test/java/com/alibaba/druid/bvt/filter/wall/oracle/OracleWallTest7.java @@ -27,4 +27,15 @@ public class OracleWallTest7 extends TestCase { + "end"; Assert.assertTrue(WallUtils.isValidateOracle(sql)); } + + public void test_insert_all() throws Exception { + String sql = // + "INSERT ALL\n" + + " INTO mytable (column1, column2, column_n) VALUES (expr1, expr2, expr_n)\n" + + " INTO mytable (column1, column2, column_n) VALUES (expr1, expr2, expr_n)\n" + + " INTO mytable (column1, column2, column_n) VALUES (expr1, expr2, expr_n)\n" + + "SELECT * FROM dual;"; + + assertTrue(WallUtils.isValidateOracle(sql)); + } }