mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
improve ddl parser
This commit is contained in:
+1
-1
@@ -40,7 +40,7 @@ public class MySqlAlterTableChangeColumn extends MySqlObjectImpl implements SQLA
|
||||
if (visitor.visit(this)) {
|
||||
acceptChild(visitor, columnName);
|
||||
acceptChild(visitor, newColumnDefinition);
|
||||
|
||||
|
||||
acceptChild(visitor, firstColumn);
|
||||
acceptChild(visitor, afterColumn);
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
package com.alibaba.druid.sql.dialect.mysql.parser;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLName;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLCheck;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLCreateTableStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLSelect;
|
||||
@@ -135,6 +136,13 @@ public class MySqlCreateTableParser extends SQLCreateTableParser {
|
||||
accept(Token.RPAREN);
|
||||
|
||||
stmt.getTableElementList().add(fk);
|
||||
} else if (lexer.token() == Token.CHECK) {
|
||||
lexer.nextToken();
|
||||
SQLCheck check = new SQLCheck();
|
||||
accept(Token.LPAREN);
|
||||
check.setExpr(this.exprParser.expr());
|
||||
accept(Token.RPAREN);
|
||||
stmt.getTableElementList().add(check);
|
||||
}
|
||||
|
||||
if (!(lexer.token() == (Token.COMMA))) {
|
||||
|
||||
@@ -307,6 +307,10 @@ public class MySqlStatementParser extends SQLStatementParser {
|
||||
if (identifierEquals(USER)) {
|
||||
return parseCreateUser();
|
||||
}
|
||||
|
||||
if (lexer.token() == Token.VIEW) {
|
||||
return parseCreateView();
|
||||
}
|
||||
|
||||
throw new ParserException("TODO " + lexer.token());
|
||||
}
|
||||
|
||||
@@ -21,6 +21,8 @@ import com.alibaba.druid.sql.ast.SQLName;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddColumn;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableItem;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLCreateTableStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLDropTableStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLExprTableSource;
|
||||
@@ -1146,6 +1148,11 @@ public class MySqlSchemaStatVisitor extends SchemaStatVisitor implements MySqlAS
|
||||
|
||||
@Override
|
||||
public boolean visit(MySqlAlterTableChangeColumn x) {
|
||||
SQLAlterTableStatement stmt = (SQLAlterTableStatement) x.getParent();
|
||||
String table = stmt.getName().toString();
|
||||
|
||||
String columnName = x.getColumnName().toString();
|
||||
addColumn(table, columnName);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user