Skip to content

Commit f64ad89

Browse files
committed
fixes #510
1 parent 1a77106 commit f64ad89

File tree

4 files changed

+29
-3
lines changed

4 files changed

+29
-3
lines changed

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
package net.sf.jsqlparser.statement.alter;
2323

2424
import java.util.ArrayList;
25+
import java.util.Arrays;
2526
import java.util.Collections;
2627
import java.util.List;
2728

@@ -54,6 +55,7 @@ public class AlterExpression {
5455
private List<String> fkSourceColumns;
5556

5657
private List<ConstraintState> constraints;
58+
private List<String> parameters;
5759

5860
public AlterOperation getOperation() {
5961
return operation;
@@ -182,6 +184,17 @@ public void setConstraints(List<ConstraintState> constraints) {
182184
this.constraints = constraints;
183185
}
184186

187+
public void addParameters(String... params) {
188+
if (parameters == null) {
189+
parameters = new ArrayList<String>();
190+
}
191+
parameters.addAll(Arrays.asList(params));
192+
}
193+
194+
public List<String> getParameters() {
195+
return parameters;
196+
}
197+
185198
@Override
186199
public String toString() {
187200

@@ -225,6 +238,9 @@ public String toString() {
225238
if (getConstraints() != null && !getConstraints().isEmpty()) {
226239
b.append(' ').append(PlainSelect.getStringList(constraints, false, false));
227240
}
241+
if (parameters!=null && !parameters.isEmpty()) {
242+
b.append(' ').append(PlainSelect.getStringList(parameters, false, false));
243+
}
228244

229245
return b.toString();
230246
}

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3250,7 +3250,7 @@ Drop Drop():
32503250
[<K_IF> <K_EXISTS> {drop.setIfExists(true);} ]
32513251

32523252
name = Table() { drop.setName(name); }
3253-
((tk=<S_IDENTIFIER> | tk=<K_CASCADE>) { dropArgs.add(tk.image); })*
3253+
((tk=<S_IDENTIFIER> | tk=<K_CASCADE> | tk=<K_RESTRICT> ) { dropArgs.add(tk.image); })*
32543254

32553255
{
32563256
if (dropArgs.size() > 0)
@@ -3418,10 +3418,12 @@ AlterExpression AlterExpression():
34183418
}
34193419
(
34203420
( <K_COLUMN>
3421-
(tk=<S_IDENTIFIER> | tk=<S_QUOTED_IDENTIFIER>)
3421+
(tk=<S_IDENTIFIER> | tk=<S_QUOTED_IDENTIFIER>)
34223422
{
34233423
alterExp.setColumnName(tk.image);
34243424
}
3425+
[tk=<K_CASCADE> { alterExp.addParameters(tk.image); } ]
3426+
34253427
)
34263428
|
34273429
( <K_CONSTRAINT>

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,5 +240,8 @@ public void testAlterTableAddColumnKeywordTypes() throws JSQLParserException {
240240
assertSqlCanBeParsedAndDeparsed("ALTER TABLE mytable ADD COLUMN col1 interval");
241241
assertSqlCanBeParsedAndDeparsed("ALTER TABLE mytable ADD COLUMN col1 bit varying");
242242
}
243-
243+
244+
public void testDropColumnRestrictIssue510() throws JSQLParserException {
245+
assertSqlCanBeParsedAndDeparsed("ALTER TABLE TABLE1 DROP COLUMN NewColumn CASCADE");
246+
}
244247
}

src/test/java/net/sf/jsqlparser/test/drop/DropTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,9 @@ public void testDrop2() throws JSQLParserException {
4040
public void testDropIfExists() throws JSQLParserException {
4141
assertSqlCanBeParsedAndDeparsed("DROP TABLE IF EXISTS my_table");
4242
}
43+
44+
@Test
45+
public void testDropRestrictIssue510() throws JSQLParserException {
46+
assertSqlCanBeParsedAndDeparsed("DROP TABLE TABLE2 RESTRICT");
47+
}
4348
}

0 commit comments

Comments
 (0)