Re: proposal: PL/Pythonu - function ereport - Mailing list pgsql-hackers

From Pavel Stehule
Subject Re: proposal: PL/Pythonu - function ereport
Date
Msg-id CAFj8pRAgHLPS+N-_h7mWyy+EjXv72EVir5z8wHtQCskT8-wOFQ@mail.gmail.com
Whole thread Raw
In response to Re: proposal: PL/Pythonu - function ereport  (Craig Ringer <craig@2ndquadrant.com>)
List pgsql-hackers


2015-10-16 8:12 GMT+02:00 Craig Ringer <craig@2ndquadrant.com>:
On 16 October 2015 at 02:47, Pavel Stehule <pavel.stehule@gmail.com> wrote:

>  postgres=# do $$
> x = plpy.SPIError('Nazdarek');
> x.spidata = (100, "Some detail", "some hint", None, None);
> raise x;
> $$ language plpythonu;

Shouldn't that look more like

raise plpy.SPIError(msg="Message", sqlstate="0P001", hint="Turn it on
and off again") ?

postgres=# do $$
raise plpy.SPIError(msg="Message", sqlstate="0P001", hint="Turn it on and off again");
$$ language plpythonu;
ERROR:  TypeError: SPIError does not take keyword arguments
CONTEXT:  Traceback (most recent call last):
  PL/Python anonymous code block, line 2, in <module>
    raise plpy.SPIError(msg="Message", sqlstate="0P001", hint="Turn it on and off again");
PL/Python anonymous code block
Time: 1.193 ms

 

Keyword args are very much the norm for this sort of thing. I recall
them being pretty reasonable to deal with in the CPython API too, but
otherwise a trivial Python wrapper in the module can easily adapt the
interface.


postgres=# do $$
class cSPIError(plpy.SPIError):
        def __init__( self, message, detail = None, hint = None):
                self.spidata = (0, detail, hint, None, None,)
                self.args = ( message, )

x = cSPIError('Nazdarek', hint = 'some hint')
raise x
$$ language plpythonu;
ERROR:  cSPIError: Nazdarek
HINT:  some hint
CONTEXT:  Traceback (most recent call last):
  PL/Python anonymous code block, line 8, in <module>
    raise x
PL/Python anonymous code block

This code is working, so it needs explicit constructor for class SPIError

Regards

Pavel
 


--
 Craig Ringer                   http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services

pgsql-hackers by date:

Previous
From: Michael Paquier
Date:
Subject: Re: Support for N synchronous standby servers - take 2
Next
From: Etsuro Fujita
Date:
Subject: Re: Foreign join pushdown vs EvalPlanQual