Skip to content

Commit 5a10801

Browse files
committed
refactor truncate partition
1 parent dd70254 commit 5a10801

File tree

3 files changed

+29
-18
lines changed

3 files changed

+29
-18
lines changed

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

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,6 @@ public void setPartitions(List<String> partitions) {
7272

7373
private boolean useBrackets = false;
7474

75-
private String truncatePartitionName = null;
76-
7775
private boolean useIfNotExists = false;
7876

7977
public Index getOldIndex() {
@@ -442,19 +440,6 @@ public void setUk(boolean uk) {
442440
this.uk = uk;
443441
}
444442

445-
public String getTruncatePartitionName() {
446-
return truncatePartitionName;
447-
}
448-
449-
public void setTruncatePartitionName(String truncatePartitionName) {
450-
this.truncatePartitionName = truncatePartitionName;
451-
}
452-
453-
public AlterExpression withTruncatePartitionName(String truncatePartitionName) {
454-
this.truncatePartitionName = truncatePartitionName;
455-
return this;
456-
}
457-
458443
public boolean isUseIfNotExists() {
459444
return useIfNotExists;
460445
}
@@ -508,8 +493,8 @@ public String toString() {
508493
// Oracle Multi Column Drop
509494
b.append("DROP (").append(PlainSelect.getStringList(pkColumns)).append(')');
510495
} else if (operation == AlterOperation.TRUNCATE_PARTITION
511-
&& truncatePartitionName != null) {
512-
b.append("TRUNCATE PARTITION ").append(truncatePartitionName);
496+
&& partitions != null) {
497+
b.append("TRUNCATE PARTITION ").append(PlainSelect.getStringList(partitions));
513498
} else {
514499
if (operation == AlterOperation.COMMENT_WITH_EQUAL_SIGN) {
515500
b.append("COMMENT =").append(" ");

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7436,7 +7436,10 @@ AlterExpression AlterExpression():
74367436
}
74377437
)
74387438
|
7439-
LOOKAHEAD(2) <K_TRUNCATE> <K_PARTITION> { alterExp.setOperation(AlterOperation.TRUNCATE_PARTITION); } truncatePartitionName = RelObjectName() { alterExp.setTruncatePartitionName(truncatePartitionName); }
7439+
LOOKAHEAD(2) <K_TRUNCATE> <K_PARTITION> { alterExp.setOperation(AlterOperation.TRUNCATE_PARTITION); }
7440+
partitions=PartitionNamesList() {
7441+
alterExp.setPartitions(partitions);
7442+
}
74407443
|
74417444
tokens = captureRest() {
74427445
alterExp.setOperation(AlterOperation.UNSPECIFIC);

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

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1252,4 +1252,27 @@ public void testIssue2106AlterTableDropPartition() throws JSQLParserException {
12521252
assertEquals("p202009", partitionNames.get(2));
12531253
assertEquals("p202010", partitionNames.get(3));
12541254
}
1255+
1256+
@Test
1257+
public void testIssue2106AlterTableTruncatePartition() throws JSQLParserException {
1258+
String sql =
1259+
"ALTER TABLE dkpg_payments TRUNCATE PARTITION p201701, p201707, p201801, p201807";
1260+
Statement stmt = CCJSqlParserUtil.parse(sql);
1261+
assertTrue(stmt instanceof Alter);
1262+
Alter alter = (Alter) stmt;
1263+
List<AlterExpression> alterExpressions = alter.getAlterExpressions();
1264+
assertNotNull(alterExpressions);
1265+
assertEquals(1, alterExpressions.size());
1266+
1267+
AlterExpression partitionExp = alterExpressions.get(0);
1268+
assertEquals(AlterOperation.TRUNCATE_PARTITION, partitionExp.getOperation());
1269+
List<String> partitionNames = partitionExp.getPartitions();
1270+
assertNotNull(partitionNames);
1271+
assertEquals(4, partitionNames.size());
1272+
1273+
assertEquals("p201701", partitionNames.get(0));
1274+
assertEquals("p201707", partitionNames.get(1));
1275+
assertEquals("p201801", partitionNames.get(2));
1276+
assertEquals("p201807", partitionNames.get(3));
1277+
}
12551278
}

0 commit comments

Comments
 (0)