Skip to content

Commit fcfdfb7

Browse files
authored
add support for drop column if exists (#1594)
1 parent 191b9fd commit fcfdfb7

File tree

3 files changed

+18
-0
lines changed

3 files changed

+18
-0
lines changed

src/main/java/net/sf/jsqlparser/statement/alter/AlterExpression.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -412,6 +412,9 @@ public String toString() {
412412
if (hasColumn) {
413413
b.append("COLUMN ");
414414
}
415+
if (usingIfExists) {
416+
b.append("IF EXISTS ");
417+
}
415418
if (operation == AlterOperation.RENAME) {
416419
b.append(columnOldName).append(" TO ");
417420
}

src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5991,6 +5991,7 @@ AlterExpression AlterExpression():
59915991
|
59925992
(
59935993
( LOOKAHEAD(2) <K_COLUMN> { alterExp.hasColumn(true); } )?
5994+
[<K_IF> <K_EXISTS> { alterExp.setUsingIfExists(true); } ]
59945995
(tk=<S_IDENTIFIER> | tk=<S_QUOTED_IDENTIFIER>) { alterExp.setColumnName(tk.image); }
59955996

59965997
[ "INVALIDATE" { alterExp.addParameters("INVALIDATE"); } ]

src/test/java/net/sf/jsqlparser/statement/alter/AlterTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -789,4 +789,18 @@ public void testAlterTableChangeColumnDropDefault() throws JSQLParserException {
789789
assertSqlCanBeParsedAndDeparsed("ALTER TABLE a MODIFY (COLUMN b DROP DEFAULT, COLUMN b DROP NOT NULL)", true);
790790
}
791791

792+
@Test
793+
public void testAlterTableDropColumnIfExists() throws JSQLParserException {
794+
assertSqlCanBeParsedAndDeparsed("ALTER TABLE test DROP COLUMN IF EXISTS name");
795+
}
796+
797+
@Test
798+
public void testAlterTableDropMultipleColumnsIfExists() throws JSQLParserException {
799+
assertSqlCanBeParsedAndDeparsed("ALTER TABLE test DROP COLUMN IF EXISTS name, DROP COLUMN IF EXISTS surname");
800+
}
801+
802+
@Test
803+
public void testAlterTableDropMultipleColumnsIfExistsWithParams() throws JSQLParserException {
804+
assertSqlCanBeParsedAndDeparsed("ALTER TABLE test DROP COLUMN IF EXISTS name CASCADE, DROP COLUMN IF EXISTS surname CASCADE");
805+
}
792806
}

0 commit comments

Comments
 (0)