subtransactions -- storage manager - Mailing list pgsql-patches

From Alvaro Herrera
Subject subtransactions -- storage manager
Date
Msg-id 20040425180636.GA17886@dcc.uchile.cl
Whole thread Raw
Responses Re: subtransactions -- storage manager  (Bruce Momjian <pgman@candle.pha.pa.us>)
Re: subtransactions -- storage manager  (Simon Riggs <simon@2ndquadrant.com>)
List pgsql-patches
Hackers,

This patch adds subtransaction support into the storage manager.  Files
created or dropped inside a subtransaction are correctly dealt with at
subtransaction commit or abort.

This works:
create table foo (a int);
create table foo2 (a int);
begin;
    begin;
        create table bar (a int);
        select relfilenode, relname from pg_class where relname in ('foo', 'bar');
        drop table foo2;
    rollback;
    drop table foo;
    create table baz (a int);
    select relfilenode, relname from pg_class where relname='baz';
commit;

At this point, the files for "bar" and "foo" have disappeared, while
"foo2" and "baz" remain.  (Note however that the catalog entries are not
correct -- this is because we don't have correctly recorded results in
pg_clog.)

While making this I realized I had made a mistake regarding portal
memory, so I also correct it with this patch.  As a side effect, the
following works;

begin;
    begin;
        declare foo cursor for select 1;
    commit;
    begin;
        declare bar cursor for select 1;
    rollback;
    fetch all from foo;        -- returns 1 row
    fetch all from bar;        -- no such cursor
rollback;

(This patch will only apply cleanly with the previous patch applied.)



Still missing:

- support for prepared statements, async notifies.  Easy.
- support for on commit actions.  Not sure.
- support for deferred triggers.  Not so easy, maybe hard.
- correct LWLock handling.  Should be easy (release them all on abort)
- correct regular lock handling.  Not so easy.
- pg_clog/pg_subtrans.  Need a solution.


PS: somehow I managed to get tired of the phrase "nested transactions"
and I'm using the term "subtransactions" instead.  In my head they are
the same thing ...

--
Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
Hi! I'm a .signature virus!
cp me into your .signature file to help me spread!

Attachment

pgsql-patches by date:

Previous
From: Alvaro Herrera
Date:
Subject: Re: Remove traces of xfunc
Next
From: Neil Conway
Date:
Subject: Re: Remove traces of xfunc