mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
improve sqlwall rule
This commit is contained in:
@@ -35,9 +35,9 @@ public class Keywords {
|
||||
map.put("AND", Token.AND);
|
||||
map.put("ANY", Token.ANY);
|
||||
map.put("AS", Token.AS);
|
||||
|
||||
|
||||
map.put("ENABLE", Token.ENABLE);
|
||||
map.put("DISABLE", Token. DISABLE);
|
||||
map.put("DISABLE", Token.DISABLE);
|
||||
|
||||
map.put("ASC", Token.ASC);
|
||||
map.put("BETWEEN", Token.BETWEEN);
|
||||
@@ -61,6 +61,7 @@ public class Keywords {
|
||||
map.put("DROP", Token.DROP);
|
||||
map.put("ELSE", Token.ELSE);
|
||||
map.put("EXPLAIN", Token.EXPLAIN);
|
||||
map.put("EXCEPT", Token.EXCEPT);
|
||||
|
||||
map.put("END", Token.END);
|
||||
map.put("ESCAPE", Token.ESCAPE);
|
||||
@@ -121,18 +122,18 @@ public class Keywords {
|
||||
map.put("WHEN", Token.WHEN);
|
||||
map.put("WHERE", Token.WHERE);
|
||||
map.put("XOR", Token.XOR);
|
||||
|
||||
|
||||
map.put("OVER", Token.OVER);
|
||||
map.put("TO", Token.TO);
|
||||
map.put("USE", Token.USE);
|
||||
|
||||
|
||||
map.put("REPLACE", Token.REPLACE);
|
||||
|
||||
|
||||
map.put("COMMENT", Token.COMMENT);
|
||||
map.put("COMPUTE", Token.COMPUTE);
|
||||
map.put("WITH", Token.WITH);
|
||||
map.put("GRANT", Token.GRANT);
|
||||
|
||||
|
||||
DEFAULT_KEYWORDS = new Keywords(map);
|
||||
}
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@ public class SQLSelectParser extends SQLParser {
|
||||
if (select.getOrderBy() == null) {
|
||||
select.setOrderBy(parseOrderBy());
|
||||
}
|
||||
|
||||
|
||||
if (lexer.token() == Token.HINT) {
|
||||
this.exprParser.parseHints(select.getHints());
|
||||
}
|
||||
@@ -103,6 +103,20 @@ public class SQLSelectParser extends SQLParser {
|
||||
return unionRest(union);
|
||||
}
|
||||
|
||||
if (lexer.token() == Token.EXCEPT) {
|
||||
lexer.nextToken();
|
||||
|
||||
SQLUnionQuery union = new SQLUnionQuery();
|
||||
union.setLeft(selectQuery);
|
||||
|
||||
union.setOperator(SQLUnionOperator.EXCEPT);
|
||||
|
||||
SQLSelectQuery right = this.query();
|
||||
union.setRight(right);
|
||||
|
||||
return union;
|
||||
}
|
||||
|
||||
if (lexer.token() == Token.INTERSECT) {
|
||||
lexer.nextToken();
|
||||
|
||||
@@ -145,7 +159,7 @@ public class SQLSelectParser extends SQLParser {
|
||||
}
|
||||
|
||||
accept(Token.SELECT);
|
||||
|
||||
|
||||
if (lexer.token() == Token.COMMENT) {
|
||||
lexer.nextToken();
|
||||
}
|
||||
|
||||
@@ -73,6 +73,7 @@ public enum Token {
|
||||
|
||||
ALL("ALL"),
|
||||
UNION("UNION"),
|
||||
EXCEPT("EXCEPT"),
|
||||
INTERSECT("INTERSECT"),
|
||||
MINUS("MINUS"),
|
||||
INNER("INNER"),
|
||||
|
||||
Reference in New Issue
Block a user