File tree Expand file tree Collapse file tree 3 files changed +38
-6
lines changed
java/net/sf/jsqlparser/statement/alter
jjtree/net/sf/jsqlparser/parser
test/java/net/sf/jsqlparser/statement/drop Expand file tree Collapse file tree 3 files changed +38
-6
lines changed Original file line number Diff line number Diff line change @@ -388,6 +388,9 @@ public String toString() {
388
388
} else if (operation == AlterOperation .DROP_FOREIGN_KEY ) {
389
389
390
390
b .append ("DROP FOREIGN KEY (" ).append (PlainSelect .getStringList (pkColumns )).append (')' );
391
+ } else if (operation == AlterOperation .DROP && columnName ==null && pkColumns !=null && pkColumns .size ()>0 ) {
392
+ // Oracle Multi Column Drop
393
+ b .append ("DROP (" ).append (PlainSelect .getStringList (pkColumns )).append (')' );
391
394
} else {
392
395
b .append (operation ).append (" " );
393
396
@@ -471,16 +474,18 @@ public String toString() {
471
474
} else if (index != null ) {
472
475
b .append (index );
473
476
}
477
+
478
+
474
479
if (getConstraints () != null && !getConstraints ().isEmpty ()) {
475
480
b .append (' ' ).append (PlainSelect .getStringList (constraints , false , false ));
476
481
}
477
482
if (getUseEqual ()) {
478
483
b .append ('=' );
479
484
}
485
+ }
480
486
481
- if (parameters != null && !parameters .isEmpty ()) {
482
- b .append (' ' ).append (PlainSelect .getStringList (parameters , false , false ));
483
- }
487
+ if (parameters != null && !parameters .isEmpty ()) {
488
+ b .append (' ' ).append (PlainSelect .getStringList (parameters , false , false ));
484
489
}
485
490
486
491
return b .toString ();
Original file line number Diff line number Diff line change @@ -5584,9 +5584,30 @@ AlterExpression AlterExpression():
5584
5584
<K_DROP> { alterExp.setOperation(AlterOperation.DROP); }
5585
5585
(
5586
5586
(
5587
- ( LOOKAHEAD(2) <K_COLUMN> { alterExp.hasColumn(true); } )?
5588
- (tk=<S_IDENTIFIER> | tk=<S_QUOTED_IDENTIFIER>) { alterExp.setColumnName(tk.image); }
5589
- [tk=<K_CASCADE> { alterExp.addParameters(tk.image); } ]
5587
+ (
5588
+ // we use the PK Columns Field instead of the Column Field
5589
+ // for holding multiple DROP Columns
5590
+ columnNames=ColumnsNamesList() { alterExp.setPkColumns(columnNames); columnNames = null; }
5591
+
5592
+ [ "INVALIDATE" { alterExp.addParameters("INVALIDATE"); } ]
5593
+
5594
+ [
5595
+ "CASCADE" { alterExp.addParameters("CASCADE"); }
5596
+ [ "CONSTRAINTS" { alterExp.addParameters("CONSTRAINTS"); } ]
5597
+ ]
5598
+ )
5599
+ |
5600
+ (
5601
+ ( LOOKAHEAD(2) <K_COLUMN> { alterExp.hasColumn(true); } )?
5602
+ (tk=<S_IDENTIFIER> | tk=<S_QUOTED_IDENTIFIER>) { alterExp.setColumnName(tk.image); }
5603
+
5604
+ [ "INVALIDATE" { alterExp.addParameters("INVALIDATE"); } ]
5605
+
5606
+ [
5607
+ "CASCADE" { alterExp.addParameters("CASCADE"); }
5608
+ [ "CONSTRAINTS" { alterExp.addParameters("CONSTRAINTS"); } ]
5609
+ ]
5610
+ )
5590
5611
)
5591
5612
|
5592
5613
(
Original file line number Diff line number Diff line change @@ -94,4 +94,10 @@ public void testDropSchemaIssue855() throws JSQLParserException {
94
94
public void testDropSequence () throws JSQLParserException {
95
95
assertSqlCanBeParsedAndDeparsed ("DROP SEQUENCE mysequence" );
96
96
}
97
+
98
+ @ Test
99
+ public void testOracleMultiColumnDrop () throws JSQLParserException {
100
+ //assertSqlCanBeParsedAndDeparsed("ALTER TABLE foo DROP (bar, baz)");
101
+ assertSqlCanBeParsedAndDeparsed ("ALTER TABLE foo DROP (bar, baz) CASCADE" );
102
+ }
97
103
}
You can’t perform that action at this time.
0 commit comments