fixed bug & testcase

This commit is contained in:
高铁
2016-04-24 09:52:39 +08:00
parent c729ddd24c
commit bb119890d8
16 changed files with 23 additions and 32 deletions
@@ -56,6 +56,11 @@ public class MySqlLexer extends Lexer {
// for oceanbase & mysql 5.7
map.put("PARTITION", Token.PARTITION);
map.put("CONTINUE", Token.CONTINUE);
map.put("UNDO", Token.UNDO);
map.put("SQLSTATE", Token.SQLSTATE);
map.put("CONDITION", Token.CONDITION);
DEFAULT_MYSQL_KEYWORDS = new Keywords(map);
}
@@ -3253,7 +3253,7 @@ public class MySqlStatementParser extends SQLStatementParser {
{
lexer.reset(markBp, markChar, Token.DECLARE);
statementList.add(this.parseCursorDeclare());
} else if (lexer.token() == Token.HANDLER) {
} else if (identifierEquals("HANDLER")) {
//DECLARE异常处理程序 [add by zhujun 2016-04-16]
lexer.reset(markBp, markChar, Token.DECLARE);
statementList.add(this.parseDeclareHandler());
@@ -3749,7 +3749,7 @@ public class MySqlStatementParser extends SQLStatementParser {
}
lexer.nextToken();
accept(Token.HANDLER);
acceptIdentifier("HANDLER");
accept(Token.FOR);
@@ -3759,7 +3759,7 @@ public class MySqlStatementParser extends SQLStatementParser {
if (tokenName.equalsIgnoreCase("NOT")) {//for 'NOT FOUND'
lexer.nextToken();
accept(Token.FOUND);
acceptIdentifier("HANDLE");
condition.setType(ConditionType.SYSTEM);
condition.setValue("NOT FOUND");
@@ -3769,11 +3769,11 @@ public class MySqlStatementParser extends SQLStatementParser {
//condition.setValue(lexer.stringVal());
//lexer.nextToken();
condition.setValue(exprParser.name().toString());
} else if(lexer.token() == Token.SQLEXCEPTION) { //for SQLEXCEPTION
} else if(identifierEquals("SQLEXCEPTION")) { //for SQLEXCEPTION
condition.setType(ConditionType.SYSTEM);
condition.setValue(lexer.stringVal());
lexer.nextToken();
} else if(lexer.token() == Token.SQLWARNING) { //for SQLWARNING
} else if(identifierEquals("SQLWARNING")) { //for SQLWARNING
condition.setType(ConditionType.SYSTEM);
condition.setValue(lexer.stringVal());
lexer.nextToken();
@@ -150,14 +150,6 @@ public class Keywords {
map.put("FETCH", Token.FETCH);
map.put("OUT", Token.OUT);
map.put("INOUT", Token.INOUT);
map.put("HANDLER", Token.HANDLER);
map.put("CONTINUE", Token.CONTINUE);
map.put("UNDO", Token.UNDO);
map.put("SQLSTATE", Token.SQLSTATE);
map.put("SQLWARNING", Token.SQLWARNING);
map.put("SQLEXCEPTION", Token.SQLEXCEPTION);
map.put("FOUND", Token.FOUND);
map.put("CONDITION", Token.CONDITION);
DEFAULT_KEYWORDS = new Keywords(map);
}
@@ -138,13 +138,9 @@ public enum Token {
CLOSE("CLOSE"),
OUT("OUT"),
INOUT("INOUT"),
HANDLER("HANDLER"),
EXIT("EXIT"),
UNDO("UNDO"),
SQLSTATE("SQLSTATE"),
SQLWARNING("SQLWARNING"),
SQLEXCEPTION("SQLEXCEPTION"),
FOUND("FOUND"),
CONDITION("CONDITION"),
//postgresql
@@ -760,14 +760,12 @@ public class SchemaStatVisitor extends SQLASTVisitorAdapter {
Map<String, String> aliasMap = getAliasMap();
if (aliasMap != null) {
if (aliasMap.containsKey(name)
&& aliasMap.get(name) != null) {
if (aliasMap.containsKey(name)) {
return aliasMap.get(name);
}
String name_lcase = name.toLowerCase();
if (name_lcase != name && aliasMap.containsKey(name_lcase)
&& aliasMap.get(name_lcase) != null) {
if (name_lcase != name && aliasMap.containsKey(name_lcase)) {
return aliasMap.get(name_lcase);
}