mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
0.2.15
This commit is contained in:
@@ -165,8 +165,12 @@ public class MySqlExprParser extends SQLExprParser {
|
||||
return this.methodRest(new SQLIdentifierExpr("VALUES"), true);
|
||||
case BINARY:
|
||||
lexer.nextToken();
|
||||
SQLUnaryExpr binaryExpr = new SQLUnaryExpr(SQLUnaryOperator.BINARY, expr());
|
||||
return primaryRest(binaryExpr);
|
||||
if (lexer.token() == Token.COMMA || lexer.token() == Token.SEMI || lexer.token() == Token.EOF) {
|
||||
return new SQLIdentifierExpr("BINARY");
|
||||
} else {
|
||||
SQLUnaryExpr binaryExpr = new SQLUnaryExpr(SQLUnaryOperator.BINARY, expr());
|
||||
return primaryRest(binaryExpr);
|
||||
}
|
||||
default:
|
||||
return super.primary();
|
||||
}
|
||||
@@ -550,8 +554,9 @@ public class MySqlExprParser extends SQLExprParser {
|
||||
|
||||
SQLExpr var = primary();
|
||||
|
||||
String ident = null;
|
||||
if (var instanceof SQLIdentifierExpr) {
|
||||
String ident = ((SQLIdentifierExpr) var).getName();
|
||||
ident = ((SQLIdentifierExpr) var).getName();
|
||||
|
||||
if ("GLOBAL".equalsIgnoreCase(ident)) {
|
||||
ident = lexer.stringVal();
|
||||
@@ -565,18 +570,26 @@ public class MySqlExprParser extends SQLExprParser {
|
||||
var = new SQLVariantRefExpr(ident);
|
||||
}
|
||||
}
|
||||
|
||||
if ("NAMES".equalsIgnoreCase(ident)) {
|
||||
// skip
|
||||
} else if ("CHARACTER".equalsIgnoreCase(ident)) {
|
||||
var = new SQLIdentifierExpr("CHARACTER SET");
|
||||
accept(Token.SET);
|
||||
if (lexer.token() == Token.EQ) {
|
||||
lexer.nextToken();
|
||||
}
|
||||
} else {
|
||||
if (lexer.token() == Token.COLONEQ) {
|
||||
lexer.nextToken();
|
||||
} else {
|
||||
accept(Token.EQ);
|
||||
}
|
||||
}
|
||||
|
||||
item.setValue(this.expr());
|
||||
|
||||
item.setTarget(var);
|
||||
if (lexer.token() == Token.COLONEQ) {
|
||||
lexer.nextToken();
|
||||
} else {
|
||||
accept(Token.EQ);
|
||||
}
|
||||
if (lexer.token() == Token.BINARY) {
|
||||
lexer.nextToken();
|
||||
item.setValue(new SQLIdentifierExpr("BINARY"));
|
||||
} else {
|
||||
item.setValue(expr());
|
||||
}
|
||||
return item;
|
||||
}
|
||||
|
||||
|
||||
@@ -27,6 +27,7 @@ import com.alibaba.druid.sql.ast.expr.SQLMethodInvokeExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLNullExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLVariantRefExpr;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableItem;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAssignItem;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLCharactorDataType;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLColumnConstraint;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition;
|
||||
@@ -2812,4 +2813,14 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV
|
||||
public void endVisit(MySqlAlterTableImportTablespace x) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(SQLAssignItem x) {
|
||||
x.getTarget().accept(this);
|
||||
if (!"NAMES".equalsIgnoreCase(x.getTarget().toString())) {
|
||||
print(" = ");
|
||||
}
|
||||
x.getValue().accept(this);
|
||||
return false;
|
||||
}
|
||||
} //
|
||||
|
||||
@@ -131,7 +131,8 @@ public class OracleExprParser extends SQLExprParser {
|
||||
"SUM", //
|
||||
"VAR_POP", //
|
||||
"VAR_SAMP", //
|
||||
"VARIANCE" //
|
||||
"VARIANCE", //
|
||||
"WM_CONCAT"
|
||||
};
|
||||
|
||||
public OracleExprParser(Lexer lexer){
|
||||
|
||||
Reference in New Issue
Block a user