Skip to content

Commit 340dcaa

Browse files
authored
Merge branch 'master' into teradata_sel
2 parents cfa7e89 + 62bfda7 commit 340dcaa

File tree

5 files changed

+49
-2
lines changed

5 files changed

+49
-2
lines changed

src/main/java/net/sf/jsqlparser/statement/truncate/Truncate.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
public class Truncate implements Statement {
3232

3333
private Table table;
34+
boolean cascade; // to support TRUNCATE TABLE ... CASCADE
3435

3536
@Override
3637
public void accept(StatementVisitor statementVisitor) {
@@ -45,8 +46,19 @@ public void setTable(Table table) {
4546
this.table = table;
4647
}
4748

49+
public boolean getCascade(){
50+
return cascade;
51+
}
52+
53+
public void setCascade(boolean c){
54+
cascade=c;
55+
}
56+
4857
@Override
4958
public String toString() {
59+
if(cascade){
60+
return "TRUNCATE TABLE " + table+" CASCADE";
61+
}
5062
return "TRUNCATE TABLE " + table;
5163
}
5264
}

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,11 @@ public void visit(Select select) {
144144

145145
@Override
146146
public void visit(Truncate truncate) {
147+
buffer.append("TRUNCATE TABLE ");
148+
buffer.append(truncate.getTable());
149+
if(truncate.getCascade()){
150+
buffer.append(" CASCADE");
151+
}
147152
}
148153

149154
@Override

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -979,6 +979,7 @@ String RelObjectNameWithoutValue() :
979979
| tk=<K_INSERT> | tk=<K_INDEX> | tk=<K_PRIMARY> | tk=<K_ENABLE>
980980
| tk=<K_UNSIGNED>
981981
| tk=<K_TEMP> | tk=<K_TEMPORARY> | tk=<K_ISNULL>
982+
| tk=<K_ZONE>
982983
)
983984

984985
{ return tk.image; }
@@ -3448,7 +3449,7 @@ Truncate Truncate():
34483449
}
34493450
{
34503451
<K_TRUNCATE> <K_TABLE>
3451-
table=Table() { truncate.setTable(table); }
3452+
table=Table() { truncate.setTable(table); truncate.setCascade(false); } [ <K_CASCADE> {truncate.setCascade(true);} ]
34523453
{
34533454
return truncate;
34543455
}

src/test/java/net/sf/jsqlparser/statement/select/SelectTest.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1025,6 +1025,13 @@ public void testFunctions() throws JSQLParserException {
10251025
assertTrue(fun.isAllColumns());
10261026
assertStatementCanBeDeparsedAs(select, statement);
10271027
}
1028+
1029+
@Test
1030+
public void testEscapedFunctionsIssue647() throws JSQLParserException {
1031+
assertSqlCanBeParsedAndDeparsed("SELECT {fn test(0)} AS COL");
1032+
//assertSqlCanBeParsedAndDeparsed("SELECT {fn current_timestamp(0)} AS COL");
1033+
assertSqlCanBeParsedAndDeparsed("SELECT {fn concat(a, b)} AS COL");
1034+
}
10281035

10291036
@Test
10301037
public void testWhere() throws JSQLParserException {
@@ -3231,5 +3238,9 @@ public void testSelContraction() throws JSQLParserException {
32313238
Select select = (Select) parserManager.parse(new StringReader(statementSrc));
32323239
assertStatementCanBeDeparsedAs(select, statementTgt);
32333240
}
3234-
3241+
3242+
@Test
3243+
public void testMultiPartNamesIssue643() throws JSQLParserException {
3244+
assertSqlCanBeParsedAndDeparsed("SELECT id, bid, pid, devnum, pointdesc, sysid, zone, sort FROM fault ORDER BY id DESC LIMIT ?, ?");
3245+
}
32353246
}

src/test/java/net/sf/jsqlparser/statement/truncate/TruncateTest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
import java.io.StringReader;
44

5+
import static net.sf.jsqlparser.test.TestUtils.*;
6+
import net.sf.jsqlparser.*;
7+
58
import net.sf.jsqlparser.parser.CCJSqlParserManager;
69
import static org.junit.Assert.assertEquals;
710
import org.junit.Test;
@@ -23,5 +26,20 @@ public void testTruncate() throws Exception {
2326
truncate = (Truncate) parserManager.parse(new StringReader(statement));
2427
assertEquals("mytab", truncate.getTable().getName());
2528
assertEquals(toStringStatement.toUpperCase(), truncate.toString().toUpperCase());
29+
30+
statement = "TRUNCATE TABLE mytab CASCADE";
31+
truncate = (Truncate) parserManager.parse(new StringReader(statement));
32+
assertEquals(statement, truncate.toString());
33+
}
34+
35+
@Test
36+
public void testTruncateDeparse() throws JSQLParserException {
37+
assertSqlCanBeParsedAndDeparsed("TRUNCATE TABLE foo");
2638
}
39+
40+
@Test
41+
public void testTruncateCascadeDeparse() throws JSQLParserException {
42+
assertSqlCanBeParsedAndDeparsed("TRUNCATE TABLE foo CASCADE");
43+
}
44+
2745
}

0 commit comments

Comments
 (0)