bug fixed for mysql sql parser. fixed issue #2065

This commit is contained in:
wenshao
2017-10-26 21:24:38 +08:00
parent 4fe1145090
commit 29adf584fb
3 changed files with 92 additions and 8 deletions
@@ -18,7 +18,7 @@ package com.alibaba.druid.sql.ast.statement;
import com.alibaba.druid.sql.ast.SQLExpr;
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
public class SQLCheck extends SQLConstraintImpl implements SQLTableElement {
public class SQLCheck extends SQLConstraintImpl implements SQLTableElement, SQLTableConstraint {
private SQLExpr expr;
@@ -34,11 +34,11 @@ public class SQLCheck extends SQLConstraintImpl implements SQLTableElement {
return expr;
}
public void setExpr(SQLExpr expr) {
if (expr != null) {
expr.setParent(this);
public void setExpr(SQLExpr x) {
if (x != null) {
x.setParent(this);
}
this.expr = expr;
this.expr = x;
}
@Override
@@ -849,7 +849,7 @@ public class MySqlCreateTableParser extends SQLCreateTableParser {
pk.setName(name);
}
pk.setHasConstaint(hasConstaint);
return (SQLTableConstraint) pk;
return pk;
}
if (lexer.token() == Token.UNIQUE) {
@@ -858,14 +858,23 @@ public class MySqlCreateTableParser extends SQLCreateTableParser {
uk.setName(name);
}
uk.setHasConstaint(hasConstaint);
return (SQLTableConstraint) uk;
return uk;
}
if (lexer.token() == Token.FOREIGN) {
MysqlForeignKey fk = this.getExprParser().parseForeignKey();
fk.setName(name);
fk.setHasConstraint(hasConstaint);
return (SQLTableConstraint) fk;
return fk;
}
if (lexer.token() == Token.CHECK) {
lexer.nextToken();
SQLCheck check = new SQLCheck();
check.setName(name);
SQLExpr expr = this.exprParser.expr();
check.setExpr(expr);
return check;
}
throw new ParserException("TODO. " + lexer.info());