fix blacklist bug & parameterize NULL to ?

This commit is contained in:
kiki
2013-09-27 14:37:52 +08:00
parent 9eded510d3
commit f80da144fd
8 changed files with 65 additions and 2 deletions
@@ -20,6 +20,7 @@ import com.alibaba.druid.sql.ast.expr.SQLCharExpr;
import com.alibaba.druid.sql.ast.expr.SQLInListExpr;
import com.alibaba.druid.sql.ast.expr.SQLIntegerExpr;
import com.alibaba.druid.sql.ast.expr.SQLNCharExpr;
import com.alibaba.druid.sql.ast.expr.SQLNullExpr;
import com.alibaba.druid.sql.ast.expr.SQLNumberExpr;
public class ParameterizedOutputVisitor extends SQLASTOutputVisitor implements ParameterizedVisitor {
@@ -83,4 +84,13 @@ public class ParameterizedOutputVisitor extends SQLASTOutputVisitor implements P
return ParameterizedOutputVisitorUtils.visit(this, x);
}
public boolean visit(SQLNullExpr x) {
if (!ParameterizedOutputVisitorUtils.checkParameterize(x)) {
return super.visit(x);
}
return ParameterizedOutputVisitorUtils.visit(this, x);
}
}
@@ -28,6 +28,7 @@ import com.alibaba.druid.sql.ast.expr.SQLInListExpr;
import com.alibaba.druid.sql.ast.expr.SQLIntegerExpr;
import com.alibaba.druid.sql.ast.expr.SQLLiteralExpr;
import com.alibaba.druid.sql.ast.expr.SQLNCharExpr;
import com.alibaba.druid.sql.ast.expr.SQLNullExpr;
import com.alibaba.druid.sql.ast.expr.SQLNumberExpr;
import com.alibaba.druid.sql.ast.expr.SQLVariantRefExpr;
import com.alibaba.druid.sql.ast.statement.SQLAssignItem;
@@ -152,7 +153,7 @@ public class ParameterizedOutputVisitorUtils {
if (Boolean.TRUE.equals(x.getAttribute(ParameterizedOutputVisitorUtils.ATTR_PARAMS_SKIP))) {
return false;
}
SQLObject parent = x.getParent();
if (parent instanceof SQLDataType //
@@ -173,6 +174,12 @@ public class ParameterizedOutputVisitorUtils {
return false;
}
public static boolean visit(ParameterizedVisitor v, SQLNullExpr x) {
v.print('?');
v.incrementReplaceCunt();
return false;
}
public static SQLBinaryOpExpr merge(ParameterizedVisitor v, SQLBinaryOpExpr x) {
SQLExpr left = x.getLeft();
SQLExpr right = x.getRight();