postgresql test failure with Python 3.4.0 in plpython_do
Hi guys,
Slavek is preparing Python 3.4 into Fedora and had some issues with
python3/plpython_do test. His analysis is below.
As for the fix, I'm not sure if the test suite is capable of being
flexible for such error messages, but if the purpose of the test was to
get any traceback, we might be fine with changing the error traceback to
e.g.
raise Exception('error occurred')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
Exception: error occurred
If any assistance with testing or preparing a patch is required, just ask.
Regards,
Honza
-------- Original Message --------
Subject: postgresql test failure with Python 3.4.0 in plpython_do
Date: Tue, 20 May 2014 08:52:28 -0400 (EDT)
From: Bohuslav Kabrda <bkabrda@redhat.com>
To: Honza Horak <hhorak@redhat.com>
Diff of expected and actual result:
[bkabrda@zizalka plpython]$ diff -u expected/python3/plpython_do.out
results/python3/plpython_do.out
--- expected/python3/plpython_do.out 2014-05-20 14:09:44.118369434 +0200
+++ results/python3/plpython_do.out 2014-05-20 12:37:01.522028783 +0200
@@ -5,7 +5,7 @@
NOTICE: This is plpython2u.
CONTEXT: PL/Python anonymous code block
DO $$ nonsense $$ LANGUAGE plpython3u;
-ERROR: NameError: global name 'nonsense' is not defined
+ERROR: NameError: name 'nonsense' is not defined
CONTEXT: Traceback (most recent call last):
PL/Python anonymous code block, line 1, in <module>
nonsense
IIUC the plpython postgresql extension takes the Python code, creates a
function of it and then executes it. This is problem, since the error
message for undefined names *inside functions* (not for undefined names
on global level) has changed (fixed actually, the new version makes more
sense IMO) in Python 3.4 compared to 3.3.
An example, first Python 3.3:
Python 3.3.2 (default, Mar 5 2014, 08:21:05)
[GCC 4.8.2 20131212 (Red Hat 4.8.2-7)] on linux
Type "help", "copyright", "credits" or "license" for more information.
def foo():
... nonsense
...
foo()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in foo
NameError: global name 'nonsense' is not defined
Now on Python 3.4:
Python 3.4.0 (default, May 18 2014, 22:59:00)
[GCC 4.9.0 20140514 (Red Hat 4.9.0-4)] on linux
Type "help", "copyright", "credits" or "license" for more information.
def foo():
... nonsense
...
foo()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in foo
NameError: name 'nonsense' is not defined
Note that in Python 3.4, the "global" word is missing, which causes the
failure. Perhaps the result file could contain a regexp that would match
both or a python3.4 variant of the result could be added?
Slavek
--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs
Import Notes
Reply to msg id not found: 1509291848.14235127.1400590348512.JavaMail.zimbra@redhat.comReference msg id not found: 1509291848.14235127.1400590348512.JavaMail.zimbra@redhat.com
On 05/20/2014 04:11 PM, Honza Horak wrote:
Hi guys,
Slavek is preparing Python 3.4 into Fedora and had some issues with
python3/plpython_do test. His analysis is below.As for the fix, I'm not sure if the test suite is capable of being
flexible for such error messages, but if the purpose of the test was to
get any traceback, we might be fine with changing the error traceback to
e.g.raise Exception('error occurred')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
Exception: error occurredIf any assistance with testing or preparing a patch is required, just ask.
The patch for the fix as mentioned above is attached. In case it is a
correct fix, feel free to apply.
Regards,
Honza
Show quoted text
-------- Original Message --------
Subject: postgresql test failure with Python 3.4.0 in plpython_do
Date: Tue, 20 May 2014 08:52:28 -0400 (EDT)
From: Bohuslav Kabrda <bkabrda@redhat.com>
To: Honza Horak <hhorak@redhat.com>Diff of expected and actual result:
[bkabrda@zizalka plpython]$ diff -u expected/python3/plpython_do.out results/python3/plpython_do.out --- expected/python3/plpython_do.out 2014-05-20 14:09:44.118369434 +0200 +++ results/python3/plpython_do.out 2014-05-20 12:37:01.522028783 +0200 @@ -5,7 +5,7 @@ NOTICE: This is plpython2u. CONTEXT: PL/Python anonymous code block DO $$ nonsense $$ LANGUAGE plpython3u; -ERROR: NameError: global name 'nonsense' is not defined +ERROR: NameError: name 'nonsense' is not defined CONTEXT: Traceback (most recent call last): PL/Python anonymous code block, line 1, in <module> nonsenseIIUC the plpython postgresql extension takes the Python code, creates a
function of it and then executes it. This is problem, since the error
message for undefined names *inside functions* (not for undefined names
on global level) has changed (fixed actually, the new version makes more
sense IMO) in Python 3.4 compared to 3.3.
An example, first Python 3.3:Python 3.3.2 (default, Mar 5 2014, 08:21:05)
[GCC 4.8.2 20131212 (Red Hat 4.8.2-7)] on linux
Type "help", "copyright", "credits" or "license" for more information.def foo():
... nonsense
...foo()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in foo
NameError: global name 'nonsense' is not definedNow on Python 3.4:
Python 3.4.0 (default, May 18 2014, 22:59:00)
[GCC 4.9.0 20140514 (Red Hat 4.9.0-4)] on linux
Type "help", "copyright", "credits" or "license" for more information.def foo():
... nonsense
...foo()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in foo
NameError: name 'nonsense' is not definedNote that in Python 3.4, the "global" word is missing, which causes the
failure. Perhaps the result file could contain a regexp that would match
both or a python3.4 variant of the result could be added?Slavek
Attachments:
postgresql-python34.patchtext/x-patch; name=postgresql-python34.patchDownload+4-4
Honza Horak <hhorak@redhat.com> writes:
On 05/20/2014 04:11 PM, Honza Horak wrote:
Slavek is preparing Python 3.4 into Fedora and had some issues with
python3/plpython_do test. His analysis is below.
The patch for the fix as mentioned above is attached. In case it is a
correct fix, feel free to apply.
Hi Honza! Sorry about the slow response on this --- everybody was at
PGCon last week, and I think this sort of slipped through the cracks.
On looking into the sources I see that Peter already fixed this issue,
in a way substantially the same as yours, but only in HEAD:
http://git.postgresql.org/gitweb/?p=postgresql.git&a=commitdiff&h=d0765d50f
I dunno why he didn't back-patch that, but I will see to it.
regards, tom lane
--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs
On 06/01/2014 07:58 PM, Tom Lane wrote:
Honza Horak <hhorak@redhat.com> writes:
On 05/20/2014 04:11 PM, Honza Horak wrote:
Slavek is preparing Python 3.4 into Fedora and had some issues with
python3/plpython_do test. His analysis is below.The patch for the fix as mentioned above is attached. In case it is a
correct fix, feel free to apply.Hi Honza! Sorry about the slow response on this --- everybody was at
PGCon last week, and I think this sort of slipped through the cracks.
No problem, I hope you enjoyed the PgCon.
On looking into the sources I see that Peter already fixed this issue,
in a way substantially the same as yours, but only in HEAD:
http://git.postgresql.org/gitweb/?p=postgresql.git&a=commitdiff&h=d0765d50f
I dunno why he didn't back-patch that, but I will see to it.
Great, thanks a lot, Tom!
Honza
--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs