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 {
65
65
66
66
private boolean hasColumn = false ;
67
67
68
+
69
+ private boolean useBrackets =false ;
70
+
68
71
public boolean hasColumn () {
69
72
return hasColumn ;
70
73
}
71
74
75
+ public boolean useBrackets () {
76
+ return useBrackets ;
77
+ }
78
+
79
+ public void useBrackets (boolean useBrackets ) {
80
+ this .useBrackets = useBrackets ;
81
+ }
82
+
72
83
public void hasColumn (boolean hasColumn ) {
73
84
this .hasColumn = hasColumn ;
74
85
}
@@ -382,7 +393,7 @@ public void setUk(boolean uk) {
382
393
public String toString () {
383
394
384
395
StringBuilder b = new StringBuilder ();
385
-
396
+
386
397
if (operation == AlterOperation .UNSPECIFIC ) {
387
398
b .append (optionalSpecifier );
388
399
} else if (operation == AlterOperation .RENAME_TABLE ) {
@@ -432,7 +443,13 @@ public String toString() {
432
443
b .append ("COLUMN " );
433
444
}
434
445
}
446
+ if (useBrackets && colDataTypeList .size () == 1 ){
447
+ b .append (" ( " );
448
+ }
435
449
b .append (PlainSelect .getStringList (colDataTypeList ));
450
+ if (useBrackets && colDataTypeList .size () == 1 ){
451
+ b .append (" ) " );
452
+ }
436
453
if (colDataTypeList .size () > 1 ) {
437
454
b .append (")" );
438
455
}
Original file line number Diff line number Diff line change @@ -5864,6 +5864,20 @@ AlterExpression AlterExpression():
5864
5864
alterExp.addColDropNotNull( alterExpressionColumnDropNotNull);
5865
5865
}
5866
5866
|
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
+ |
5867
5881
alterExpressionColumnDropDefault = AlterExpressionColumnDropDefault() {
5868
5882
alterExp.addColDropDefault( alterExpressionColumnDropDefault);
5869
5883
}
Original file line number Diff line number Diff line change @@ -65,6 +65,21 @@ public void testAlterTableAddColumn_ColumnKeyWordImplicit() throws JSQLParserExc
65
65
assertEquals ("varchar (255)" , colDataTypes .get (0 ).getColDataType ().toString ());
66
66
}
67
67
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
+
68
83
@ Test
69
84
public void testAlterTablePrimaryKey () throws JSQLParserException {
70
85
assertSqlCanBeParsedAndDeparsed ("ALTER TABLE animals ADD PRIMARY KEY (id)" );
You can’t perform that action at this time.
0 commit comments