mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
bugfix: parse error for 'alter table xx comment 'xx''
This commit is contained in:
@@ -2383,7 +2383,14 @@ public class MySqlStatementParser extends SQLStatementParser {
|
||||
item.setCollate(this.exprParser.primary());
|
||||
}
|
||||
stmt.getItems().add(item);
|
||||
} else {
|
||||
} else if (lexer.token() == Token.COMMENT) {
|
||||
lexer.nextToken();
|
||||
if(lexer.token() == Token.EQ) {
|
||||
accept(Token.EQ);
|
||||
}
|
||||
stmt.getItems().add(new MySqlAlterTableOption("COMMENT", '\'' + lexer.stringVal() + '\''));
|
||||
lexer.nextToken();
|
||||
}else {
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
package com.alibaba.druid.bvt.sql.mysql;
|
||||
|
||||
import org.junit.Assert;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import com.alibaba.druid.sql.SQLUtils;
|
||||
@@ -70,4 +71,13 @@ public class MySqlAlterTableTest extends TestCase {
|
||||
Assert.assertEquals("ALTER TABLE `test`.`tb1`\n\tCOLLATE = utf8_general_ci,\n\tPACK_KEYS = PACK ALL,\n\tENGINE = InnoDB", output);
|
||||
}
|
||||
|
||||
public void test_alter_5() throws Exception {
|
||||
String sql = "ALTER TABLE t1 COMMENT '表的注释';";
|
||||
MySqlStatementParser parser = new MySqlStatementParser(sql);
|
||||
SQLStatement stmt = parser.parseStatementList().get(0);
|
||||
parser.match(Token.EOF);
|
||||
String output = SQLUtils.toMySqlString(stmt);
|
||||
Assert.assertEquals("ALTER TABLE t1\n\tCOMMENT = '表的注释'", output);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user