Skip to content

Commit f01bf42

Browse files
feat: DROP TEMPORARY TABLE ...
fixes #1712
1 parent dcd39e6 commit f01bf42

7 files changed

Lines changed: 37 additions & 5 deletions

File tree

src/main/java/net/sf/jsqlparser/statement/drop/Drop.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ public class Drop implements Statement {
2929
private Map<String, List<String>> typeToParameters = new HashMap<>();
3030
private boolean ifExists = false;
3131

32+
private boolean isUsingTemporary;
33+
3234
@Override
3335
public void accept(StatementVisitor statementVisitor) {
3436
statementVisitor.visit(this);
@@ -66,6 +68,19 @@ public void setIfExists(boolean ifExists) {
6668
this.ifExists = ifExists;
6769
}
6870

71+
public boolean isUsingTemporary() {
72+
return isUsingTemporary;
73+
}
74+
75+
public void setUsingTemporary(boolean useTemporary) {
76+
this.isUsingTemporary=useTemporary;
77+
}
78+
79+
public Drop withUsingTemporary(boolean useTemporary) {
80+
setUsingTemporary(useTemporary);
81+
return this;
82+
}
83+
6984
public Map<String, List<String>> getTypeToParameters() {
7085
return typeToParameters;
7186
}
@@ -76,7 +91,7 @@ public void setTypeToParameters(Map<String, List<String>> typeToParameters) {
7691

7792
@Override
7893
public String toString() {
79-
String sql = "DROP " + type + " "
94+
String sql = "DROP " + ( isUsingTemporary? "TEMPORARY " : "") + type + " "
8095
+ (ifExists ? "IF EXISTS " : "") + name.toString();
8196

8297
if (type.equals("FUNCTION")) {

src/main/java/net/sf/jsqlparser/util/deparser/DropDeParser.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ public DropDeParser(StringBuilder buffer) {
2121
@Override
2222
public void deParse(Drop drop) {
2323
buffer.append("DROP ");
24+
if (drop.isUsingTemporary()) {
25+
buffer.append("TEMPORARY ");
26+
}
2427
buffer.append(drop.getType());
2528
if (drop.isIfExists()) {
2629
buffer.append(" IF EXISTS");

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5754,13 +5754,16 @@ Drop Drop():
57545754
Table name;
57555755
List<String> dropArgs = new ArrayList<String>();
57565756
List<String> funcArgs = null;
5757+
boolean useTemporary = false;
57575758
}
57585759
{
57595760
<K_DROP>
57605761
(
57615762
tk=<S_IDENTIFIER>
57625763
|
5763-
tk=<K_TABLE>
5764+
(
5765+
[ <K_TEMPORARY> {useTemporary=true;} ] tk=<K_TABLE>
5766+
)
57645767
|
57655768
tk=<K_INDEX>
57665769
|
@@ -5788,6 +5791,8 @@ Drop Drop():
57885791
drop.getTypeToParameters().put("FUNCTION", funcArgs);
57895792
}
57905793

5794+
drop.setUsingTemporary(useTemporary);
5795+
57915796
return drop;
57925797
}
57935798
}

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,4 +127,10 @@ public void testDropFunctionWithNameAndType() throws JSQLParserException {
127127
public void testDropFunctionWithNameAndParameterizedType() throws JSQLParserException {
128128
assertSqlCanBeParsedAndDeparsed("DROP FUNCTION myFunc(amount integer, name varchar(255))");
129129
}
130+
131+
@Test
132+
void dropTemporaryTableTestIssue1712() throws JSQLParserException {
133+
String sqlStr="drop temporary table if exists tmp_MwYT8N0z";
134+
assertSqlCanBeParsedAndDeparsed(sqlStr, true);
135+
}
130136
}

src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/insert01.sql

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,5 @@ insert
1414
into t2 ( x, y ) values ( s.nextval, created )
1515
select object_id, created from all_objects
1616

17-
--@FAILURE: Encountered unexpected token: "when" "WHEN" recorded first on Aug 3, 2021, 7:20:08 AM
17+
--@FAILURE: Encountered unexpected token: "when" "WHEN" recorded first on Aug 3, 2021, 7:20:08 AM
18+
--@FAILURE: Encountered unexpected token: "insert" "INSERT" recorded first on 11 Jan 2023, 21:07:10

src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/insert03.sql

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,5 @@ else
2323
values (empno,ename,job,mgr,sal,deptno)
2424
select * from emp
2525

26-
--@FAILURE: Encountered unexpected token: "when" "WHEN" recorded first on Aug 3, 2021, 7:20:08 AM
26+
--@FAILURE: Encountered unexpected token: "when" "WHEN" recorded first on Aug 3, 2021, 7:20:08 AM
27+
--@FAILURE: Encountered unexpected token: "insert" "INSERT" recorded first on 11 Jan 2023, 21:07:10

src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/numbers01.sql

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,5 @@ select 25
3232
from dual
3333

3434

35-
--@FAILURE: Encountered unexpected token: "d" <S_IDENTIFIER> recorded first on Aug 3, 2021, 7:20:08 AM
35+
--@FAILURE: Encountered unexpected token: "d" <S_IDENTIFIER> recorded first on Aug 3, 2021, 7:20:08 AM
36+
--@FAILURE: select 25,+6.34,0.5,25e-03,-1,25f,+6.34 f,0.5 d,-1d,1.,.5,(sysdate-1d),sysdate-1m,sysdate-1dm,1.-+.5,1.+.5,1.+.5 d,1.+.5 dm,1. d,1. m,.5 m,.5 dm from dual recorded first on 11 Jan 2023, 21:07:10

0 commit comments

Comments
 (0)