mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
improved odps sql parser. support change column. issue #1455
This commit is contained in:
@@ -881,6 +881,22 @@ public class SQLStatementParser extends SQLParser {
|
||||
} else {
|
||||
throw new ParserException("TODO " + lexer.token() + " " + lexer.stringVal());
|
||||
}
|
||||
} else if (identifierEquals("CHANGE")) {
|
||||
lexer.nextToken();
|
||||
accept(Token.COLUMN);
|
||||
SQLName columnName = this.exprParser.name();
|
||||
accept(Token.COMMENT);
|
||||
SQLExpr comment = this.exprParser.primary();
|
||||
|
||||
SQLColumnDefinition columnDefinition = new SQLColumnDefinition();
|
||||
columnDefinition.setName(columnName);
|
||||
columnDefinition.setComment(comment);
|
||||
|
||||
SQLAlterTableAlterColumn changeColumn = new SQLAlterTableAlterColumn();
|
||||
|
||||
changeColumn.setColumn(columnDefinition);
|
||||
|
||||
stmt.addItem(changeColumn);
|
||||
} else if (lexer.token() == Token.WITH) {
|
||||
lexer.nextToken();
|
||||
acceptIdentifier("NOCHECK");
|
||||
|
||||
@@ -1637,9 +1637,13 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Paramet
|
||||
return false;
|
||||
}
|
||||
|
||||
protected boolean isOdps() {
|
||||
return JdbcConstants.ODPS.equals(dbType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(SQLAlterTableAddColumn x) {
|
||||
boolean odps = JdbcConstants.ODPS.equals(dbType);
|
||||
boolean odps = isOdps();
|
||||
if (odps) {
|
||||
print0(ucase ? "ADD COLUMNS (" : "add columns (");
|
||||
} else {
|
||||
@@ -1962,7 +1966,12 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Paramet
|
||||
|
||||
@Override
|
||||
public boolean visit(SQLAlterTableAlterColumn x) {
|
||||
print0(ucase ? "ALTER COLUMN " : "alter column ");
|
||||
boolean odps = isOdps();
|
||||
if (odps) {
|
||||
print0(ucase ? "CHANGE COLUMN " : "change column ");
|
||||
} else {
|
||||
print0(ucase ? "ALTER COLUMN " : "alter column ");
|
||||
}
|
||||
x.getColumn().accept(this);
|
||||
|
||||
if (x.isSetNotNull()) { // postgresql
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@ import org.junit.Assert;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class OdpsSelectTest19 extends TestCase {
|
||||
public class OdpsAlterTableAddColumnsTest extends TestCase {
|
||||
|
||||
public void test_select() throws Exception {
|
||||
String sql = "alter table adl_smeta_column_indi_rule_relation_sdt add columns (rule_level string);";//
|
||||
Reference in New Issue
Block a user