From ae675fec727706361e6540a506201c0bb88a3e1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E9=93=81?= Date: Sat, 12 Dec 2020 16:12:16 +0800 Subject: [PATCH] bug fix for oralce sql wall, fix #4065 --- .../com/alibaba/druid/wall/spi/WallVisitorUtils.java | 3 ++- .../druid/bvt/filter/wall/oracle/OracleWallTest7.java | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) 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)); + } }