Re: pl/python improvements

From: Jan Urbański <wulczer(at)wulczer(dot)org>
To: Peter Eisentraut <peter_e(at)gmx(dot)net>
Cc: Postgres - Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: pl/python improvements
Date: 2010-12-23 02:08:04
Message-ID: 4D12AF04.30405@wulczer.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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 explicit subtransactions 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)
* using custom parsers for datatypes + an example application with
dict<->hstore parsing

The dependencies are:

refactor -> validator
-> SPI in subxacts
-> explicit subxacts
-> custom exceptions for SPI
-> 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

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Robert Haas 2010-12-23 03:05:33 Re: knngist - 0.8
Previous Message Bruce Momjian 2010-12-23 02:02:35 Re: Patch BUG #5103: "pg_ctl -w (re)start" fails with custom unix_socket_directory