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() {
388388 } else if (operation == AlterOperation .DROP_FOREIGN_KEY ) {
389389
390390 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 (')' );
391394 } else {
392395 b .append (operation ).append (" " );
393396
@@ -471,16 +474,18 @@ public String toString() {
471474 } else if (index != null ) {
472475 b .append (index );
473476 }
477+
478+
474479 if (getConstraints () != null && !getConstraints ().isEmpty ()) {
475480 b .append (' ' ).append (PlainSelect .getStringList (constraints , false , false ));
476481 }
477482 if (getUseEqual ()) {
478483 b .append ('=' );
479484 }
485+ }
480486
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 ));
484489 }
485490
486491 return b .toString ();
Original file line number Diff line number Diff line change @@ -5584,9 +5584,30 @@ AlterExpression AlterExpression():
55845584 <K_DROP> { alterExp.setOperation(AlterOperation.DROP); }
55855585 (
55865586 (
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+ )
55905611 )
55915612 |
55925613 (
Original file line number Diff line number Diff line change @@ -94,4 +94,10 @@ public void testDropSchemaIssue855() throws JSQLParserException {
9494 public void testDropSequence () throws JSQLParserException {
9595 assertSqlCanBeParsedAndDeparsed ("DROP SEQUENCE mysequence" );
9696 }
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+ }
97103}
You can’t perform that action at this time.
0 commit comments