This commit is contained in:
wenshao
2014-06-01 19:16:20 +08:00
23 changed files with 478 additions and 73 deletions
@@ -228,7 +228,7 @@ public class MySqlExprParser extends SQLExprParser {
String chars = lexer.stringVal();
concat.addParameter(new SQLCharExpr(chars));
lexer.nextToken();
} while (lexer.token() == Token.LITERAL_CHARS);
} while (lexer.token() == Token.LITERAL_CHARS || lexer.token() == Token.LITERAL_ALIAS);
expr = concat;
}
} else if (lexer.token() == Token.IDENTIFIER) {
@@ -105,6 +105,7 @@ public class MySqlLexer extends Lexer {
stringVal = subString(mark, bufPos);
token = Token.LINE_COMMENT;
hasComment = true;
if (commentHandler != null && commentHandler.handle(lastToken, stringVal)) {
return;
@@ -440,6 +441,7 @@ public class MySqlLexer extends Lexer {
} else {
stringVal = subString(mark, bufPos);
token = Token.MULTI_LINE_COMMENT;
hasComment = true;
}
if (commentHandler != null && commentHandler.handle(lastToken, stringVal)) {
@@ -481,6 +483,7 @@ public class MySqlLexer extends Lexer {
stringVal = subString(mark, bufPos + 1);
token = Token.LINE_COMMENT;
hasComment = true;
if (commentHandler != null && commentHandler.handle(lastToken, stringVal)) {
return;
@@ -161,7 +161,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV
return visit((MySqlSelectQueryBlock) select);
}
return false;
return super.visit(select);
}
public boolean visit(MySqlSelectQueryBlock x) {
@@ -374,7 +374,6 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV
print(" CHARACTER SET ");
print(x.getCharSetName());
}
if (x.getCollate() != null) {
print(" COLLATE ");
print(x.getCollate());
@@ -22,6 +22,7 @@ import java.util.Properties;
import com.alibaba.druid.sql.ast.SQLObject;
import com.alibaba.druid.sql.ast.expr.SQLBinaryOpExpr;
import com.alibaba.druid.sql.ast.expr.SQLCharExpr;
import com.alibaba.druid.sql.ast.expr.SQLHexExpr;
import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr;
import com.alibaba.druid.sql.ast.expr.SQLInListExpr;
import com.alibaba.druid.sql.ast.expr.SQLIntegerExpr;
@@ -31,6 +32,7 @@ import com.alibaba.druid.sql.ast.expr.SQLNumberExpr;
import com.alibaba.druid.sql.ast.expr.SQLPropertyExpr;
import com.alibaba.druid.sql.ast.statement.SQLExprTableSource;
import com.alibaba.druid.sql.ast.statement.SQLInsertStatement.ValuesClause;
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlCharExpr;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlInsertStatement;
import com.alibaba.druid.sql.visitor.ParameterizedOutputVisitorUtils;
import com.alibaba.druid.sql.visitor.ParameterizedVisitor;
@@ -179,6 +181,22 @@ public class MySqlParameterizedOutputVisitor extends MySqlOutputVisitor implemen
return ParameterizedOutputVisitorUtils.visit(this, x);
}
public boolean visit(SQLHexExpr x) {
if (!ParameterizedOutputVisitorUtils.checkParameterize(x)) {
return super.visit(x);
}
return ParameterizedOutputVisitorUtils.visit(this, x);
}
public boolean visit(MySqlCharExpr x) {
if (!ParameterizedOutputVisitorUtils.checkParameterize(x)) {
return super.visit(x);
}
return ParameterizedOutputVisitorUtils.visit(this, x);
}
protected void printValuesList(MySqlInsertStatement x) {
List<ValuesClause> valuesList = x.getValuesList();
@@ -92,6 +92,7 @@ public class OdpsLexer extends Lexer {
} else {
stringVal = subString(mark, bufPos);
token = Token.MULTI_LINE_COMMENT;
hasComment = true;
}
if (token != Token.HINT && !isAllowComment()) {
@@ -134,6 +135,7 @@ public class OdpsLexer extends Lexer {
stringVal = subString(mark + 1, bufPos);
token = Token.LINE_COMMENT;
hasComment = true;
return;
}
}
@@ -230,6 +230,7 @@ public class OracleLexer extends Lexer {
} else {
stringVal = subString(mark, bufPos);
token = Token.MULTI_LINE_COMMENT;
hasComment = true;
}
if (token != Token.HINT && !isAllowComment()) {
@@ -272,6 +273,7 @@ public class OracleLexer extends Lexer {
stringVal = subString(mark + 1, bufPos);
token = Token.LINE_COMMENT;
hasComment = true;
return;
}
}
@@ -2181,6 +2181,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS
item.setParent(x);
item.accept(this);
}
print(";");
decrementIndent();
return false;
@@ -2202,6 +2203,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS
item.setParent(x);
item.accept(this);
}
print(";");
decrementIndent();
return false;
@@ -2232,6 +2234,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS
println();
}
}
print(";");
decrementIndent();
for (ElseIf elseIf : x.getElseIfList()) {
@@ -100,6 +100,7 @@ public class SQLServerLexer extends Lexer {
} else {
stringVal = subString(mark, bufPos);
token = Token.MULTI_LINE_COMMENT;
hasComment = true;
}
if (token != Token.HINT && !isAllowComment()) {
@@ -142,6 +143,7 @@ public class SQLServerLexer extends Lexer {
stringVal = subString(mark + 1, bufPos);
token = Token.LINE_COMMENT;
hasComment = true;
return;
}
}
@@ -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);
}
}