File tree Expand file tree Collapse file tree 3 files changed +47
-1
lines changed
java/net/sf/jsqlparser/statement/alter
jjtree/net/sf/jsqlparser/parser
test/java/net/sf/jsqlparser/statement/alter Expand file tree Collapse file tree 3 files changed +47
-1
lines changed Original file line number Diff line number Diff line change @@ -65,10 +65,21 @@ public class AlterExpression {
6565
6666 private boolean hasColumn = false ;
6767
68+
69+ private boolean useBrackets =false ;
70+
6871 public boolean hasColumn () {
6972 return hasColumn ;
7073 }
7174
75+ public boolean useBrackets () {
76+ return useBrackets ;
77+ }
78+
79+ public void useBrackets (boolean useBrackets ) {
80+ this .useBrackets = useBrackets ;
81+ }
82+
7283 public void hasColumn (boolean hasColumn ) {
7384 this .hasColumn = hasColumn ;
7485 }
@@ -382,7 +393,7 @@ public void setUk(boolean uk) {
382393 public String toString () {
383394
384395 StringBuilder b = new StringBuilder ();
385-
396+
386397 if (operation == AlterOperation .UNSPECIFIC ) {
387398 b .append (optionalSpecifier );
388399 } else if (operation == AlterOperation .RENAME_TABLE ) {
@@ -432,7 +443,13 @@ public String toString() {
432443 b .append ("COLUMN " );
433444 }
434445 }
446+ if (useBrackets && colDataTypeList .size () == 1 ){
447+ b .append (" ( " );
448+ }
435449 b .append (PlainSelect .getStringList (colDataTypeList ));
450+ if (useBrackets && colDataTypeList .size () == 1 ){
451+ b .append (" ) " );
452+ }
436453 if (colDataTypeList .size () > 1 ) {
437454 b .append (")" );
438455 }
Original file line number Diff line number Diff line change @@ -5864,6 +5864,20 @@ AlterExpression AlterExpression():
58645864 alterExp.addColDropNotNull( alterExpressionColumnDropNotNull);
58655865 }
58665866 |
5867+ LOOKAHEAD(4) "("
5868+ ( alterExpressionColumnDataType = AlterExpressionColumnDataType() {
5869+ if (alterExp.getOperation()== AlterOperation.ADD ){
5870+ alterExp.addColDataType(alterExpressionColumnDataType);
5871+ } else if(alterExp.getOperation()== AlterOperation.ALTER){
5872+ error_skipto(K_ALTER);
5873+ }else if(alterExp.getOperation()== AlterOperation.MODIFY){
5874+ error_skipto(K_MODIFY);
5875+ }
5876+ }
5877+ (LOOKAHEAD(2) "," alterExpressionColumnDataType = AlterExpressionColumnDataType() { alterExp.addColDataType(alterExpressionColumnDataType); }) *
5878+ )
5879+ ")" {alterExp.useBrackets(true);}
5880+ |
58675881 alterExpressionColumnDropDefault = AlterExpressionColumnDropDefault() {
58685882 alterExp.addColDropDefault( alterExpressionColumnDropDefault);
58695883 }
Original file line number Diff line number Diff line change @@ -65,6 +65,21 @@ public void testAlterTableAddColumn_ColumnKeyWordImplicit() throws JSQLParserExc
6565 assertEquals ("varchar (255)" , colDataTypes .get (0 ).getColDataType ().toString ());
6666 }
6767
68+
69+ @ Test
70+ public void testAlterTableBackBrackets ()throws JSQLParserException {
71+ String sql ="ALTER TABLE tablename add column (field string comment 'aaaaa')" ;
72+ Statement statement = CCJSqlParserUtil .parse (sql );
73+ Alter alter =(Alter ) statement ;
74+ System .out .println (alter .toString ());
75+
76+ String sql2 ="ALTER TABLE tablename add column (field string comment 'aaaaa', field2 string comment 'bbbbb');" ;
77+ Statement statement2 = CCJSqlParserUtil .parse (sql2 );
78+ Alter alter2 =(Alter ) statement2 ;
79+ System .out .println (alter2 .toString ());
80+ }
81+
82+
6883 @ Test
6984 public void testAlterTablePrimaryKey () throws JSQLParserException {
7085 assertSqlCanBeParsedAndDeparsed ("ALTER TABLE animals ADD PRIMARY KEY (id)" );
You can’t perform that action at this time.
0 commit comments