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

From Jan Urbański
Subject Re: pl/python improvements
Date
Msg-id 4D12AF04.30405@wulczer.org
Whole thread Raw
In response to Re: pl/python improvements  (Peter Eisentraut <peter_e@gmx.net>)
Responses Re: pl/python improvements
List pgsql-hackers
On 08/12/10 22:41, Peter Eisentraut wrote:
> On tis, 2010-12-07 at 23:56 +0100, Jan Urbański wrote:
>> Peter suggested having a mail/patch per feature and the way I intend
>> to do that is instead of having a dozen branches, have one and after
>> I'm done rebase it interactively to produce incremental patches that
>> apply to master, each one implementing one feature.
> 
> Fair enough if you want to do it that way, but I'd encourage you to just
> send in any self-contained features/changes that you have finished.

I finished work on the PL/Python improvements. There 9 separate patches,
with some interdependencies.

The features implemented are:* general refactoring, dropping the global error state, using dynahash
instead of PyDicts for procedure caching, etc* a validator function* executing SPI calls in subtransactions* starting
explicitsubtransactions to have atomic behaviour of
 
multiple SPI calls* providing custom exceptions for SPI errors, so you can catch only
UniqueViolations and not have to muck around with SQLCODE* invalidate functions accepting composite types if the type
changes
after the functions has been defined* traceback support* table functions (ability to return RECORD and SETOF RECORD)*
usingcustom parsers for datatypes + an example application with
 
dict<->hstore parsing

The dependencies are:

refactor -> validator        -> SPI in subxacts             -> explicit subxacts                -> custom exceptions
forSPI        -> invalidate composites        -> tracebacks        -> table functions        -> custom parsers
 

so everything depends on the refactoring patch, and the SPI changes are
incremental.

I will generate these patches and send them in in separate threads/add
them to the commitfest app before Christmas (I hope). 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.

From now on I will stop rebasing these branches, and instead just commit
fixes to the appropriate branch and merge upwards (from refactor to
everything, from spi-in-subxacts to explicit-subxacts and to
custom-spi-exceptions, etc). I'll also try to independently maintain the
plpython branch with the sum to make sure nothing has been left out as
the feature branches get merged into mainline.

Here's to hoping that this will not turn into a conflict hell.

Cheers,
Jan


pgsql-hackers by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: Patch BUG #5103: "pg_ctl -w (re)start" fails with custom unix_socket_directory
Next
From: Robert Haas
Date:
Subject: Re: knngist - 0.8