Re: why does plperl cache functions using just a bool for is_trigger

Hannu Krosing <hannu@2ndquadrant.com>

From: Hannu Krosing <hannu@2ndQuadrant.com>
To: Jan Urbański <wulczer@wulczer.org>
Cc: Alex Hunsaker <badalex@gmail.com>, Tom Lane <tgl@sss.pgh.pa.us>, Andrew Dunstan <andrew@dunslane.net>, Postgres - Hackers <pgsql-hackers@postgresql.org>
Date: 2010-11-04T09:54:45Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Remove unnecessary use of trigger flag to hash plperl functions

On Thu, 2010-11-04 at 11:46 +0200, Hannu Krosing wrote:
> On Wed, 2010-11-03 at 21:43 +0100, Jan Urbański wrote:
> > The validator is ready, once I'm done with the hash tables I'll try to
> > fix up the error checking (get rid of the global error state) and
> > finally do what started it all, that is make plpythonu use
> > subtransactions for SPI and be able to do:
> > 
> > try:
> >     plpy.execute("insert into foo values(1)")
> > except plpy.UniqueViolation, e:
> >     plpy.notice("Ooops, you got yourself a SQLSTATE %d", e.sqlstate)
> 
> Are you sure that having each try/except use a subtransaction is the
> right way to do it ?

Another objection 

> I'd like to make it more explicit and use 
> 
> with plpy.subtransaction():
>     do your stuff

Possibly better syntax would be

with plpy.subtransaction() as subtrx:
    try:
        plpy.execute("insert into foo values(1)")
    except plpy.UniqueViolation, e:
        subtrx.rollback()
        plpy.notice("Ooops, you got yourself a SQLSTATE %d", e.sqlstate)


-------
Hannu Krosing
PostgreSQL Infinite Scalability and Preformance Consultant
PG Admin Book: http://www.2ndQuadrant.com/books/