bug fixed for sql parser OutputVisitor.

This commit is contained in:
wenshao
2017-01-21 13:17:45 +08:00
parent 55165e2f22
commit a9149f4730
5 changed files with 103 additions and 6 deletions
@@ -33,7 +33,7 @@ public class SQLUnaryExpr extends SQLExprImpl implements Serializable {
public SQLUnaryExpr(SQLUnaryOperator operator, SQLExpr expr){
this.operator = operator;
this.expr = expr;
this.setExpr(expr);
}
public SQLUnaryOperator getOperator() {
@@ -49,6 +49,9 @@ public class SQLUnaryExpr extends SQLExprImpl implements Serializable {
}
public void setExpr(SQLExpr expr) {
if (expr != null) {
expr.setParent(this);
}
this.expr = expr;
}
@@ -826,7 +826,8 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV
@Override
public boolean visit(MySqlIntervalExpr x) {
print0(ucase ? "INTERVAL " : "interval ");
x.getValue().accept(this);
SQLExpr value = x.getValue();
value.accept(this);
print(' ');
print0(ucase ? x.getUnit().name() : x.getUnit().name_lcase);
return false;
@@ -463,10 +463,13 @@ public class SQLExprParser extends SQLParser {
sqlExpr = new SQLUnaryExpr(SQLUnaryOperator.Negative, sqlExpr);
break;
case QUES:
sqlExpr = new SQLUnaryExpr(SQLUnaryOperator.Negative, new SQLVariantRefExpr("?"));
case QUES: {
SQLVariantRefExpr variantRefExpr = new SQLVariantRefExpr("?");
variantRefExpr.setIndex(lexer.nextVarIndex());
sqlExpr = new SQLUnaryExpr(SQLUnaryOperator.Negative, variantRefExpr);
lexer.nextToken();
break;
}
case LPAREN:
lexer.nextToken();
sqlExpr = expr();