diff --git a/src/main/java/com/alibaba/druid/sql/parser/SQLExprParser.java b/src/main/java/com/alibaba/druid/sql/parser/SQLExprParser.java index 2832aaaa85..b604f461dc 100644 --- a/src/main/java/com/alibaba/druid/sql/parser/SQLExprParser.java +++ b/src/main/java/com/alibaba/druid/sql/parser/SQLExprParser.java @@ -1327,6 +1327,7 @@ public class SQLExprParser extends SQLParser { case SCHEMA: case INTERVAL: case EXPLAIN: + case SET: identName = lexer.stringVal(); lexer.nextToken(); break; diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/createTable/MySqlCreateTableTest92.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/createTable/MySqlCreateTableTest92.java new file mode 100644 index 0000000000..1a28870d56 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/createTable/MySqlCreateTableTest92.java @@ -0,0 +1,29 @@ +package com.alibaba.druid.bvt.sql.mysql.createTable; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlCreateTableStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import org.junit.Assert; + +import java.util.List; + +public class MySqlCreateTableTest92 extends MysqlTest { + + public void test_0() throws Exception { + String sql = "CREATE TABLE `test` (\n" + + " `id` bigint(20) unsigned zerofill NOT NULL AUTO_INCREMENT COMMENT 'id',\n" + + " `c_set` set('a','b','c') COMMENT 'set',\n" + " PRIMARY KEY (`id`)\n" + + ") ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='10000000';"; + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List statementList = parser.parseStatementList(); + MySqlCreateTableStatement statemen = (MySqlCreateTableStatement)statementList.get(0); + + Assert.assertEquals(1, statementList.size()); + Assert.assertEquals(3, statemen.getTableElementList().size()); + Assert.assertEquals("`c_set` set('a', 'b', 'c') COMMENT 'set'", SQLUtils.toMySqlString(statemen.getTableElementList().get(1))); + + } +} \ No newline at end of file