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;