v18-0002-DO-SELECT-Fixes-after-Jians-review-of-v-17.patch

application/octet-stream

Filename: v18-0002-DO-SELECT-Fixes-after-Jians-review-of-v-17.patch
Type: application/octet-stream
Part: 1
Message: Re: ON CONFLICT DO SELECT (take 3)

Patch

Same data as JSON: GET /api/v1/attachments/:id/patch the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes. API reference →
Format: format-patch
Series: patch v18-0002
Subject: DO SELECT - Fixes after Jians review of v 17
File+
doc/src/sgml/ref/insert.sgml 3 3
src/backend/access/heap/heapam.c 4 4
src/backend/executor/execPartition.c 2 2
From ef1a0ccd76fefb871a56770c7f7b866a0f62eab9 Mon Sep 17 00:00:00 2001
From: Viktor Holmberg <v@viktorh.net>
Date: Fri, 28 Nov 2025 22:30:06 +0100
Subject: [PATCH v18 2/3] DO SELECT - Fixes after Jians review of v 17

- test comment fix
- clarify a code comment about mapping partition varnos
- heap_lock_tuple comment
---
 doc/src/sgml/ref/insert.sgml         | 6 +++---
 src/backend/access/heap/heapam.c     | 8 ++++----
 src/backend/executor/execPartition.c | 4 ++--
 3 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/doc/src/sgml/ref/insert.sgml b/doc/src/sgml/ref/insert.sgml
index 4c20560c08b..544b6aaa1eb 100644
--- a/doc/src/sgml/ref/insert.sgml
+++ b/doc/src/sgml/ref/insert.sgml
@@ -859,9 +859,9 @@ INSERT INTO distributors (did, dname) VALUES (11, 'Global Electronics')
 </programlisting>
   </para>
   <para>
-   Insert a new distributor if the name doesn't match, otherwise return
-   the existing row.  This example uses the <varname>excluded</varname>
-   table in the WHERE clause to filter results:
+   Insert a new distributor if the ID doesn't match, otherwise return
+   the existing row.  This example uses the <varname>EXCLUDED</varname>
+   table in the <literal>WHERE</literal> clause to filter results:
 <programlisting>
 INSERT INTO distributors (did, dname) VALUES (12, 'Micro Devices Inc')
     ON CONFLICT (did) DO SELECT WHERE dname = EXCLUDED.dname
diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c
index 4d382a04338..ff7063de261 100644
--- a/src/backend/access/heap/heapam.c
+++ b/src/backend/access/heap/heapam.c
@@ -4651,10 +4651,10 @@ l3:
 	if (result == TM_Invisible)
 	{
 		/*
-		 * This is possible, but only when locking a tuple for ON CONFLICT
-		 * UPDATE.  We return this value here rather than throwing an error in
-		 * order to give that case the opportunity to throw a more specific
-		 * error.
+		 * This is possible when locking a tuple for ON CONFLICT UPDATE or ON
+		 * CONFLICT DO SELECT.  We return this value here rather than throwing
+		 * an error in order to give that case the opportunity to throw a more
+		 * specific error.
 		 */
 		result = TM_Invisible;
 		goto out_locked;
diff --git a/src/backend/executor/execPartition.c b/src/backend/executor/execPartition.c
index ab3c74c6fc5..05eea8dda2c 100644
--- a/src/backend/executor/execPartition.c
+++ b/src/backend/executor/execPartition.c
@@ -847,8 +847,8 @@ ExecInitPartitionInfo(ModifyTableState *mtstate, EState *estate,
 				 * For both ON CONFLICT DO UPDATE and ON CONFLICT DO SELECT,
 				 * there may be a WHERE clause.  If so, initialize state where
 				 * it will be evaluated, mapping the attribute numbers
-				 * appropriately.  As with onConflictSet, we need to map
-				 * partition varattnos twice, to catch both the EXCLUDED
+				 * appropriately.  Like we did for onConflictSet above, we need
+				 * to map partition varattnos twice, to catch both the EXCLUDED
 				 * pseudo-relation (INNER_VAR), and the main target relation
 				 * (firstVarno).
 				 */
-- 
2.48.1