improve output visitor

This commit is contained in:
yakolee
2014-05-15 20:49:19 +08:00
parent a5c6636392
commit 6fb3248603
3 changed files with 17 additions and 0 deletions
@@ -22,6 +22,7 @@ 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;
import com.alibaba.druid.sql.ast.expr.SQLVariantRefExpr;
import com.alibaba.druid.sql.visitor.ParameterizedOutputVisitorUtils;
import com.alibaba.druid.sql.visitor.ParameterizedVisitor;
@@ -90,5 +91,13 @@ public class SQLServerParameterizedOutputVisitor extends SQLServerOutputVisitor
return ParameterizedOutputVisitorUtils.visit(this, x);
}
public boolean visit(SQLVariantRefExpr x) {
if (!ParameterizedOutputVisitorUtils.checkParameterize(x) || x.getName().equalsIgnoreCase("?")) {
return super.visit(x);
}
return ParameterizedOutputVisitorUtils.visit(this, x);
}
}
@@ -189,6 +189,12 @@ public class ParameterizedOutputVisitorUtils {
v.incrementReplaceCunt();
return false;
}
public static boolean visit(ParameterizedVisitor v, SQLVariantRefExpr x) {
v.print('?');
v.incrementReplaceCunt();
return false;
}
public static SQLBinaryOpExpr merge(ParameterizedVisitor v, SQLBinaryOpExpr x) {
SQLExpr left = x.getLeft();
@@ -601,7 +601,9 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab
decrementIndent();
} else if (parent instanceof ValuesClause) {
println();
print("(");
x.getSubQuery().accept(this);
print(")");
println();
} else {
print("(");