This is an automated email from the ASF dual-hosted git repository.
lzljs3620320 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/paimon.git
The following commit(s) were added to refs/heads/master by this push:
new 1cf5376b37 [core] enable set table config for ExpirePartitionsAction
(#5639)
1cf5376b37 is described below
commit 1cf5376b376bf23db61eee9b4d5275e7dd01a155
Author: LsomeYeah <[email protected]>
AuthorDate: Tue May 20 19:25:09 2025 +0800
[core] enable set table config for ExpirePartitionsAction (#5639)
---
.../flink/action/ExpirePartitionsAction.java | 2 +
.../action/ExpirePartitionsActionFactory.java | 1 +
.../flink/action/ExpirePartitionsActionITCase.java | 59 ++++++++++++++++++++++
3 files changed, 62 insertions(+)
diff --git
a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/action/ExpirePartitionsAction.java
b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/action/ExpirePartitionsAction.java
index cc98303bd5..a77729119d 100644
---
a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/action/ExpirePartitionsAction.java
+++
b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/action/ExpirePartitionsAction.java
@@ -39,6 +39,7 @@ public class ExpirePartitionsAction extends TableActionBase {
String databaseName,
String tableName,
Map<String, String> catalogConfig,
+ Map<String, String> tableConfig,
String expirationTime,
String timestampFormatter,
String timestampPattern,
@@ -50,6 +51,7 @@ public class ExpirePartitionsAction extends TableActionBase {
"Only FileStoreTable supports expire_partitions
action. The table type is '%s'.",
table.getClass().getName()));
}
+ table = table.copy(tableConfig);
Map<String, String> map = new HashMap<>();
map.put(CoreOptions.PARTITION_EXPIRATION_STRATEGY.key(),
expireStrategy);
map.put(CoreOptions.PARTITION_TIMESTAMP_FORMATTER.key(),
timestampFormatter);
diff --git
a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/action/ExpirePartitionsActionFactory.java
b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/action/ExpirePartitionsActionFactory.java
index 3db3a757d8..52e8e097f2 100644
---
a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/action/ExpirePartitionsActionFactory.java
+++
b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/action/ExpirePartitionsActionFactory.java
@@ -40,6 +40,7 @@ public class ExpirePartitionsActionFactory implements
ActionFactory {
params.getRequired(DATABASE),
params.getRequired(TABLE),
catalogConfigMap(params),
+ optionalConfigMap(params, TABLE_CONF),
params.getRequired(EXPIRATIONTIME),
params.getRequired(TIMESTAMPFORMATTER),
timestampPattern,
diff --git
a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/action/ExpirePartitionsActionITCase.java
b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/action/ExpirePartitionsActionITCase.java
index 9077204c0d..70a5de6355 100644
---
a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/action/ExpirePartitionsActionITCase.java
+++
b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/action/ExpirePartitionsActionITCase.java
@@ -124,6 +124,65 @@ public class ExpirePartitionsActionITCase extends
ActionITCaseBase {
assertThat(actual).isEqualTo(expected);
}
+ @Test
+ public void testExpirePartitionsWithTableConf() throws Exception {
+ FileStoreTable table = prepareTable();
+ // prepare more data
+ writeData(
+ rowData(
+ BinaryString.fromString("3"),
+ BinaryString.fromString("2024-01-01"),
+ BinaryString.fromString("02:00")));
+ writeData(
+ rowData(
+ BinaryString.fromString("4"),
+ BinaryString.fromString("2024-01-02"),
+ BinaryString.fromString("01:00")));
+
+ TableScan.Plan plan = table.newReadBuilder().newScan().plan();
+ List<String> actual = getResult(table.newReadBuilder().newRead(),
plan.splits(), ROW_TYPE);
+ List<String> expected;
+ expected =
+ Arrays.asList(
+ "+I[1, 2024-01-01, 01:00]",
+ "+I[2, 9999-09-20, 02:00]",
+ "+I[3, 2024-01-01, 02:00]",
+ "+I[4, 2024-01-02, 01:00]");
+
+ assertThat(actual).isEqualTo(expected);
+
+ // only expire one partition
+ createAction(
+ ExpirePartitionsAction.class,
+ "expire_partitions",
+ "--warehouse",
+ warehouse,
+ "--database",
+ database,
+ "--table",
+ tableName,
+ "--expiration_time",
+ "1 d",
+ "--timestamp_formatter",
+ "yyyy-MM-dd",
+ "--timestamp_pattern",
+ "$dt",
+ "--table_conf",
+ "partition.expiration-max-num=1")
+ .run();
+
+ plan = table.newReadBuilder().newScan().plan();
+ actual = getResult(table.newReadBuilder().newRead(), plan.splits(),
ROW_TYPE);
+
+ expected =
+ Arrays.asList(
+ "+I[2, 9999-09-20, 02:00]",
+ "+I[3, 2024-01-01, 02:00]",
+ "+I[4, 2024-01-02, 01:00]");
+
+ assertThat(actual).isEqualTo(expected);
+ }
+
private FileStoreTable prepareTable() throws Exception {
init(warehouse);