Re: postgresql test failure with Python 3.4.0 in plpython_do

From: Honza Horak <hhorak(at)redhat(dot)com>
To: pgsql-bugs(at)postgresql(dot)org
Cc: Bohuslav Kabrda <bkabrda(at)redhat(dot)com>, Jozef Mlich <jmlich(at)redhat(dot)com>
Subject: Re: postgresql test failure with Python 3.4.0 in plpython_do
Date: 2014-05-28 08:07:24
Message-ID: 5385993C.3040701@redhat.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

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 occurred
>
> If 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

> -------- 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(at)redhat(dot)com>
> To: Honza Horak <hhorak(at)redhat(dot)com>
>
> Diff of expected and actual result:
>
> [bkabrda(at)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
>
>

Attachment Content-Type Size
postgresql-python34.patch text/x-patch 1.8 KB

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message yosxpe23 2014-05-28 09:47:42 Re: BUG #8470: 9.3 locking/subtransaction performance regression
Previous Message Heikki Linnakangas 2014-05-27 18:06:34 Re: BUG #10432: failed to re-find parent key in index