File tree Expand file tree Collapse file tree
main/jjtree/net/sf/jsqlparser/parser
test/java/net/sf/jsqlparser/statement/alter Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -13306,20 +13306,30 @@ AlterExpression AlterExpressionAddAlterModify():
1330613306 LOOKAHEAD(3) AlterExpressionColumnChanges(alterExp)
1330713307 |
1330813308 (
13309- <K_UNIQUE>
13309+ <K_UNIQUE> { index = new Index().withType("UNIQUE"); }
1331013310 (
1331113311 (
13312- <K_KEY> { alterExp.setUk(true); }
13313- | <K_INDEX> { alterExp.setUk(false); }
13312+ tk2= <K_KEY> { alterExp.setUk(true); }
13313+ | tk2= <K_INDEX> { alterExp.setUk(false); }
1331413314 )
13315- [ (tk=<S_IDENTIFIER> | tk=<S_QUOTED_IDENTIFIER>) { alterExp.setUkName(tk.image); } ]
13315+ [ (tk=<S_IDENTIFIER> | tk=<S_QUOTED_IDENTIFIER>) {
13316+ sk3 = tk.image;
13317+ alterExp.setUkName(sk3);
13318+ } ]
1331613319 |
1331713320 (tk=<S_IDENTIFIER> | tk=<S_QUOTED_IDENTIFIER>) {
13321+ sk3 = tk.image;
1331813322 alterExp.setUkTypeSpecified(false);
13319- alterExp.setUkName(tk.image );
13323+ alterExp.setUkName(sk3 );
1332013324 }
1332113325 )?
13322- columnNames=ColumnsNamesList() { alterExp.setUkColumns(columnNames); }
13326+ columnNames=ColumnsNamesList() {
13327+ alterExp.setUkColumns(columnNames);
13328+ index.withIndexKeyword(tk2 != null ? tk2.image : null)
13329+ .withName(sk3)
13330+ .withColumnsNames(columnNames);
13331+ alterExp.setIndex(index);
13332+ }
1332313333 [
1332413334 AlterExpressionUsingIndex(alterExp)
1332513335 ]
Original file line number Diff line number Diff line change @@ -598,6 +598,28 @@ public void testAlterTableDropAndAddUniqueIndexWithAscendingColumns() throws Exc
598598 result .toString ());
599599 }
600600
601+ @ Test
602+ public void testAlterTableAddUniqueIndexWithCommentIssue2503 () throws Exception {
603+ String sql = "ALTER TABLE `wxp_dm`.`xqgl_req_report` "
604+ + "ADD UNIQUE INDEX `index2` (`report_name` ASC) USING BTREE COMMENT '唯一索引'" ;
605+
606+ Alter alter = (Alter ) assertSqlCanBeParsedAndDeparsed (sql );
607+ AlterExpression alterExpression = alter .getAlterExpressions ().get (0 );
608+ Index index = alterExpression .getIndex ();
609+
610+ assertNotNull (index );
611+ assertEquals ("UNIQUE" , index .getType ());
612+ assertEquals ("INDEX" , index .getIndexKeyword ());
613+ assertEquals ("`index2`" , index .getName ());
614+ assertEquals (List .of ("`report_name` ASC" ), index .getColumnsNames ());
615+ assertEquals ("'唯一索引'" , index .getCommentText ());
616+
617+ // Keep the legacy fields populated for existing consumers.
618+ assertEquals ("`index2`" , alterExpression .getUkName ());
619+ assertEquals (List .of ("`report_name` ASC" ), alterExpression .getUkColumns ());
620+ assertEquals (List .of ("USING" , "BTREE" ), alterExpression .getParameters ());
621+ }
622+
601623 @ Test
602624 public void testIssue259 () throws JSQLParserException {
603625 assertSqlCanBeParsedAndDeparsed (
You can’t perform that action at this time.
0 commit comments