From 085c0de64086a35d6a2fa75baae1f2f65ee1aaa4 Mon Sep 17 00:00:00 2001 From: jian he Date: Thu, 20 Nov 2025 12:52:22 +0800 Subject: [PATCH v12 1/2] regress tests for ONCONFLICT_SELECT ExecInitPartitionInfo discussion: https://postgr.es/m/d631b406-13b7-433e-8c0b-c6040c4b4663@Spark --- src/test/regress/expected/insert_conflict.out | 14 +++++++++++++- src/test/regress/sql/insert_conflict.sql | 4 +++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/test/regress/expected/insert_conflict.out b/src/test/regress/expected/insert_conflict.out index 8a4d6f540df..5d76014c3eb 100644 --- a/src/test/regress/expected/insert_conflict.out +++ b/src/test/regress/expected/insert_conflict.out @@ -928,7 +928,7 @@ select * from parted_conflict_test order by a; 2 | b (1 row) --- now check that DO UPDATE works correctly for target partition with +-- now check that DO UPDATE/SELECT works correctly for target partition with -- different attribute numbers create table parted_conflict_test_2 (b char, a int unique); alter table parted_conflict_test attach partition parted_conflict_test_2 for values in (3); @@ -941,6 +941,18 @@ insert into parted_conflict_test values (3, 'a') on conflict (a) do select retur b (1 row) +insert into parted_conflict_test values (3, 'a') on conflict (a) do select where excluded.b = 'a' returning parted_conflict_test; + parted_conflict_test +---------------------- + (3,b) +(1 row) + +insert into parted_conflict_test values (3, 'a') on conflict (a) do select where parted_conflict_test.b = 'b' returning b; + b +--- + b +(1 row) + -- should see (3, 'b') select * from parted_conflict_test order by a; a | b diff --git a/src/test/regress/sql/insert_conflict.sql b/src/test/regress/sql/insert_conflict.sql index 213b9fa96ab..d5bb706acfd 100644 --- a/src/test/regress/sql/insert_conflict.sql +++ b/src/test/regress/sql/insert_conflict.sql @@ -531,7 +531,7 @@ insert into parted_conflict_test_1 values (2, 'b') on conflict (b) do update set -- should see (2, 'b') select * from parted_conflict_test order by a; --- now check that DO UPDATE works correctly for target partition with +-- now check that DO UPDATE/SELECT works correctly for target partition with -- different attribute numbers create table parted_conflict_test_2 (b char, a int unique); alter table parted_conflict_test attach partition parted_conflict_test_2 for values in (3); @@ -539,6 +539,8 @@ truncate parted_conflict_test; insert into parted_conflict_test values (3, 'a') on conflict (a) do update set b = excluded.b; insert into parted_conflict_test values (3, 'b') on conflict (a) do update set b = excluded.b; insert into parted_conflict_test values (3, 'a') on conflict (a) do select returning b; +insert into parted_conflict_test values (3, 'a') on conflict (a) do select where excluded.b = 'a' returning parted_conflict_test; +insert into parted_conflict_test values (3, 'a') on conflict (a) do select where parted_conflict_test.b = 'b' returning b; -- should see (3, 'b') select * from parted_conflict_test order by a; -- 2.34.1