improve sql parser

This commit is contained in:
wenshao
2013-04-23 15:06:26 +08:00
parent a429d58729
commit 56e6463ba4
4 changed files with 156 additions and 0 deletions
@@ -15,6 +15,7 @@
*/
package com.alibaba.druid.sql.dialect.mysql.parser;
import com.alibaba.druid.sql.ast.SQLDataType;
import com.alibaba.druid.sql.ast.SQLExpr;
import com.alibaba.druid.sql.ast.SQLName;
import com.alibaba.druid.sql.ast.expr.SQLBinaryOpExpr;
@@ -555,6 +556,17 @@ public class MySqlExprParser extends SQLExprParser {
return column;
}
protected SQLDataType parseDataTypeRest(SQLDataType dataType) {
super.parseDataTypeRest(dataType);
if (identifierEquals("UNSIGNED")) {
lexer.nextToken();
dataType.getAttributes().put("unsigned", true);
}
return dataType;
}
public SQLExpr orRest(SQLExpr expr) {
@@ -326,6 +326,10 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV
printAndAccept(x.getArguments(), ", ");
print(")");
}
if (Boolean.TRUE == x.getAttribute("unsigned")) {
print(" unsigned");
}
if (x instanceof SQLCharactorDataType) {
SQLCharactorDataType charType = (SQLCharactorDataType) x;