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 @@ -13495,20 +13495,30 @@ AlterExpression AlterExpressionAddAlterModify():
1349513495 LOOKAHEAD(3) AlterExpressionColumnChanges(alterExp)
1349613496 |
1349713497 (
13498- <K_UNIQUE>
13498+ <K_UNIQUE> { index = new Index().withType("UNIQUE"); }
1349913499 (
1350013500 (
13501- <K_KEY> { alterExp.setUk(true); }
13502- | <K_INDEX> { alterExp.setUk(false); }
13501+ tk2= <K_KEY> { alterExp.setUk(true); }
13502+ | tk2= <K_INDEX> { alterExp.setUk(false); }
1350313503 )
13504- [ (tk=<S_IDENTIFIER> | tk=<S_QUOTED_IDENTIFIER>) { alterExp.setUkName(tk.image); } ]
13504+ [ (tk=<S_IDENTIFIER> | tk=<S_QUOTED_IDENTIFIER>) {
13505+ sk3 = tk.image;
13506+ alterExp.setUkName(sk3);
13507+ } ]
1350513508 |
1350613509 (tk=<S_IDENTIFIER> | tk=<S_QUOTED_IDENTIFIER>) {
13510+ sk3 = tk.image;
1350713511 alterExp.setUkTypeSpecified(false);
13508- alterExp.setUkName(tk.image );
13512+ alterExp.setUkName(sk3 );
1350913513 }
1351013514 )?
13511- columnNames=ColumnsNamesList() { alterExp.setUkColumns(columnNames); }
13515+ columnNames=ColumnsNamesList() {
13516+ alterExp.setUkColumns(columnNames);
13517+ index.withIndexKeyword(tk2 != null ? tk2.image : null)
13518+ .withName(sk3)
13519+ .withColumnsNames(columnNames);
13520+ alterExp.setIndex(index);
13521+ }
1351213522 [
1351313523 AlterExpressionUsingIndex(alterExp)
1351413524 ]
Original file line number Diff line number Diff line change @@ -600,6 +600,28 @@ public void testAlterTableDropAndAddUniqueIndexWithAscendingColumns() throws Exc
600600 result .toString ());
601601 }
602602
603+ @ Test
604+ public void testAlterTableAddUniqueIndexWithCommentIssue2503 () throws Exception {
605+ String sql = "ALTER TABLE `wxp_dm`.`xqgl_req_report` "
606+ + "ADD UNIQUE INDEX `index2` (`report_name` ASC) USING BTREE COMMENT '唯一索引'" ;
607+
608+ Alter alter = (Alter ) assertSqlCanBeParsedAndDeparsed (sql );
609+ AlterExpression alterExpression = alter .getAlterExpressions ().get (0 );
610+ Index index = alterExpression .getIndex ();
611+
612+ assertNotNull (index );
613+ assertEquals ("UNIQUE" , index .getType ());
614+ assertEquals ("INDEX" , index .getIndexKeyword ());
615+ assertEquals ("`index2`" , index .getName ());
616+ assertEquals (List .of ("`report_name` ASC" ), index .getColumnsNames ());
617+ assertEquals ("'唯一索引'" , index .getCommentText ());
618+
619+ // Keep the legacy fields populated for existing consumers.
620+ assertEquals ("`index2`" , alterExpression .getUkName ());
621+ assertEquals (List .of ("`report_name` ASC" ), alterExpression .getUkColumns ());
622+ assertEquals (List .of ("USING" , "BTREE" ), alterExpression .getParameters ());
623+ }
624+
603625 @ Test
604626 public void testIssue259 () throws JSQLParserException {
605627 assertSqlCanBeParsedAndDeparsed (
You can’t perform that action at this time.
0 commit comments