diff --git a/core/src/main/java/com/alibaba/druid/sql/dialect/odps/parser/OdpsCreateTableParser.java b/core/src/main/java/com/alibaba/druid/sql/dialect/odps/parser/OdpsCreateTableParser.java index 2b7198b3a4..7d06904bdf 100644 --- a/core/src/main/java/com/alibaba/druid/sql/dialect/odps/parser/OdpsCreateTableParser.java +++ b/core/src/main/java/com/alibaba/druid/sql/dialect/odps/parser/OdpsCreateTableParser.java @@ -210,7 +210,7 @@ public class OdpsCreateTableParser extends SQLCreateTableParser { throw new ParserException("expect identifier. " + lexer.info()); } - stmt.getTableElementList().add(column); + stmt.addColumn(column); if (lexer.isKeepComments() && lexer.hasComment()) { column.addAfterComment(lexer.readAndResetComments()); diff --git a/core/src/test/java/com/alibaba/druid/bvt/sql/odps/issues/Issue4992.java b/core/src/test/java/com/alibaba/druid/bvt/sql/odps/issues/Issue4992.java new file mode 100644 index 0000000000..b1c5e1b777 --- /dev/null +++ b/core/src/test/java/com/alibaba/druid/bvt/sql/odps/issues/Issue4992.java @@ -0,0 +1,26 @@ +package com.alibaba.druid.bvt.sql.odps.issues; + +import com.alibaba.druid.DbType; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition; +import com.alibaba.druid.sql.ast.statement.SQLCreateTableStatement; +import org.junit.Test; + +import static org.junit.Assert.*; + +public class Issue4992 { + @Test + public void testInsert() { + String sql = "CREATE TABLE IF NOT EXISTS test_table \n" + + "(\n" + + " user_id STRING COMMENT\"userid\"\n" + + " ,user_features STRING COMMENT\"用户特征\"\n" + + ")\n" + + ";"; + SQLCreateTableStatement stmt = (SQLCreateTableStatement) SQLUtils.parseSingleStatement(sql, DbType.odps); + SQLColumnDefinition column = stmt.getColumn("user_id"); + assertNotNull(column); + assertNotNull(column.getParent()); + assertSame(stmt, column.getParent()); + } +}