From d11718db88c92c912c1dd2d0a6b549a229f477e7 Mon Sep 17 00:00:00 2001 From: zhoulii Date: Mon, 29 Dec 2025 15:28:25 +0800 Subject: [PATCH] [flink] Fix that show partitions statements may not work for dv table. --- .../org/apache/paimon/flink/FlinkCatalog.java | 5 +++- .../paimon/flink/CatalogTableITCase.java | 29 +++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/FlinkCatalog.java b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/FlinkCatalog.java index cd259903f21a..fc123ca46adf 100644 --- a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/FlinkCatalog.java +++ b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/FlinkCatalog.java @@ -44,8 +44,10 @@ import org.apache.paimon.table.FormatTable; import org.apache.paimon.table.Table; import org.apache.paimon.table.sink.BatchTableCommit; +import org.apache.paimon.table.source.DataTableScan; import org.apache.paimon.table.source.ReadBuilder; import org.apache.paimon.utils.FileStorePathFactory; +import org.apache.paimon.utils.Filter; import org.apache.paimon.utils.InternalRowPartitionComputer; import org.apache.paimon.utils.Preconditions; import org.apache.paimon.utils.StringUtils; @@ -1227,7 +1229,8 @@ private List getPartitionEntries( if (partitionSpec != null && partitionSpec.getPartitionSpec() != null) { readBuilder.withPartitionFilter(partitionSpec.getPartitionSpec()); } - return readBuilder.newScan().listPartitionEntries(); + DataTableScan tableScan = (DataTableScan) readBuilder.newScan(); + return tableScan.withLevelFilter(Filter.alwaysTrue()).listPartitionEntries(); } private List getPartitionSpecs( diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/CatalogTableITCase.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/CatalogTableITCase.java index a79f7dc28123..54d05eee3238 100644 --- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/CatalogTableITCase.java +++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/CatalogTableITCase.java @@ -612,6 +612,35 @@ public void testShowPartitions() { result = sql("SHOW PARTITIONS PartitionTable partition (dt='2020-01-02', hh='11')"); assertThat(result).containsExactlyInAnyOrder(Row.of("dt=2020-01-02/hh=11")); + + sql( + "CREATE TABLE PartitionTableWithDVEnabled (\n" + + " user_id BIGINT,\n" + + " item_id BIGINT,\n" + + " behavior STRING,\n" + + " dt STRING,\n" + + " hh STRING,\n" + + " PRIMARY KEY (dt, hh, user_id) NOT ENFORCED\n" + + ") PARTITIONED BY (dt, hh) WITH ('deletion-vectors.enabled'='true', 'write-only'='true')"); + sql("INSERT INTO PartitionTableWithDVEnabled select 1,1,'a','2020-01-01','10'"); + sql("INSERT INTO PartitionTableWithDVEnabled select 2,2,'b','2020-01-02','11'"); + sql("INSERT INTO PartitionTableWithDVEnabled select 3,3,'c','2020-01-03','11'"); + result = sql("SHOW PARTITIONS PartitionTableWithDVEnabled"); + assertThat(result) + .containsExactlyInAnyOrder( + Row.of("dt=2020-01-01/hh=10"), + Row.of("dt=2020-01-02/hh=11"), + Row.of("dt=2020-01-03/hh=11")); + + result = sql("SHOW PARTITIONS PartitionTableWithDVEnabled partition (hh='11')"); + assertThat(result) + .containsExactlyInAnyOrder( + Row.of("dt=2020-01-02/hh=11"), Row.of("dt=2020-01-03/hh=11")); + + result = + sql( + "SHOW PARTITIONS PartitionTableWithDVEnabled partition (dt='2020-01-02', hh='11')"); + assertThat(result).containsExactlyInAnyOrder(Row.of("dt=2020-01-02/hh=11")); } @Test