add support UNIQUE

This commit is contained in:
wenshao
2013-07-15 16:48:34 +08:00
parent 2d7376bb06
commit fcc50128a7
8 changed files with 181 additions and 13 deletions
@@ -18,6 +18,7 @@ package com.alibaba.druid.sql.parser;
import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition;
import com.alibaba.druid.sql.ast.statement.SQLCreateTableStatement;
import com.alibaba.druid.sql.ast.statement.SQLPrimaryKey;
import com.alibaba.druid.sql.ast.statement.SQLUnique;
public class SQLCreateTableParser extends SQLDDLParser {
@@ -73,6 +74,9 @@ public class SQLCreateTableParser extends SQLDDLParser {
} else if (lexer.token() == Token.PRIMARY) {
SQLPrimaryKey primaryKey = exprParser.parsePrimaryKey();
createTable.getTableElementList().add(primaryKey);
} else if (lexer.token == Token.UNIQUE) {
SQLUnique unique = exprParser.parseUnique();
createTable.getTableElementList().add(unique);
} else {
throw new ParserException("TODO " + lexer.token());
}
@@ -68,6 +68,7 @@ import com.alibaba.druid.sql.ast.statement.SQLColumnPrimaryKey;
import com.alibaba.druid.sql.ast.statement.SQLPrimaryKey;
import com.alibaba.druid.sql.ast.statement.SQLSelect;
import com.alibaba.druid.sql.ast.statement.SQLSelectOrderByItem;
import com.alibaba.druid.sql.ast.statement.SQLUnique;
public class SQLExprParser extends SQLParser {
@@ -1297,6 +1298,17 @@ public class SQLExprParser extends SQLParser {
throw new ParserException("TODO");
}
public SQLUnique parseUnique() {
accept(Token.UNIQUE);
SQLUnique unique = new SQLUnique();
accept(Token.LPAREN);
exprList(unique.getColumns());
accept(Token.RPAREN);
return unique;
}
public SQLAssignItem parseAssignItem() {
SQLAssignItem item = new SQLAssignItem();