Re: postgresql test failure with Python 3.4.0 in plpython_do
От | Honza Horak |
---|---|
Тема | Re: postgresql test failure with Python 3.4.0 in plpython_do |
Дата | |
Msg-id | 5385993C.3040701@redhat.com обсуждение исходный текст |
Ответ на | postgresql test failure with Python 3.4.0 in plpython_do (Honza Horak <hhorak@redhat.com>) |
Ответы |
Re: postgresql test failure with Python 3.4.0 in plpython_do
|
Список | 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@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 > >
Вложения
В списке pgsql-bugs по дате отправления: