diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlCreateTableParser.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlCreateTableParser.java index f715177f21..d911d989d5 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlCreateTableParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlCreateTableParser.java @@ -820,14 +820,18 @@ public class MySqlCreateTableParser extends SQLCreateTableParser { if (lexer.token() == Token.PRIMARY) { MySqlPrimaryKey pk = this.getExprParser().parsePrimaryKey(); - pk.setName(name); + if (name != null) { + pk.setName(name); + } pk.setHasConstaint(hasConstaint); return (SQLTableConstraint) pk; } if (lexer.token() == Token.UNIQUE) { MySqlUnique uk = this.getExprParser().parseUnique(); - uk.setName(name); + if (name != null) { + uk.setName(name); + } uk.setHasConstaint(hasConstaint); return (SQLTableConstraint) uk; } diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/select/MySqlSelectTest_48_union.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/select/MySqlSelectTest_48_union.java index 0aaebd46cd..d0a2a15aca 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/mysql/select/MySqlSelectTest_48_union.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/select/MySqlSelectTest_48_union.java @@ -154,9 +154,45 @@ public class MySqlSelectTest_48_union extends MysqlTest { { String output = SQLUtils.toMySqlString(stmt, new SQLUtils.FormatOption(true, true, true)); - assertEquals("SELECT student_name, GROUP_CONCAT(DISTINCT test_score ORDER BY test_score DESC SEPARATOR ' ')\n" + - "FROM student\n" + - "GROUP BY student_name;", // + assertEquals("SELECT SUM(hd.paid_amount)\n" + + "FROM (\n" + + "\t(SELECT ?, CAST(a.hosted_ymd AS date) AS hosted_ymd, a.user_id, ?, a.paid_amount\n" + + "\t\t, m.user_id, m.create_date, m.pmcode, n.type_name, n.product_name\n" + + "\t\t, n.acctype_id, n.acctype_name, n.account_name, n.plan\n" + + "\tFROM hive.bdc_dwd.dw_mk_copyright_order a\n" + + "\t\tLEFT JOIN hive.bdc_dwd.dw_mk_chance b\n" + + "\t\tON a.chance_id = b.chance_id\n" + + "\t\t\tAND b.acct_day = ?\n" + + "\t\tLEFT JOIN hive.bdc_dwd.dw_lg_stat_user m\n" + + "\t\tON a.user_id = m.user_id\n" + + "\t\t\tAND m.acct_day = ?\n" + + "\t\tLEFT JOIN hive.bdc_dwd.dw_lg_pmcode n\n" + + "\t\tON m.pmcode = n.id\n" + + "\t\t\tAND n.acct_day = ?\n" + + "\tWHERE a.hosted_ymd BETWEEN ? AND ?\n" + + "\t\tAND b.chance_type_group = ?\n" + + "\t\tAND a.acct_day = ?\n" + + "\tUNION\n" + + "\tSELECT ?, b.paid_date AS hosted_ymd, b.user_id, ?, b.paid_amount\n" + + "\t\t, m.user_id, m.create_date, m.pmcode, n.type_name, n.product_name\n" + + "\t\t, n.acctype_id, n.acctype_name, n.account_name, n.plan\n" + + "\tFROM hive.bdc_dwd.dw_fx_chance a\n" + + "\t\tLEFT JOIN hive.bdc_dwd.dw_fx_chance_order b\n" + + "\t\tON a.chance_id = b.chance_id\n" + + "\t\t\tAND b.acct_day = ?\n" + + "\t\tLEFT JOIN hive.bdc_dwd.dw_lg_stat_user m\n" + + "\t\tON a.user_id = m.user_id\n" + + "\t\t\tAND m.acct_day = ?\n" + + "\t\tLEFT JOIN hive.bdc_dwd.dw_lg_pmcode n\n" + + "\t\tON m.pmcode = n.id\n" + + "\t\t\tAND n.acct_day = ?\n" + + "\tWHERE a.project_id = ?\n" + + "\t\tAND b.paid_amount > ?\n" + + "\t\tAND CAST(b.paid_date AS varchar(10)) >= ?\n" + + "\t\tAND CAST(b.paid_date AS varchar(10)) <= ?\n" + + "\t\tAND b.state = ?\n" + + "\t\tAND a.acct_day = ?)\n" + + ") hd", // output); } }