pg.ddx.io  pgsql-docs@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Erik Wienhold <ewie@ewie.name>
To: el481@yandex.ru
To: pgsql-docs@lists.postgresql.org
Subject: Re: Misprints in code
Date: Thu, 21 Nov 2024 16:31:07 +0100
Message-ID: <fe60c0fa-cea7-4c6e-b951-28f566289550@ewie.name> (raw)
In-Reply-To: <173209043143.2092749.13692266486972491694@wrigleys.postgresql.org>
References: <173209043143.2092749.13692266486972491694@wrigleys.postgresql.org>

On 2024-11-20 09:13 +0100, PG Doc comments form wrote:
> https://www.postgresql.org/docs/16/plpython-data.html#PLPYTHON-DATA-SET-RETURNING-FUNCS
> The code contains a misprint in the following section:    Iterator (any
> object providing __iter__ and next methods)
> 
>  def next (self):  must be:  def __next__ (self): 
> 
> Also, the header - Iterator (any object providing __iter__ and next methods)
>  should be  Iterator (any object providing __iter__ and __next__ methods)

Good catch!  That's a leftover from Python 2 and missed in commit
4228cabb72b after Python 2 was dropped in 15.0.  Patch attached.

While looking at, we can also simplify a couple of plpython3u test
functions that still try res.next() before res.__next__().  Attached as
a separate patch.

-- 
Erik

Attachments:

  [text/x-diff] fix-plpython-docs.patch (659B, ../fe60c0fa-cea7-4c6e-b951-28f566289550@ewie.name/2-fix-plpython-docs.patch)
  download | inline diff:
diff --git a/doc/src/sgml/plpython.sgml b/doc/src/sgml/plpython.sgml
index e5d51d6e9f..bee817ea82 100644
--- a/doc/src/sgml/plpython.sgml
+++ b/doc/src/sgml/plpython.sgml
@@ -553,7 +553,7 @@ $$ LANGUAGE plpython3u;
 
     <varlistentry>
      <term>Iterator (any object providing <symbol>__iter__</symbol> and
-      <symbol>next</symbol> methods)</term>
+      <symbol>__next__</symbol> methods)</term>
      <listitem>
       <para>
 <programlisting>
@@ -569,7 +569,7 @@ AS $$
     def __iter__ (self):
       return self
 
-    def next (self):
+    def __next__(self):
       self.ndx += 1
       if self.ndx == len(self.who):
         raise StopIteration

  [text/x-diff] simplify-plpython-tests.patch (3.0K, ../fe60c0fa-cea7-4c6e-b951-28f566289550@ewie.name/3-simplify-plpython-tests.patch)
  download | inline diff:
diff --git a/src/pl/plpython/expected/plpython_spi.out b/src/pl/plpython/expected/plpython_spi.out
index 8853e2540d..7dfdd0d4a7 100644
--- a/src/pl/plpython/expected/plpython_spi.out
+++ b/src/pl/plpython/expected/plpython_spi.out
@@ -319,12 +319,7 @@ assert len(res.fetch(3)) == 1
 assert len(res.fetch(3)) == 0
 assert len(res.fetch(3)) == 0
 try:
-    # use next() or __next__(), the method name changed in
-    # http://www.python.org/dev/peps/pep-3114/
-    try:
-        res.next()
-    except AttributeError:
-        res.__next__()
+    next(res)
 except StopIteration:
     pass
 else:
@@ -334,11 +329,7 @@ CREATE FUNCTION cursor_mix_next_and_fetch() RETURNS int AS $$
 res = plpy.cursor("select fname, lname from users order by fname")
 assert len(res.fetch(2)) == 2
 
-item = None
-try:
-    item = res.next()
-except AttributeError:
-    item = res.__next__()
+item = next(res)
 assert item['fname'] == 'rick'
 
 assert len(res.fetch(2)) == 1
@@ -357,10 +348,7 @@ CREATE FUNCTION next_after_close() RETURNS int AS $$
 res = plpy.cursor("select fname, lname from users")
 res.close()
 try:
-    try:
-        res.next()
-    except AttributeError:
-        res.__next__()
+    next(res)
 except ValueError:
     pass
 else:
@@ -370,10 +358,7 @@ CREATE FUNCTION cursor_fetch_next_empty() RETURNS int AS $$
 res = plpy.cursor("select fname, lname from users where false")
 assert len(res.fetch(1)) == 0
 try:
-    try:
-        res.next()
-    except AttributeError:
-        res.__next__()
+    next(res)
 except StopIteration:
     pass
 else:
diff --git a/src/pl/plpython/sql/plpython_spi.sql b/src/pl/plpython/sql/plpython_spi.sql
index fcd113acaa..a1a8b9c824 100644
--- a/src/pl/plpython/sql/plpython_spi.sql
+++ b/src/pl/plpython/sql/plpython_spi.sql
@@ -218,12 +218,7 @@ assert len(res.fetch(3)) == 1
 assert len(res.fetch(3)) == 0
 assert len(res.fetch(3)) == 0
 try:
-    # use next() or __next__(), the method name changed in
-    # http://www.python.org/dev/peps/pep-3114/
-    try:
-        res.next()
-    except AttributeError:
-        res.__next__()
+    next(res)
 except StopIteration:
     pass
 else:
@@ -234,11 +229,7 @@ CREATE FUNCTION cursor_mix_next_and_fetch() RETURNS int AS $$
 res = plpy.cursor("select fname, lname from users order by fname")
 assert len(res.fetch(2)) == 2
 
-item = None
-try:
-    item = res.next()
-except AttributeError:
-    item = res.__next__()
+item = next(res)
 assert item['fname'] == 'rick'
 
 assert len(res.fetch(2)) == 1
@@ -259,10 +250,7 @@ CREATE FUNCTION next_after_close() RETURNS int AS $$
 res = plpy.cursor("select fname, lname from users")
 res.close()
 try:
-    try:
-        res.next()
-    except AttributeError:
-        res.__next__()
+    next(res)
 except ValueError:
     pass
 else:
@@ -273,10 +261,7 @@ CREATE FUNCTION cursor_fetch_next_empty() RETURNS int AS $$
 res = plpy.cursor("select fname, lname from users where false")
 assert len(res.fetch(1)) == 0
 try:
-    try:
-        res.next()
-    except AttributeError:
-        res.__next__()
+    next(res)
 except StopIteration:
     pass
 else:

view thread (3+ messages)  latest in thread

Message-ID: <fe60c0fa-cea7-4c6e-b951-28f566289550@ewie.name>
Permalink:  ../fe60c0fa-cea7-4c6e-b951-28f566289550@ewie.name/
Also on:    postgresql.org/message-id/fe60c0fa-cea7-4c6e-b951-28f566289550@ewie.name

 ·  · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-docs@postgresql.org
  Cc: ewie@ewie.name, el481@yandex.ru, pgsql-docs@lists.postgresql.org
  Subject: Re: Misprints in code
  In-Reply-To: <fe60c0fa-cea7-4c6e-b951-28f566289550@ewie.name>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox