diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlStatementParser.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlStatementParser.java index ecb0bc2899..1ac4228695 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlStatementParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlStatementParser.java @@ -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; } diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlAlterTableTest.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlAlterTableTest.java index bad21e1d0c..1da6b5ea40 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlAlterTableTest.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlAlterTableTest.java @@ -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); + } + }