From 1db2c5b28c0ca34d573975938daef766a5369cb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=91=E6=98=BC?= Date: Thu, 14 Dec 2017 20:07:14 +0800 Subject: [PATCH 1/3] fix bug --- pom.xml | 2 +- .../com/alibaba/druid/wall/WallProvider.java | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 6adc256b20..ff73a6157b 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.alibaba druid - 1.1.7-preview_0 + 1.1.7-preview_10 jar druid diff --git a/src/main/java/com/alibaba/druid/wall/WallProvider.java b/src/main/java/com/alibaba/druid/wall/WallProvider.java index e80e8bd9a3..7bba3cb685 100644 --- a/src/main/java/com/alibaba/druid/wall/WallProvider.java +++ b/src/main/java/com/alibaba/druid/wall/WallProvider.java @@ -31,8 +31,10 @@ import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantReadWriteLock; import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLExpr; import com.alibaba.druid.sql.ast.SQLName; import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.ast.statement.SQLUpdateSetItem; import com.alibaba.druid.sql.ast.statement.SQLUpdateStatement; import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlHintStatement; import com.alibaba.druid.sql.parser.Lexer; @@ -48,6 +50,9 @@ import com.alibaba.druid.wall.spi.WallVisitorUtils; import com.alibaba.druid.wall.violation.ErrorCode; import com.alibaba.druid.wall.violation.IllegalSQLObjectViolation; import com.alibaba.druid.wall.violation.SyntaxErrorViolation; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.BeanWrapper; +import org.springframework.beans.BeanWrapperImpl; public abstract class WallProvider { @@ -686,8 +691,16 @@ public abstract class WallProvider { Set updateCheckColumns = config.getUpdateCheckTable(tableName); if (updateCheckColumns != null && updateCheckColumns.size() > 0) { updateCheckHandlerEnable = true; - break; } + for(SQLUpdateSetItem item : ((SQLUpdateStatement) stmt).getItems()){ + SQLExpr column = item.getColumn(); + BeanWrapper beanWrapper = new BeanWrapperImpl(column); + Object name = beanWrapper.getPropertyValue("name"); + if(name != null && updateCheckColumns.contains(name.toString().toLowerCase())){ + updateCheckHandler.check(tableName, name.toString().toLowerCase(), item.) + } + } + } } } @@ -706,6 +719,9 @@ public abstract class WallProvider { sqlStat = addWhiteSql(sql, tableStat, context.getFunctionStats(), syntaxError); } } + if(sqlStat == null && updateCheckHandlerEnable){ + sqlStat = new WallSqlStat(tableStat, context.getFunctionStats(), syntaxError); + } Map tableStats = null; Map functionStats = null; From b46e3648c8a60d8aae1b6a93aca87a2a19950ac1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=91=E6=98=BC?= Date: Thu, 14 Dec 2017 20:11:16 +0800 Subject: [PATCH 2/3] Revert "fix bug" This reverts commit 1db2c5b28c0ca34d573975938daef766a5369cb1. --- pom.xml | 2 +- .../com/alibaba/druid/wall/WallProvider.java | 18 +----------------- 2 files changed, 2 insertions(+), 18 deletions(-) diff --git a/pom.xml b/pom.xml index ff73a6157b..6adc256b20 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.alibaba druid - 1.1.7-preview_10 + 1.1.7-preview_0 jar druid diff --git a/src/main/java/com/alibaba/druid/wall/WallProvider.java b/src/main/java/com/alibaba/druid/wall/WallProvider.java index 7bba3cb685..e80e8bd9a3 100644 --- a/src/main/java/com/alibaba/druid/wall/WallProvider.java +++ b/src/main/java/com/alibaba/druid/wall/WallProvider.java @@ -31,10 +31,8 @@ import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantReadWriteLock; import com.alibaba.druid.sql.SQLUtils; -import com.alibaba.druid.sql.ast.SQLExpr; import com.alibaba.druid.sql.ast.SQLName; import com.alibaba.druid.sql.ast.SQLStatement; -import com.alibaba.druid.sql.ast.statement.SQLUpdateSetItem; import com.alibaba.druid.sql.ast.statement.SQLUpdateStatement; import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlHintStatement; import com.alibaba.druid.sql.parser.Lexer; @@ -50,9 +48,6 @@ import com.alibaba.druid.wall.spi.WallVisitorUtils; import com.alibaba.druid.wall.violation.ErrorCode; import com.alibaba.druid.wall.violation.IllegalSQLObjectViolation; import com.alibaba.druid.wall.violation.SyntaxErrorViolation; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.BeanWrapper; -import org.springframework.beans.BeanWrapperImpl; public abstract class WallProvider { @@ -691,16 +686,8 @@ public abstract class WallProvider { Set updateCheckColumns = config.getUpdateCheckTable(tableName); if (updateCheckColumns != null && updateCheckColumns.size() > 0) { updateCheckHandlerEnable = true; + break; } - for(SQLUpdateSetItem item : ((SQLUpdateStatement) stmt).getItems()){ - SQLExpr column = item.getColumn(); - BeanWrapper beanWrapper = new BeanWrapperImpl(column); - Object name = beanWrapper.getPropertyValue("name"); - if(name != null && updateCheckColumns.contains(name.toString().toLowerCase())){ - updateCheckHandler.check(tableName, name.toString().toLowerCase(), item.) - } - } - } } } @@ -719,9 +706,6 @@ public abstract class WallProvider { sqlStat = addWhiteSql(sql, tableStat, context.getFunctionStats(), syntaxError); } } - if(sqlStat == null && updateCheckHandlerEnable){ - sqlStat = new WallSqlStat(tableStat, context.getFunctionStats(), syntaxError); - } Map tableStats = null; Map functionStats = null; From 0078d54e4315957b80df64fdbca3450720b51e0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=91=E6=98=BC?= Date: Thu, 14 Dec 2017 20:13:55 +0800 Subject: [PATCH 3/3] fix bug --- src/main/java/com/alibaba/druid/wall/WallProvider.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/alibaba/druid/wall/WallProvider.java b/src/main/java/com/alibaba/druid/wall/WallProvider.java index e80e8bd9a3..4e0bfbcb6c 100644 --- a/src/main/java/com/alibaba/druid/wall/WallProvider.java +++ b/src/main/java/com/alibaba/druid/wall/WallProvider.java @@ -706,7 +706,9 @@ public abstract class WallProvider { sqlStat = addWhiteSql(sql, tableStat, context.getFunctionStats(), syntaxError); } } - + if(sqlStat == null && updateCheckHandlerEnable){ + sqlStat = new WallSqlStat(tableStat, context.getFunctionStats(), syntaxError); + } Map tableStats = null; Map functionStats = null; if (context != null) {