bug fixed for sql parser.

This commit is contained in:
wenshao
2017-07-06 03:07:35 +08:00
parent 717726badd
commit 1e0ce32284
33 changed files with 744 additions and 142 deletions
@@ -42,12 +42,14 @@ public class MySqlCursorDeclareStatement extends MySqlStatementImpl{
}
public void setSelect(SQLSelectStatement select) {
if (select != null) {
select.setParent(this);
}
this.select = select;
}
@Override
public void accept0(MySqlASTVisitor visitor) {
// TODO Auto-generated method stub
if (visitor.visit(this)) {
acceptChild(visitor, select);
}
@@ -3619,6 +3619,7 @@ public class MySqlStatementParser extends SQLStatementParser {
SQLIfStatement.ElseIf elseIf = new SQLIfStatement.ElseIf();
elseIf.setCondition(this.exprParser.expr());
elseIf.setParent(stmt);
accept(Token.THEN);
this.parseStatementList(elseIf.getStatements(), -1, elseIf);
@@ -178,7 +178,9 @@ public class OdpsSelectParser extends SQLSelectParser {
protected SQLTableSource parseLateralView(SQLTableSource tableSource) {
accept(Token.VIEW);
tableSource.setAlias(null);
if ("LATERAL".equalsIgnoreCase(tableSource.getAlias())) {
tableSource.setAlias(null);
}
OdpsLateralViewTableSource lateralViewTabSrc = new OdpsLateralViewTableSource();
lateralViewTabSrc.setTableSource(tableSource);
@@ -58,6 +58,9 @@ public class OracleForStatement extends OracleStatementImpl {
}
public void setRange(SQLExpr range) {
if (range != null) {
range.setParent(this);
}
this.range = range;
}
@@ -740,6 +740,13 @@ public class OracleStatementParser extends SQLStatementParser {
return stmt;
}
public SQLCreateFunctionStatement parseCreateFunction() {
accept(Token.CREATE);
SQLCreateFunctionStatement stmt = (SQLCreateFunctionStatement) parseFunction();
stmt.setCreate(true);
return stmt;
}
public SQLStatement parseFunction() {
SQLCreateFunctionStatement stmt = new SQLCreateFunctionStatement();
stmt.setDbType(dbType);
@@ -893,6 +900,7 @@ public class OracleStatementParser extends SQLStatementParser {
SQLIfStatement.ElseIf elseIf = new SQLIfStatement.ElseIf();
elseIf.setCondition(this.exprParser.expr());
elseIf.setParent(stmt);
accept(Token.THEN);
this.parseStatementList(elseIf.getStatements(), -1, stmt);
@@ -903,6 +911,8 @@ public class OracleStatementParser extends SQLStatementParser {
if (lexer.token() == Token.ELSE) {
lexer.nextToken();
SQLIfStatement.Else elseItem = new SQLIfStatement.Else();
this.parseStatementList(elseItem.getStatements(), -1, elseItem);
stmt.setElseItem(elseItem);
@@ -1865,7 +1865,10 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS
}
x.getIndex().accept(this);
print0(ucase ? " IN " : " in ");
x.getRange().accept(this);
SQLExpr range = x.getRange();
range.accept(this);
if (!all) {
println();
print0(ucase ? "LOOP" : "loop");