v1-0001-Remove-ctid-from-update-and-delete-examples.patch
text/x-patch
Filename: v1-0001-Remove-ctid-from-update-and-delete-examples.patch
Type: text/x-patch
Part: 0
From ac18b371e005e85c247871d22aa416f70f378017 Mon Sep 17 00:00:00 2001
From: Bernice Southey <bernice.southey@gmail.com>
Date: Thu, 20 Nov 2025 11:53:57 +0000
Subject: [PATCH] Remove ctid from update and delete examples
---
doc/src/sgml/ref/delete.sgml | 10 +++++-----
doc/src/sgml/ref/update.sgml | 9 +++------
2 files changed, 8 insertions(+), 11 deletions(-)
diff --git a/doc/src/sgml/ref/delete.sgml b/doc/src/sgml/ref/delete.sgml
index 5b52f77e28f..48eb1b6755a 100644
--- a/doc/src/sgml/ref/delete.sgml
+++ b/doc/src/sgml/ref/delete.sgml
@@ -313,15 +313,15 @@ DELETE FROM tasks WHERE CURRENT OF c_tasks;
documentation of <command>UPDATE</command></link>:
<programlisting>
WITH delete_batch AS (
- SELECT l.ctid FROM user_logs AS l
- WHERE l.status = 'archived'
- ORDER BY l.creation_date
+ SELECT a.id FROM accounts AS a
+ WHERE a.status = 'archived'
+ ORDER BY a.id
FOR UPDATE
LIMIT 10000
)
-DELETE FROM user_logs AS dl
+DELETE FROM accounts AS dl
USING delete_batch AS del
- WHERE dl.ctid = del.ctid;
+ WHERE dl.id = del.id;
</programlisting>
</para>
</refsect1>
diff --git a/doc/src/sgml/ref/update.sgml b/doc/src/sgml/ref/update.sgml
index 40cca063946..7374b884080 100644
--- a/doc/src/sgml/ref/update.sgml
+++ b/doc/src/sgml/ref/update.sgml
@@ -486,13 +486,10 @@ UPDATE films SET kind = 'Dramatic' WHERE CURRENT OF c_films;
no <literal>LIMIT</literal> clause for <command>UPDATE</command>, it is
possible to get a similar effect through the use of
a <link linkend="queries-with">Common Table Expression</link> and a
- self-join. With the standard <productname>PostgreSQL</productname>
- table access method, a self-join on the system
- column <link linkend="ddl-system-columns-ctid">ctid</link> is very
- efficient:
+ self-join:
<programlisting>
WITH exceeded_max_retries AS (
- SELECT w.ctid FROM work_item AS w
+ SELECT w.id FROM work_item AS w
WHERE w.status = 'active' AND w.num_retries > 10
ORDER BY w.retry_timestamp
FOR UPDATE
@@ -500,7 +497,7 @@ WITH exceeded_max_retries AS (
)
UPDATE work_item SET status = 'failed'
FROM exceeded_max_retries AS emr
- WHERE work_item.ctid = emr.ctid;
+ WHERE work_item.id = emr.id;
</programlisting>
This command will need to be repeated until no rows remain to be updated.
Use of an <literal>ORDER BY</literal> clause allows the command to
--
2.43.0