improved odps sql parser.

This commit is contained in:
wenshao
2017-07-17 16:47:03 +08:00
parent 5032b3e21a
commit b52d70d40d
4 changed files with 142 additions and 2 deletions
@@ -179,6 +179,8 @@ public class SQLJoinTableSource extends SQLTableSourceImpl implements SQLReplace
NATURAL_JOIN("NATURAL JOIN"), //
NATURAL_INNER_JOIN("NATURAL INNER JOIN"), //
LEFT_OUTER_JOIN("LEFT JOIN"), //
LEFT_SEMI_JOIN("LEFT SEMI JOIN"), //
LEFT_ANTI_JOIN("LEFT ANTI JOIN"), //
RIGHT_OUTER_JOIN("RIGHT JOIN"), //
FULL_OUTER_JOIN("FULL JOIN"),//
STRAIGHT_JOIN("STRAIGHT_JOIN"), //
@@ -471,12 +471,22 @@ public class SQLSelectParser extends SQLParser {
if (lexer.token() == Token.LEFT) {
lexer.nextToken();
if (lexer.token() == Token.OUTER) {
if (identifierEquals("SEMI")) {
lexer.nextToken();
joinType = SQLJoinTableSource.JoinType.LEFT_SEMI_JOIN;
} else if (identifierEquals("ANTI")) {
lexer.nextToken();
joinType = SQLJoinTableSource.JoinType.LEFT_ANTI_JOIN;
} else if (lexer.token() == Token.OUTER) {
lexer.nextToken();
joinType = SQLJoinTableSource.JoinType.LEFT_OUTER_JOIN;
} else {
joinType = SQLJoinTableSource.JoinType.LEFT_OUTER_JOIN;
}
accept(Token.JOIN);
joinType = SQLJoinTableSource.JoinType.LEFT_OUTER_JOIN;
} else if (lexer.token() == Token.RIGHT) {
lexer.nextToken();
if (lexer.token() == Token.OUTER) {