Re: pl/python improvements - Mailing list pgsql-hackers

From Jan Urbański
Subject Re: pl/python improvements
Date
Msg-id 4D1334A5.8020405@wulczer.org
Whole thread Raw
In response to Re: pl/python improvements  (Marti Raudsepp <marti@juffo.org>)
Responses Re: pl/python improvements
List pgsql-hackers
On 23/12/10 12:16, Marti Raudsepp wrote:
> On Thu, Dec 23, 2010 at 04:08, Jan Urbański <wulczer@wulczer.org> wrote:
>>  * providing custom exceptions for SPI errors, so you can catch only
>> UniqueViolations and not have to muck around with SQLCODE
> 
> py-postgresql already has a mapping from error codes to Python
> exceptions. I think it makes sense to re-use that, instead of
> inventing new names.
> https://github.com/jwp/py-postgresql/blob/v1.1/postgresql/exceptions.py
> 
> It also follows the Python convention of ending exception classes with
> "Error", so instead of UniqueViolation they have UniqueError, instead
> of InvalidTextRepresentation, they have TextRepresentationError

Oh, didn't know that. I see that it does some more fancy things, like
defining a inheritance hierarchy for these exceptions and adding some
more into the mix.

The names I used are not really invented, they're just plpgsql condition
names from
http://www.postgresql.org/docs/current/static/errcodes-appendix.html
with underscores changed to camel case. Also, since they're
autogenerated from utils/errcodes.h they don't have any hierarchy, they
just all inherit from SPIError.

Sticking "Error" to every one of them will result in things like
SubstringErrorError, so I'm not really sold on that. Basically I think
more PL/Python users will be familiar with condition names as you use
them in pl/pgsql than with the names from py-postgresql.

>> Meanwhile the code
>> is available at https://github.com/wulczer/postgres. You will find 10
>> branches there, 9 correspond to these features, and the "plpython"
>> branch is the sum of them all.
> 
> I tried building the plpython branch, but got an unrelated error. I
> didn't investigate further for now...
> 
> make[3]: Entering directory
> `/home/marti/src/postgresql-py/src/backend/bootstrap'
> gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith
> -Wdeclaration-after-statement -Wendif-labels -fno-strict-aliasing
> -fwrapv -I. -I. -I../../../src/include -D_GNU_SOURCE   -c -o
> bootparse.o bootparse.c
> bootparse.y: In function ‘boot_yyparse’:
> bootparse.y:224:16: error: too few arguments to function ‘heap_create’
> ../../../src/include/catalog/heap.h:37:17: note: declared here
> bootparse.y:249:16: error: too few arguments to function
> ‘heap_create_with_catalog’
> ../../../src/include/catalog/heap.h:48:12: note: declared here
> make[3]: *** [bootparse.o] Error 1

I'm pretty sure it'll go away it you do make maintainer-clean or git
clean -dfx after switching to the plpython branch.

Cheers,
Jan


pgsql-hackers by date:

Previous
From: Marti Raudsepp
Date:
Subject: Re: pl/python improvements
Next
From: Magnus Hagander
Date:
Subject: Recovery conflict monitoring