From 61fcc87f413eb07e90bc8e892a7ec44256eb7e27 Mon Sep 17 00:00:00 2001 From: weimingdiit Date: Thu, 6 Aug 2026 14:30:10 +0800 Subject: [PATCH 1/3] [AURON #2451] Add Paimon COW multi-commit correctness coverage Signed-off-by: weimingdiit --- .../paimon/AuronPaimonV2IntegrationSuite.scala | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/thirdparty/auron-paimon/src/test/scala/org/apache/auron/paimon/AuronPaimonV2IntegrationSuite.scala b/thirdparty/auron-paimon/src/test/scala/org/apache/auron/paimon/AuronPaimonV2IntegrationSuite.scala index a36b06441..2c472679e 100644 --- a/thirdparty/auron-paimon/src/test/scala/org/apache/auron/paimon/AuronPaimonV2IntegrationSuite.scala +++ b/thirdparty/auron-paimon/src/test/scala/org/apache/auron/paimon/AuronPaimonV2IntegrationSuite.scala @@ -143,6 +143,24 @@ class AuronPaimonV2IntegrationSuite } } + test("paimon v2 COW primary-key table preserves latest value across commits") { + withTable("paimon.db.t_cow_multi_commit") { + sql(""" + |create table paimon.db.t_cow_multi_commit (id int, v string) + |using paimon + |tblproperties ( + | 'primary-key' = 'id', + | 'bucket' = '2', + | 'full-compaction.delta-commits' = '1' + |) + |""".stripMargin) + sql("insert into paimon.db.t_cow_multi_commit values (1, 'a'), (2, 'b')") + sql("insert into paimon.db.t_cow_multi_commit values (1, 'updated')") + val df = sql("select * from paimon.db.t_cow_multi_commit") + checkAnswer(df, Seq(Row(1, "updated"), Row(2, "b"))) + } + } + test("paimon v2 native scan handles empty table") { withTable("paimon.db.t_empty") { sql("create table paimon.db.t_empty (id int, v string) using paimon") From eeb089d3d2bc4f7522efbba2563e8329b7ea1a09 Mon Sep 17 00:00:00 2001 From: Ming Wei Date: Sat, 15 Aug 2026 13:27:09 +0800 Subject: [PATCH 2/3] Update thirdparty/auron-paimon/src/test/scala/org/apache/auron/paimon/AuronPaimonV2IntegrationSuite.scala Co-authored-by: Weiqing Yang --- .../org/apache/auron/paimon/AuronPaimonV2IntegrationSuite.scala | 1 + 1 file changed, 1 insertion(+) diff --git a/thirdparty/auron-paimon/src/test/scala/org/apache/auron/paimon/AuronPaimonV2IntegrationSuite.scala b/thirdparty/auron-paimon/src/test/scala/org/apache/auron/paimon/AuronPaimonV2IntegrationSuite.scala index 2c472679e..bac488967 100644 --- a/thirdparty/auron-paimon/src/test/scala/org/apache/auron/paimon/AuronPaimonV2IntegrationSuite.scala +++ b/thirdparty/auron-paimon/src/test/scala/org/apache/auron/paimon/AuronPaimonV2IntegrationSuite.scala @@ -158,6 +158,7 @@ class AuronPaimonV2IntegrationSuite sql("insert into paimon.db.t_cow_multi_commit values (1, 'updated')") val df = sql("select * from paimon.db.t_cow_multi_commit") checkAnswer(df, Seq(Row(1, "updated"), Row(2, "b"))) + assertNativePaimonScanApplied(df) } } From 1e5af7a3d0fb62a1bda5e893fff3022faf2a923a Mon Sep 17 00:00:00 2001 From: weimingdiit Date: Sat, 15 Aug 2026 14:35:00 +0800 Subject: [PATCH 3/3] Update code Signed-off-by: weimingdiit --- .../apache/auron/paimon/AuronPaimonV2IntegrationSuite.scala | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/thirdparty/auron-paimon/src/test/scala/org/apache/auron/paimon/AuronPaimonV2IntegrationSuite.scala b/thirdparty/auron-paimon/src/test/scala/org/apache/auron/paimon/AuronPaimonV2IntegrationSuite.scala index bac488967..4153740f0 100644 --- a/thirdparty/auron-paimon/src/test/scala/org/apache/auron/paimon/AuronPaimonV2IntegrationSuite.scala +++ b/thirdparty/auron-paimon/src/test/scala/org/apache/auron/paimon/AuronPaimonV2IntegrationSuite.scala @@ -143,7 +143,7 @@ class AuronPaimonV2IntegrationSuite } } - test("paimon v2 COW primary-key table preserves latest value across commits") { + test("paimon v2 native scan preserves latest COW value after compaction") { withTable("paimon.db.t_cow_multi_commit") { sql(""" |create table paimon.db.t_cow_multi_commit (id int, v string) @@ -156,6 +156,7 @@ class AuronPaimonV2IntegrationSuite |""".stripMargin) sql("insert into paimon.db.t_cow_multi_commit values (1, 'a'), (2, 'b')") sql("insert into paimon.db.t_cow_multi_commit values (1, 'updated')") + sql("CALL paimon.sys.compact(table => 'db.t_cow_multi_commit')") val df = sql("select * from paimon.db.t_cow_multi_commit") checkAnswer(df, Seq(Row(1, "updated"), Row(2, "b"))) assertNativePaimonScanApplied(df)