Thread

  1. exceptions not present in plpy with Python 3

    Jan Urbański <wulczer@wulczer.org> — 2010-12-18T17:56:29Z

    Hi,
    
    there seems to be a problem in the way we add exceptions to the plpy
    module in PL/Python compiled with Python 3k.
    
    Try this: DO $$ plpy.SPIError $$ language plpython3u;
    
    I'm not a Python 3 expert, but I nicked some code from the Internet and
    came up with this patch (passes regression tests on both Python 2 and 3).
    
    The funny thing is that it never blew up earlier, because we only used
    plpy.SPIError in except: blocks that weren't even executed, as errors in
    plpy.execute just terminate the function.
    
    With my changes they turn into catchable exceptions, and so accessing
    plpy.SPIError in Python 3 becomes essential.
    
    BTW: do we have any buildfarm animal that uses Python 3?
    
    Cheers,
    Jan
    
  2. Re: exceptions not present in plpy with Python 3

    Jan Urbański <wulczer@wulczer.org> — 2010-12-18T18:33:00Z

    On 18/12/10 18:56, Jan Urbański wrote:
    > I'm not a Python 3 expert, but I nicked some code from the Internet and
    > came up with this patch (passes regression tests on both Python 2 and 3).
    
    I tried to be too cute with the regression test, it fails with Python
    2.3.7 (the latest 2.3 release).
    
    Attached is a fixed test that should work in Pythons 2.3+
    
    I don't want to open that can of worms just yet, but do we have any
    formal policy on the oldest Python version we support? I tested on 2.3
    just because looking at http://python.org/download/releases/ I saw that
    2.2 was last released in 2003, so I thought 2.3 was as far as I'd go...
    
    Cheers,
    Jan
    
  3. Re: exceptions not present in plpy with Python 3

    Peter Eisentraut <peter_e@gmx.net> — 2011-01-20T20:30:04Z

    On lör, 2010-12-18 at 18:56 +0100, Jan Urbański wrote:
    > there seems to be a problem in the way we add exceptions to the plpy
    > module in PL/Python compiled with Python 3k.
    > 
    > Try this: DO $$ plpy.SPIError $$ language plpython3u;
    > 
    > I'm not a Python 3 expert, but I nicked some code from the Internet and
    > came up with this patch (passes regression tests on both Python 2 and 3).
    
    It looks like the PyModule_AddObject() approach also works in Python 2.
    Anyone see an issue with using that uniformly?
    
    
    
    
  4. Re: exceptions not present in plpy with Python 3

    Peter Eisentraut <peter_e@gmx.net> — 2011-01-21T21:49:37Z

    On tor, 2011-01-20 at 22:30 +0200, Peter Eisentraut wrote:
    > On lör, 2010-12-18 at 18:56 +0100, Jan Urbański wrote:
    > > there seems to be a problem in the way we add exceptions to the plpy
    > > module in PL/Python compiled with Python 3k.
    > > 
    > > Try this: DO $$ plpy.SPIError $$ language plpython3u;
    > > 
    > > I'm not a Python 3 expert, but I nicked some code from the Internet and
    > > came up with this patch (passes regression tests on both Python 2 and 3).
    > 
    > It looks like the PyModule_AddObject() approach also works in Python 2.
    > Anyone see an issue with using that uniformly?
    
    Committed using PyModule_AddObject.