diff --git a/doc/TODO.detail/2phase b/doc/TODO.detail/2phase
deleted file mode 100644
index aaf089007b5327599638c253e6cfceaaf3d52788..0000000000000000000000000000000000000000
--- a/doc/TODO.detail/2phase
+++ /dev/null
@@ -1,2161 +0,0 @@
-From pgsql-hackers-owner+M49851=pgman=candle.pha.pa.us@postgresql.org Sat Feb  7 10:33:51 2004
-Return-path: <pgsql-hackers-owner+M49851=pgman=candle.pha.pa.us@postgresql.org>
-Received: from postgresql.org (svr1.postgresql.org [200.46.204.71])
-	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id i17HXbr05526
-	for <pgman@candle.pha.pa.us>; Sat, 7 Feb 2004 12:33:50 -0500 (EST)
-X-Original-To: pgsql-hackers-postgresql.org@localhost.postgresql.org
-Received: from localhost (unknown [200.46.204.2])
-	by svr1.postgresql.org (Postfix) with ESMTP id 0FDCBD1D8A0
-	for <pgsql-hackers-postgresql.org@localhost.postgresql.org>; Wed,  4 Feb 2004 20:22:23 +0000 (GMT)
-Received: from svr1.postgresql.org ([200.46.204.71])
-	by localhost (neptune.hub.org [200.46.204.2]) (amavisd-new, port 10024)
-	with ESMTP id 35031-10
-	for <pgsql-hackers-postgresql.org@localhost.postgresql.org>;
-	Wed,  4 Feb 2004 16:22:21 -0400 (AST)
-Received: from main.gmane.org (main.gmane.org [80.91.224.249])
-	by svr1.postgresql.org (Postfix) with ESMTP id D9726D1D85F
-	for <pgsql-hackers@postgresql.org>; Wed,  4 Feb 2004 16:22:20 -0400 (AST)
-Received: from list by main.gmane.org with local (Exim 3.35 #1 (Debian))
-	id 1AoTXQ-0006tA-00
-	for <pgsql-hackers@postgresql.org>; Wed, 04 Feb 2004 21:22:20 +0100
-Received: from kosh.hut.fi ([130.233.228.10])
-        by main.gmane.org with esmtp (Gmexim 0.1 (Debian))
-        id 1AlnuQ-0007hv-00
-        for <pgsql-hackers@postgresql.org>; Wed Feb  4 20:22:20 2004
-Received: from hlinnaka by kosh.hut.fi with local (Gmexim 0.1 (Debian))
-        id 1AlnuQ-0007hv-00
-        for <pgsql-hackers@postgresql.org>; Wed Feb  4 20:22:20 2004
-X-Injected-Via-Gmane: http://gmane.org/
-To: pgsql-hackers@postgresql.org
-From: Heikki Linnakangas <hlinnaka@iki.fi>
-Subject: [HACKERS] Two-phase commit
-Date: Wed, 4 Feb 2004 22:22:16 +0200
-Lines: 30
-Message-ID: <Pine.OSF.4.58.0402042200330.238747@kosh.hut.fi>
-MIME-Version: 1.0
-Content-Type: TEXT/PLAIN; charset=US-ASCII
-X-Complaints-To: usenet@sea.gmane.org
-X-Gmane-NNTP-Posting-Host: kosh.hut.fi
-X-X-Sender: hlinnaka@kosh.hut.fi
-X-Virus-Scanned: by amavisd-new at postgresql.org
-X-Mailing-List: pgsql-hackers
-Precedence: bulk
-Sender: pgsql-hackers-owner@postgresql.org
-X-Spam-Checker-Version: SpamAssassin 2.61 (1.212.2.1-2003-12-09-exp) on 
-	candle.pha.pa.us
-X-Spam-Status: No, hits=-4.9 required=5.0 tests=BAYES_00 autolearn=ham 
-	version=2.61
-Status: ORr
-
-I've been very slowly continuing my work on two-phase commits for a couple
-months now, and I now have my original patch updated so that it applies to
-the current CVS tip, with some improvements.
-
-The patch introduces three new commands, PREPCOMMIT, COMMITPREPARED and
-ABORTPREPARED.
-
-To start a 2PC transaction, you first do a BEGIN and your updates as
-usual. At the end of the transaction, you call PREPCOMMIT 'foobar' instead
-of COMMIT. Now the transaction is in prepared state, ready to commit at a
-later time. 'foobar' is the global transaction identifier assigned for the
-transaction.
-
-Later, when you want to finish the second phase, you call
-COMMITPREPARED 'foobar';
-
-There is a system view pg_prepared_xacts that gives you all transactions
-that are in prepared state waiting for COMMITPREPARED or ABORTPREPARED.
-
-I have also done some work on XA-enabling the JDBC drivers, now that we
-have what it takes in the server side. I have succesfully executed
-2PC transactions with JBossMQ and Postgres, using JBoss as the
-transaction manager, so the basic stuff seems to be working.
-
-Please have a look and comment, the patches can be found here:
-http://www.iki.fi/hlinnaka/pgsql/
-
-What is the schedule for 7.5? Any chance of getting this in?
-
-- Heikki
-
-
----------------------------(end of broadcast)---------------------------
-TIP 3: if posting/reading through Usenet, please send an appropriate
-      subscribe-nomail command to majordomo@postgresql.org so that your
-      message can get through to the mailing list cleanly
-
-From pgsql-hackers-owner+M50166=pgman=candle.pha.pa.us@postgresql.org Sun Feb 15 14:10:46 2004
-Return-path: <pgsql-hackers-owner+M50166=pgman=candle.pha.pa.us@postgresql.org>
-Received: from postgresql.org (svr1.postgresql.org [200.46.204.71])
-	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id i1FLAir14581
-	for <pgman@candle.pha.pa.us>; Sun, 15 Feb 2004 16:10:45 -0500 (EST)
-X-Original-To: pgsql-hackers-postgresql.org@localhost.postgresql.org
-Received: from localhost (unknown [200.46.204.2])
-	by svr1.postgresql.org (Postfix) with ESMTP id 297AAD1CAF3
-	for <pgsql-hackers-postgresql.org@localhost.postgresql.org>; Mon,  9 Feb 2004 20:09:53 +0000 (GMT)
-Received: from svr1.postgresql.org ([200.46.204.71])
-	by localhost (neptune.hub.org [200.46.204.2]) (amavisd-new, port 10024)
-	with ESMTP id 07202-01
-	for <pgsql-hackers-postgresql.org@localhost.postgresql.org>;
-	Mon,  9 Feb 2004 16:09:37 -0400 (AST)
-Received: from smtp-4.hut.fi (smtp-4.hut.fi [130.233.228.94])
-	by svr1.postgresql.org (Postfix) with ESMTP id 90D81D1C4BC
-	for <pgsql-hackers@postgresql.org>; Mon,  9 Feb 2004 16:09:34 -0400 (AST)
-Received: from kosh.hut.fi (kosh.hut.fi [130.233.228.10])
-	by smtp-4.hut.fi (8.12.10/8.12.10) with ESMTP id i19K9Y66012417;
-	Mon, 9 Feb 2004 22:09:34 +0200
-Date: Mon, 9 Feb 2004 22:09:34 +0200 (EET)
-From: Heikki Linnakangas <hlinnaka@iki.fi>
-X-X-Sender: hlinnaka@kosh.hut.fi
-To: "Jeroen T. Vermeulen" <jtv@xs4all.nl>
-cc: PostgreSQL Development <pgsql-hackers@postgresql.org>
-Subject: Re: [HACKERS] Two-phase commit
-In-Reply-To: <20040208195332.GE25140@xs4all.nl>
-Message-ID: <Pine.OSF.4.58.0402092201460.226205@kosh.hut.fi>
-References: <Pine.OSF.4.58.0402042200330.238747@kosh.hut.fi>
-	<20040208195332.GE25140@xs4all.nl>
-MIME-Version: 1.0
-Content-Type: TEXT/PLAIN; charset=US-ASCII
-X-RAVMilter-Version: 8.4.3(snapshot 20030212) (smtp-4.hut.fi)
-X-Virus-Scanned: by amavisd-new at postgresql.org
-X-Mailing-List: pgsql-hackers
-Precedence: bulk
-Sender: pgsql-hackers-owner@postgresql.org
-X-Spam-Checker-Version: SpamAssassin 2.61 (1.212.2.1-2003-12-09-exp) on 
-	candle.pha.pa.us
-X-Spam-Status: No, hits=-4.9 required=5.0 tests=BAYES_00 autolearn=ham 
-	version=2.61
-Status: OR
-
-On Sun, 8 Feb 2004, Jeroen T. Vermeulen wrote:
-
-> On Wed, Feb 04, 2004 at 10:22:16PM +0200, Heikki Linnakangas wrote:
->
-> > There is a system view pg_prepared_xacts that gives you all transactions
-> > that are in prepared state waiting for COMMITPREPARED or ABORTPREPARED.
->
-> Great to hear that you've gotten so far with this...  One question: can I
-> check for this view to see if 2PC is supported before issuing the new
-> kind of commit?  I'm interested in supporting 2PC even for some regular
-> transactions to reduce their in-doubt window, but I don't want to issue a
-> command at the last moment that may fail (and thereby abort) because the
-> backend version I'm connected to doesn't support the new command!
-
-Yes, I suppose that would work. Though you would have to use a query that
-wouldn't fail in case the view doesn't exist, otherwise you end up
-aborting the transaction anyway. This should work:
-
-SELECT COUNT(*) FROM pg_views WHERE schemanem='pg_catalog' AND viewname
-='pg_prepared_xacts'
-
-If it returns 1, you can do 2PC, if it returns 0, you have to regular
-commit.
-
-However, if this gets into 7.5, I guess you could just check for the
-version of the backend instead with "SELECT version()".
-
-- Heikki
-
----------------------------(end of broadcast)---------------------------
-TIP 4: Don't 'kill -9' the postmaster
-
-From pgsql-hackers-owner+M49946=pgman=candle.pha.pa.us@postgresql.org Mon Feb  9 14:18:20 2004
-Return-path: <pgsql-hackers-owner+M49946=pgman=candle.pha.pa.us@postgresql.org>
-Received: from postgresql.org (svr1.postgresql.org [200.46.204.71])
-	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id i19LIHr27947
-	for <pgman@candle.pha.pa.us>; Mon, 9 Feb 2004 16:18:18 -0500 (EST)
-X-Original-To: pgsql-hackers-postgresql.org@localhost.postgresql.org
-Received: from localhost (unknown [200.46.204.2])
-	by svr1.postgresql.org (Postfix) with ESMTP id 5B8CBD1C9E1
-	for <pgsql-hackers-postgresql.org@localhost.postgresql.org>; Mon,  9 Feb 2004 21:00:06 +0000 (GMT)
-Received: from svr1.postgresql.org ([200.46.204.71])
-	by localhost (neptune.hub.org [200.46.204.2]) (amavisd-new, port 10024)
-	with ESMTP id 25216-09
-	for <pgsql-hackers-postgresql.org@localhost.postgresql.org>;
-	Mon,  9 Feb 2004 16:59:56 -0400 (AST)
-Received: from smtp-out4.xs4all.nl (smtp-out4.xs4all.nl [194.109.24.5])
-	by svr1.postgresql.org (Postfix) with ESMTP id 0381AD1C4BC
-	for <pgsql-hackers@postgresql.org>; Mon,  9 Feb 2004 16:59:53 -0400 (AST)
-Received: from xs1.xs4all.nl (xs1.xs4all.nl [194.109.21.2])
-	by smtp-out4.xs4all.nl (8.12.10/8.12.10) with ESMTP id i19Kw1Oh062440;
-	Mon, 9 Feb 2004 21:59:41 +0100 (CET)
-Received: from xs1.xs4all.nl (jtv@localhost.xs4all.nl [127.0.0.1])
-	by xs1.xs4all.nl (8.12.10/8.12.9) with ESMTP id i19KuUBT033906;
-	Mon, 9 Feb 2004 21:56:30 +0100 (CET)
-	(envelope-from jtv@xs4all.nl)
-Received: (from jtv@localhost)
-	by xs1.xs4all.nl (8.12.10/8.12.9/Submit) id i19KuUgt033905;
-	Mon, 9 Feb 2004 21:56:30 +0100 (CET)
-	(envelope-from jtv)
-Date: Mon, 9 Feb 2004 21:56:30 +0100
-From: "Jeroen T. Vermeulen" <jtv@xs4all.nl>
-To: Heikki Linnakangas <hlinnaka@iki.fi>
-cc: PostgreSQL Development <pgsql-hackers@postgresql.org>
-Subject: Re: [HACKERS] Two-phase commit
-Message-ID: <20040209205629.GB13454@xs4all.nl>
-Mail-Followup-To: Heikki Linnakangas <hlinnaka@iki.fi>,
-	PostgreSQL Development <pgsql-hackers@postgresql.org>
-References: <Pine.OSF.4.58.0402042200330.238747@kosh.hut.fi> <20040208195332.GE25140@xs4all.nl> <Pine.OSF.4.58.0402092201460.226205@kosh.hut.fi>
-MIME-Version: 1.0
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: inline
-In-Reply-To: <Pine.OSF.4.58.0402092201460.226205@kosh.hut.fi>
-User-Agent: Mutt/1.4.1i
-X-Virus-Scanned: by amavisd-new at postgresql.org
-X-Mailing-List: pgsql-hackers
-Precedence: bulk
-Sender: pgsql-hackers-owner@postgresql.org
-X-Spam-Checker-Version: SpamAssassin 2.61 (1.212.2.1-2003-12-09-exp) on 
-	candle.pha.pa.us
-X-Spam-Status: No, hits=-4.9 required=5.0 tests=BAYES_00 autolearn=ham 
-	version=2.61
-Status: OR
-
-On Mon, Feb 09, 2004 at 10:09:34PM +0200, Heikki Linnakangas wrote:
-> 
-> However, if this gets into 7.5, I guess you could just check for the
-> version of the backend instead with "SELECT version()".
-
-Hey, that works?  That's very good news, because I was getting a bit
-worried about all the things I want to do in libpqxx that may depend on
-the Postgres version...
-
-Thanks!
-
-
----------------------------(end of broadcast)---------------------------
-TIP 3: if posting/reading through Usenet, please send an appropriate
-      subscribe-nomail command to majordomo@postgresql.org so that your
-      message can get through to the mailing list cleanly
-
-From pgsql-hackers-owner+M50540=pgman=candle.pha.pa.us@postgresql.org Sat Feb 28 14:40:52 2004
-Return-path: <pgsql-hackers-owner+M50540=pgman=candle.pha.pa.us@postgresql.org>
-Received: from postgresql.org (svr1.postgresql.org [200.46.204.71])
-	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id i1SLeoD13679
-	for <pgman@candle.pha.pa.us>; Sat, 28 Feb 2004 16:40:50 -0500 (EST)
-X-Original-To: pgsql-hackers-postgresql.org@localhost.postgresql.org
-Received: from localhost (unknown [200.46.204.2])
-	by svr1.postgresql.org (Postfix) with ESMTP id A0F5BD1E1AA
-	for <pgsql-hackers-postgresql.org@localhost.postgresql.org>; Sun, 22 Feb 2004 02:27:19 +0000 (GMT)
-Received: from svr1.postgresql.org ([200.46.204.71])
-	by localhost (neptune.hub.org [200.46.204.2]) (amavisd-new, port 10024)
-	with ESMTP id 92481-04
-	for <pgsql-hackers-postgresql.org@localhost.postgresql.org>;
-	Sat, 21 Feb 2004 22:27:18 -0400 (AST)
-Received: from main.gmane.org (main.gmane.org [80.91.224.249])
-	by svr1.postgresql.org (Postfix) with ESMTP id 54A72D1E197
-	for <pgsql-hackers@postgresql.org>; Sat, 21 Feb 2004 22:27:11 -0400 (AST)
-Received: from list by main.gmane.org with local (Exim 3.35 #1 (Debian))
-	id 1AujKe-0004i5-00
-	for <pgsql-hackers@postgresql.org>; Sun, 22 Feb 2004 03:27:00 +0100
-Received: from kosh.hut.fi ([130.233.228.10])
-        by main.gmane.org with esmtp (Gmexim 0.1 (Debian))
-        id 1AlnuQ-0007hv-00
-        for <pgsql-hackers@postgresql.org>; Sun Feb 22 02:27:00 2004
-Received: from hlinnaka by kosh.hut.fi with local (Gmexim 0.1 (Debian))
-        id 1AlnuQ-0007hv-00
-        for <pgsql-hackers@postgresql.org>; Sun Feb 22 02:27:00 2004
-X-Injected-Via-Gmane: http://gmane.org/
-To: pgsql-hackers@postgresql.org
-From: Heikki Linnakangas <hlinnaka@iki.fi>
-Subject: Re: [HACKERS] Two-phase commit
-Date: Sun, 22 Feb 2004 04:26:56 +0200
-Lines: 70
-Message-ID: <Pine.OSF.4.58.0402220324250.126984@kosh.hut.fi>
-References: <Pine.OSF.4.58.0402042200330.238747@kosh.hut.fi>
-	<200402080138.i181cPl15259@candle.pha.pa.us>
-MIME-Version: 1.0
-Content-Type: TEXT/PLAIN; charset=US-ASCII
-X-Complaints-To: usenet@sea.gmane.org
-X-Gmane-NNTP-Posting-Host: kosh.hut.fi
-X-X-Sender: hlinnaka@kosh.hut.fi
-In-Reply-To: <200402080138.i181cPl15259@candle.pha.pa.us>
-X-Virus-Scanned: by amavisd-new at postgresql.org
-X-Mailing-List: pgsql-hackers
-Precedence: bulk
-Sender: pgsql-hackers-owner@postgresql.org
-X-Spam-Checker-Version: SpamAssassin 2.61 (1.212.2.1-2003-12-09-exp) on 
-	candle.pha.pa.us
-X-Spam-Status: No, hits=-4.9 required=5.0 tests=BAYES_00 autolearn=ham 
-	version=2.61
-Status: OR
-
-On Sat, 7 Feb 2004, Bruce Momjian wrote:
-
-> > Please have a look and comment, the patches can be found here:
-> > http://www.iki.fi/hlinnaka/pgsql/
-> >
-> > What is the schedule for 7.5? Any chance of getting this in?
->
-> 7.5 is certainly possible.  We are months away from beta on 7.5 and I
-> would like ot see two-phase commit included.  One item that has come up
-> in past discussions is a way of recording two-phase commit failures to
-> the administrator in cases where you precommit, get a reply, commit,
-> then the remote machine disappears.
-
-You would resolve this by opening a new session, and checking if the gid
-you specified in PREPARE TRANSACTION is still present in the
-pg_prepared_xacts view. It could be done manually by the administrator, or
-it could be done automatically by an external transaction manager if
-there is one.
-
-The XA interface specifies a function called "recover", that gives you a
-list of pending transactions. If we some day have an XA implementation,
-the recover call would map directly to "SELECT gid FROM
-pg_prepared_xacts". The JDBC XA implementation that I'm working on does
-that already.
-
-I have updated my patches, see the URL above. I renamed the commands to
-PREPARE TRANSACTION, COMMIT PREPARED and ROLLBACK PREPARED. I think it's
-more coherent that way.
-
-I also added documentation entries for the commands, and a basic
-regression test.
-
-I went through all the AtCommit_* and AtEOXact* hooks in xact.c to find
-any possible problem areas. The following items have not yet been
-implemented and throw an error if you try to do 2PC in the same
-transaction.
-
-* Notifications (NOTIFY/LISTEN). All pending notifications should be
-stored in persistent storage in the prepare phase, and sent in the commit
-phase.
-
-* Creation/deletion of relations. I couldn't figure out how the relation
-cache invalidation stuff should work with 2PC.
-
-* Modifying GUC variables. I need to study the GUC code more thoroughly
-before I can tell what needs to be done.
-
-* Updates to shadow/group files, that is, CREATE USER and friends. Needs
-some tricks to delay the writing of pg_pwd/pg_group.
-
-* Large objects. AFAICS, no particular problem here, but I'd like to deal
-with them later when the more important stuff are ok.
-
-Plus a couple of minor details:
-
-* Temporary tables. The seem to work somehow, but I haven't tested them
-much. I have a feeling that nasty things might happen if you commit the
-prepared transaction from another backend etc.
-
-* initdb gives a warning about a missing file. It's harmless, but I
-don't see how to detect that you're running under initdb. Also, if you
-try to prapare a transaction with a global transaction identifier that's
-already in use, you first get a warning and then an error.
-
-I'm going to tackle the above problems later, but I would like to get
-this applied to the cvs trunk with the current functionality first, after
-discussion of course. The rest are nice to have for the sake of
-completeness but probably not necessary for most users.
-
-- Heikki
-
-
----------------------------(end of broadcast)---------------------------
-TIP 5: Have you checked our extensive FAQ?
-
-               http://www.postgresql.org/docs/faqs/FAQ.html
-
-From pgsql-general-owner+M58726=pgman=candle.pha.pa.us@postgresql.org Fri Mar 19 01:00:58 2004
-Return-path: <pgsql-general-owner+M58726=pgman=candle.pha.pa.us@postgresql.org>
-Received: from postgresql.org (svr1.postgresql.org [200.46.204.71])
-	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id i2J80ud15620
-	for <pgman@candle.pha.pa.us>; Fri, 19 Mar 2004 03:00:57 -0500 (EST)
-X-Original-To: pgsql-general-postgresql.org@localhost.postgresql.org
-Received: from localhost (unknown [200.46.204.2])
-	by svr1.postgresql.org (Postfix) with ESMTP id 53189D1BB74
-	for <pgsql-general-postgresql.org@localhost.postgresql.org>; Fri, 19 Mar 2004 07:31:13 +0000 (GMT)
-Received: from svr1.postgresql.org ([200.46.204.71])
-	by localhost (neptune.hub.org [200.46.204.2]) (amavisd-new, port 10024)
-	with ESMTP id 87439-01
-	for <pgsql-general-postgresql.org@localhost.postgresql.org>;
-	Fri, 19 Mar 2004 03:31:05 -0400 (AST)
-Received: from builder.localdomain (unknown [61.94.124.129])
-	by svr1.postgresql.org (Postfix) with SMTP id 12CC3D1B80B
-	for <pgsql-general@postgresql.org>; Fri, 19 Mar 2004 03:30:59 -0400 (AST)
-Received: (qmail 11710 invoked from network); 19 Mar 2004 07:30:55 -0000
-Received: from unknown (HELO zara.6.isreserved.com) (192.168.0.113)
-  by builder.localdomain with SMTP; 19 Mar 2004 07:30:55 -0000
-Message-ID: <405AA1B0.3080600@zara.6.isreserved.com>
-Date: Fri, 19 Mar 2004 14:30:56 +0700
-From: David Garamond <lists@zara.6.isreserved.com>
-User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.6b) Gecko/20031208
-X-Accept-Language: en-us, en
-MIME-Version: 1.0
-To: Matthew Hixson <hixson@poindextrose.org>
-cc: pgsql-general@postgresql.org
-Subject: Re: [GENERAL] two phase commit
-References: <68FB14C4-7963-11D8-B6BA-000A95D05926@poindextrose.org>
-In-Reply-To: <68FB14C4-7963-11D8-B6BA-000A95D05926@poindextrose.org>
-Content-Type: text/plain; charset=us-ascii; format=flowed
-Content-Transfer-Encoding: 7bit
-X-Virus-Scanned: by amavisd-new at postgresql.org
-X-Mailing-List: pgsql-general
-Precedence: bulk
-Sender: pgsql-general-owner@postgresql.org
-X-Spam-Checker-Version: SpamAssassin 2.61 (1.212.2.1-2003-12-09-exp) on 
-	candle.pha.pa.us
-X-Spam-Status: No, hits=-4.9 required=5.0 tests=BAYES_00 autolearn=ham 
-	version=2.61
-Status: OR
-
-Matthew Hixson wrote:
->  From what I can find with Google it looks like TPC might make it into 
-> Postgrs 7.5.  I was wondering if there were any commercial products or 
-> open source projects that can provide TPC on top of Postgres.  Or is 
-> this something that really needs to be handled by the database itself?
-
-With the 2PC patch submitted, you can interface with it at the SQL level 
-(i.e. you prepare, commit, cancel prepare, etc. by issuing ordinary SQL 
-commands). This means it will be pretty trivial to make it work with 
-other components like TX manager, etc. For example, I'm guessing it will 
-be easy to add 2PC support to npgsql (.NET data provider).
-
-PS: It's really nice to see Postgres coming along feature-wise. 2PC and 
-nested transaction (aside from native Windows port, of course) are the 
-main things Firebird has that Potsgres hasn't. After that, we can pretty 
-much leave FB in the dust... :-)
-
--- 
-dave
-
----------------------------(end of broadcast)---------------------------
-TIP 3: if posting/reading through Usenet, please send an appropriate
-      subscribe-nomail command to majordomo@postgresql.org so that your
-      message can get through to the mailing list cleanly
-
-From pgsql-hackers-owner+M51632@postgresql.org Tue Mar 23 10:18:06 2004
-Return-path: <pgsql-hackers-owner+M51632@postgresql.org>
-Received: from postgresql.org (svr1.postgresql.org [200.46.204.71])
-	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id i2NHI0d16063
-	for <pgman@candle.pha.pa.us>; Tue, 23 Mar 2004 12:18:02 -0500 (EST)
-X-Original-To: pgsql-hackers-postgresql.org@localhost.postgresql.org
-Received: from localhost (unknown [200.46.204.2])
-	by svr1.postgresql.org (Postfix) with ESMTP
-	id BFD64D1EBB0; Tue, 23 Mar 2004 16:11:15 +0000 (GMT)
-Received: from svr1.postgresql.org ([200.46.204.71])
-	by localhost (neptune.hub.org [200.46.204.2]) (amavisd-new, port 10024)
-	with ESMTP id 35500-05; Tue, 23 Mar 2004 12:11:00 -0400 (AST)
-Received: from smtp-4.hut.fi (smtp-4.hut.fi [130.233.228.94])
-	by svr1.postgresql.org (Postfix) with ESMTP
-	id 411C3D1E2D7; Tue, 23 Mar 2004 12:10:58 -0400 (AST)
-Received: from kosh.hut.fi (kosh.hut.fi [130.233.228.10])
-	by smtp-4.hut.fi (8.12.10/8.12.10) with ESMTP id i2NGAZTZ028569;
-	Tue, 23 Mar 2004 18:10:45 +0200
-Date: Tue, 23 Mar 2004 18:10:35 +0200 (EET)
-From: Heikki Linnakangas <hlinnaka@iki.fi>
-X-X-Sender: hlinnaka@kosh.hut.fi
-To: pgsql-hackers@postgresql.org
-cc: pgsql-patches@postgresql.org
-Subject: Re: [HACKERS] Two-phase commit
-In-Reply-To: <Pine.OSF.4.58.0402220324250.126984@kosh.hut.fi>
-Message-ID: <Pine.OSF.4.58.0403231758350.513267@kosh.hut.fi>
-References: <Pine.OSF.4.58.0402042200330.238747@kosh.hut.fi>
-	<200402080138.i181cPl15259@candle.pha.pa.us> <Pine.OSF.4.58.0402220324250.126984@kosh.hut.fi>
-MIME-Version: 1.0
-Content-Type: MULTIPART/MIXED; BOUNDARY="182774146-1920606540-1080058235=:513267"
-X-RAVMilter-Version: 8.4.3(snapshot 20030212) (smtp-4.hut.fi)
-X-Virus-Scanned: by amavisd-new at postgresql.org
-X-Mailing-List: pgsql-hackers
-Precedence: bulk
-Sender: pgsql-hackers-owner@postgresql.org
-X-Spam-Checker-Version: SpamAssassin 2.61 (1.212.2.1-2003-12-09-exp) on 
-	candle.pha.pa.us
-X-Spam-Status: No, hits=-4.9 required=5.0 tests=BAYES_00 autolearn=ham 
-	version=2.61
-Status: ORr
-
-  This message is in MIME format.  The first part should be readable text,
-  while the remaining parts are likely unreadable without MIME-aware tools.
-  Send mail to mime@docserver.cac.washington.edu for more info.
-
---182774146-1920606540-1080058235=:513267
-Content-Type: TEXT/PLAIN; charset=US-ASCII
-
-I have again updated my two-phase commit patches. Only minor
-modifications.
-
-I haven't received any comments and there hasn't been any discussion on
-the implementation, I suppose that nobody has given it a try. :(
-
-There is still some rough edges, but I think it's good enough as a first
-cut. I personally consider it ready to be applied to cvs tip, but then
-again I'm still a newbie :). Please take a look!
-
-The patch is also available here: http://www.iki.fi/hlinnaka/pgsql/
-
-- Heikki
---182774146-1920606540-1080058235=:513267
-Content-Type: APPLICATION/x-gzip; name="twophase_20040321.diff.gz"
-Content-Transfer-Encoding: BASE64
-Content-ID: <Pine.OSF.4.58.0403231810351.513267@kosh.hut.fi>
-Content-Description: 
-Content-Disposition: attachment; filename="twophase_20040321.diff.gz"
-
-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
-s8QjQZRUeJkCfgcDmXXXlCq22MOkQ+Z8Q9hxQ7TR0wZ3XP+ug47ZhKFm2IqZ
-xPvoBbSa9NkTYE1CSKEEMKEAUgwgmcT9vrXGBhS9G8LV4HIQP0QDtkQl5dr0
-ThIjFZd58rg6QKyU75Koi7bPOEzHcvge+jYZcvDjtWUqz5U+oOiO+BfqHYqj
-ogHSsiMcOodMhnVjJSGa4w4AuLbuZhAkvovuOWbuQM6TZnwFjNlN4k9UInb+
-tN9FaOWIXK2oCHk0BnRI2PFGldFdz+0aM8wHw+lgsk/w3kobMCtvXqe6Ybhw
-fZtBsvkJtZgIXiT5BfqxNvnUxkkUjtF5OuXHTr+4AB9wek3KIUfV5wTEvZEa
-FPGVN7il1Lcw6WWqGCB7yWR6fU1b9BtZDmsqUMg70w1N4AJiPtIZsWKZTzix
-zyapMP6m4CPeLXgBjsGnBh/E8B5AizDTPaBMrPEInRIB31CIHaOcUO/mjxFJ
-xafkv5X4XhIuJOh/ByOK36FjDVfGcBfd4eCaTUEJNonGQw4uFukzbAeqqqJJ
-9qg57rEqydLDAiORFkOrVtTvA8W9vrsZs8IMv1jjODpShfxS02+pqPgAyn23
-2dpvtNoHjeNWu1kn1ZF+Aw2ciUI/QhDGtUFPNMGU3uGRqMY9thcuPPTJDMEa
-xj/0oQ6Dpa9rD8TRvKYdWjSGHdq8isuErauokTUY9XU0thYtb+m3fU+mSa+V
-oM2yKj4nmA4EuKJTdBRUeqOyW9/ebIkBnIHqtVaoOzj3888/q+b788uTQ4Wm
-KWq/0dj/uzo/Uo36ydHxSf3s/LC+mqjWuTpsnF+YlefVA4g4Z8ckYS82Tjm4
-yPFhCR7rUCPCAABFoZ5Qr+0BmdJGKPY9pM0UQDG9gUR0C6/rZ4d5C/4WBXCi
-JEAzYzi/kaiv4vU70bop7Kc5R49R5TaaCoadPp50kgljqzah1jT29BGn+bTT
-i3AUdXKvsTZxzutWdDdqRH0Zlmc2B11s3g7v1d0j0OFrtKoW+8KAv9TFu4vG
-+YHYvEjvUIiKYXUQZVP9E+ViPp3zbyIhHuarLi9M1nI2O4l5D+tvL99VSNdB
-KQqQUw4a6CHr/KfkHwNr//XEjS5E43/rPl98ozJDb5x6F9mwIX/sOXtT/IS/
-/ihXmmPIiAOEYaBk0FuVUrWqVrbgbiOXhgLfPYlhC2xjjJlQwKBDeKGjj69h
-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
-
---182774146-1920606540-1080058235=:513267
-Content-Type: text/plain
-Content-Disposition: inline
-Content-Transfer-Encoding: 8bit
-MIME-Version: 1.0
-
-
----------------------------(end of broadcast)---------------------------
-TIP 9: the planner will ignore your desire to choose an index scan if your
-      joining column's datatypes do not match
-
---182774146-1920606540-1080058235=:513267--
-
-From pgsql-hackers-owner+M51641@postgresql.org Tue Mar 23 11:32:25 2004
-Return-path: <pgsql-hackers-owner+M51641@postgresql.org>
-Received: from postgresql.org (svr1.postgresql.org [200.46.204.71])
-	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id i2NIWId29116
-	for <pgman@candle.pha.pa.us>; Tue, 23 Mar 2004 13:32:24 -0500 (EST)
-X-Original-To: pgsql-hackers-postgresql.org@localhost.postgresql.org
-Received: from localhost (unknown [200.46.204.2])
-	by svr1.postgresql.org (Postfix) with ESMTP id 28F60D1EC42
-	for <pgsql-hackers-postgresql.org@localhost.postgresql.org>; Tue, 23 Mar 2004 18:28:57 +0000 (GMT)
-Received: from svr1.postgresql.org ([200.46.204.71])
-	by localhost (neptune.hub.org [200.46.204.2]) (amavisd-new, port 10024)
-	with ESMTP id 11478-09
-	for <pgsql-hackers-postgresql.org@localhost.postgresql.org>;
-	Tue, 23 Mar 2004 14:28:55 -0400 (AST)
-Received: from alvh.no-ip.org (200.85.202.54.DSL.surnet.cl [200.85.202.54])
-	by svr1.postgresql.org (Postfix) with ESMTP id 7D042D1EC0D
-	for <pgsql-hackers@postgresql.org>; Tue, 23 Mar 2004 14:28:54 -0400 (AST)
-Received: by alvh.no-ip.org (Postfix, from userid 500)
-	id 8877D5759D; Tue, 23 Mar 2004 13:28:43 -0500 (EST)
-Date: Tue, 23 Mar 2004 14:28:43 -0400
-From: Alvaro Herrera <alvherre@dcc.uchile.cl>
-To: Heikki Linnakangas <hlinnaka@iki.fi>
-cc: pgsql-hackers@postgresql.org
-Subject: Re: [HACKERS] Two-phase commit
-Message-ID: <20040323182843.GF3863@dcc.uchile.cl>
-References: <Pine.OSF.4.58.0402042200330.238747@kosh.hut.fi> <200402080138.i181cPl15259@candle.pha.pa.us> <Pine.OSF.4.58.0402220324250.126984@kosh.hut.fi> <Pine.OSF.4.58.0403231758350.513267@kosh.hut.fi>
-MIME-Version: 1.0
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: inline
-In-Reply-To: <Pine.OSF.4.58.0403231758350.513267@kosh.hut.fi>
-User-Agent: Mutt/1.4.1i
-X-Virus-Scanned: by amavisd-new at postgresql.org
-X-Mailing-List: pgsql-hackers
-Precedence: bulk
-Sender: pgsql-hackers-owner@postgresql.org
-X-Spam-Checker-Version: SpamAssassin 2.61 (1.212.2.1-2003-12-09-exp) on 
-	candle.pha.pa.us
-X-Spam-Status: No, hits=-4.9 required=5.0 tests=BAYES_00 autolearn=ham 
-	version=2.61
-Status: ORr
-
-On Tue, Mar 23, 2004 at 06:10:35PM +0200, Heikki Linnakangas wrote:
-> I have again updated my two-phase commit patches. Only minor
-> modifications.
-> 
-> I haven't received any comments and there hasn't been any discussion on
-> the implementation, I suppose that nobody has given it a try. :(
-
-I haven't tried it, but I see it conflicts big time with my
-modifications in access/transam/xact.c for subtransactions support.
-
-I am currently writing a proposal for nested transactions which will go
-to -hackers, and I will be posting some code to -patches shortly
-thereafter which should give you an idea where I am heading.  Maybe then
-we can have the opinion from the devel community about both things,
-whether they should be applied or not.
-
--- 
-Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
-"El miedo atento y previsor es la madre de la seguridad" (E. Burke)
-
----------------------------(end of broadcast)---------------------------
-TIP 6: Have you searched our list archives?
-
-               http://archives.postgresql.org
-
-From jtv@xs4all.nl Tue Jun 29 10:18:43 2004
-Return-path: <jtv@xs4all.nl>
-Received: from smtp-out3.xs4all.nl (smtp-out3.xs4all.nl [194.109.24.13])
-	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id i5TEIeC19886
-	for <pgman@candle.pha.pa.us>; Tue, 29 Jun 2004 10:18:42 -0400 (EDT)
-Received: from xs1.xs4all.nl (xs1.xs4all.nl [194.109.21.2])
-	by smtp-out3.xs4all.nl (8.12.10/8.12.10) with ESMTP id i5TEIcdQ066827;
-	Tue, 29 Jun 2004 16:18:38 +0200 (CEST)
-Received: from xs1.xs4all.nl (jtv@localhost.xs4all.nl [127.0.0.1])
-	by xs1.xs4all.nl (8.12.10/8.12.10) with ESMTP id i5TEIcfr057746;
-	Tue, 29 Jun 2004 16:18:38 +0200 (CEST)
-	(envelope-from jtv@xs4all.nl)
-Received: (from jtv@localhost)
-	by xs1.xs4all.nl (8.12.10/8.12.9/Submit) id i5TEIcD1057745;
-	Tue, 29 Jun 2004 16:18:38 +0200 (CEST)
-	(envelope-from jtv)
-Date: Tue, 29 Jun 2004 16:18:38 +0200
-From: "Jeroen T. Vermeulen" <jtv@xs4all.nl>
-To: pgadmin@pse-consulting.de, Bruce Momjian <pgman@candle.pha.pa.us>
-Subject: Two-phase commit
-Message-ID: <20040629141837.GL56428@xs4all.nl>
-MIME-Version: 1.0
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: inline
-User-Agent: Mutt/1.4.1i
-X-Spam-Checker-Version: SpamAssassin 2.61 (1.212.2.1-2003-12-09-exp) on 
-	candle.pha.pa.us
-X-Spam-Status: No, hits=-4.9 required=5.0 tests=BAYES_00 autolearn=ham 
-	version=2.61
-Status: ORr
-
-Hi Andreas, Bruce:
-
-I briefly discussed this with both of you separately.  The 2-phase-commit
-patch that's being worked on has the shortcoming that the "supercommit"
-is assumed to come over the same connection as the regular database
-session, i.e. the transaction manager (the middleware that manages the
-two-phase transaction across multibple databases etc.) also has to serve
-as a proxy for the regular database session.
-
-A "real" two-phase commit system has the two phases of the transaction
-going over separate connections--one between application and database
-server, one between middleware and database server.  Andreas quite
-sensibly asked me why; and the real answer only just popped back into
-my head.
-
-I think the real reason is the same reason why we want 2PC in the first
-place.  Connections may be lost _just_ when the middleware is sending out
-second-phase commits to the various resource managers.  In that case, it
-is absolutely essential that the transaction manager be able to reconnect
-to the resource manager (in this case, postgres) and continue where it
-left off.  A regular session can't do that, and that's exactly where the
-2nd phase is being implemented right now.
-
-The way the current patch does things is more like the Oracle model.
-Oracle has a "prepare commit" command (which I think even makes more
-sense for this approach than making things look like nested transactions).
-However I'm told that Oracle builds on the assumption of a two-tier
-system, and it doesn't work very well.  If two-tier were good enough, then
-I suspect you might as well use something like my robusttransaction class
-which catches the special case of losing connection during commit, then
-tries to reconnect and find out whether the commit went through or not.
-
-As I mentioned to Bruce at FOSDEM last year, what I'd really need to get
-that right (and the same goes for 2pc) I needed to be able to query the
-transaction log in some way, to find out what happened to a transaction.
-I've always assumed, and still believe, that what I did here was just a
-hack to make the worst case a bit less likely.  It's not what I would call
-a solution to the atomicity problem.
-
-On the other hand, of course, at least one traditional argument for 3-tier
-setups doesn't apply to us: we don't need connection pooling on the
-middleware just to keep the per-connection licensing cost down.  :)
-
-
-Jeroen
-
-From pgsql-hackers-owner+M59934=pgman=candle.pha.pa.us@postgresql.org Tue Oct 12 15:27:20 2004
-Return-path: <pgsql-hackers-owner+M59934=pgman=candle.pha.pa.us@postgresql.org>
-Received: from svr1.postgresql.org (svr1.postgresql.org [200.46.204.71])
-	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id i9CJRJp09792
-	for <pgman@candle.pha.pa.us>; Tue, 12 Oct 2004 15:27:19 -0400 (EDT)
-Received: from localhost (unknown [200.46.204.144])
-	by svr1.postgresql.org (Postfix) with ESMTP id E0D5B32AD90
-	for <pgman@candle.pha.pa.us>; Tue, 12 Oct 2004 20:27:15 +0100 (BST)
-Received: from svr1.postgresql.org ([200.46.204.71])
-	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
-	with ESMTP id 89028-10 for <pgman@candle.pha.pa.us>;
-	Tue, 12 Oct 2004 19:27:14 +0000 (GMT)
-Received: from postgresql.org (svr1.postgresql.org [200.46.204.71])
-	by svr1.postgresql.org (Postfix) with ESMTP id 524D832AC81
-	for <pgman@candle.pha.pa.us>; Tue, 12 Oct 2004 20:27:15 +0100 (BST)
-X-Original-To: pgsql-hackers-postgresql.org@localhost.postgresql.org
-Received: from localhost (unknown [200.46.204.144])
-	by svr1.postgresql.org (Postfix) with ESMTP id 7B81632B6BE
-	for <pgsql-hackers-postgresql.org@localhost.postgresql.org>; Thu,  7 Oct 2004 12:18:35 +0100 (BST)
-Received: from svr1.postgresql.org ([200.46.204.71])
-	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
-	with ESMTP id 22385-04
-	for <pgsql-hackers-postgresql.org@localhost.postgresql.org>;
-	Thu,  7 Oct 2004 11:17:11 +0000 (GMT)
-Received: from smtp-3.hut.fi (smtp-3.hut.fi [130.233.228.93])
-	by svr1.postgresql.org (Postfix) with ESMTP id 50FBE32B722
-	for <pgsql-hackers@postgresql.org>; Thu,  7 Oct 2004 12:16:45 +0100 (BST)
-Received: from kosh.hut.fi (kosh.hut.fi [130.233.228.10])
-	by smtp-3.hut.fi (8.12.10/8.12.10) with ESMTP id i97BFicq021410;
-	Thu, 7 Oct 2004 14:15:45 +0300
-Date: Thu, 7 Oct 2004 14:15:44 +0300 (EEST)
-From: Heikki Linnakangas <hlinnaka@iki.fi>
-X-X-Sender: hlinnaka@kosh.hut.fi
-To: Tom Lane <tgl@sss.pgh.pa.us>
-cc: Heikki Linnakangas <hlinnaka@iki.fi>, pgsql-hackers@postgresql.org
-Subject: Re: [HACKERS] Two-phase commit
-In-Reply-To: <354.1097099170@sss.pgh.pa.us>
-Message-ID: <Pine.OSF.4.61.0410071357420.432862@kosh.hut.fi>
-References: <Pine.OSF.4.58.0402042200330.238747@kosh.hut.fi>
-	<200402080138.i181cPl15259@candle.pha.pa.us> <Pine.OSF.4.58.0402220324250.126984@kosh.hut.fi>
-	<Pine.OSF.4.58.0403231758350.513267@kosh.hut.fi> <354.1097099170@sss.pgh.pa.us>
-MIME-Version: 1.0
-Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
-X-RAVMilter-Version: 8.4.3(snapshot 20030212) (smtp-3.hut.fi)
-X-Virus-Scanned: by amavisd-new at hub.org
-X-Mailing-List: pgsql-hackers
-Precedence: bulk
-Sender: pgsql-hackers-owner@postgresql.org
-X-Virus-Scanned: by amavisd-new at hub.org
-X-Spam-Checker-Version: SpamAssassin 2.61 (1.212.2.1-2003-12-09-exp) on 
-	candle.pha.pa.us
-X-Spam-Status: No, hits=-4.9 required=5.0 tests=BAYES_00 autolearn=ham 
-	version=2.61
-Status: OR
-
-On Wed, 6 Oct 2004, Tom Lane wrote:
-
-> Quite some time ago, Heikki Linnakangas <hlinnaka@iki.fi> wrote:
->> I haven't received any comments and there hasn't been any discussion on
->> the implementation, I suppose that nobody has given it a try. :(
->
-> I finally got around to taking a close look at this.  There's a good bit
-> undone, as you well know, but it seems like it can be the basis for a
-> workable feature.  I do have a few comments to make.
-
-Great!
-
-> At the API level, I like the PREPARE/COMMIT/ROLLBACK statements, but I
-> think you have missed a bet in that it needs to be possible to issue
-> "COMMIT PREPARED gid" for the same gid several times without error.
-> Consider a scenario where the transaction monitor crashes during the
-> commit phase.  When it recovers, it will be aware that it had committed
-> to commit, but it won't know which nodes were successfully committed.
-> So it will need to resend the COMMIT commands.  It would be bad for the
-> nodes to simply say "yes boss" if they are told to COMMIT a gid they
-> have no record of.  So I think the gid's have to stick around after
-> COMMIT PREPARED or ROLLBACK PREPARED, and there needs to be a fourth
-> command (RELEASE PREPARED?) to actually remove the state data when the
-> transaction monitor is satisfied that everything's done.  RELEASE of
-> an unknown gid is okay to be a no-op.
-
-Hmm. I don't see a problem with the "yes boss" approach. Some kind of a 
-warning is appropriate, of course, but I don't see a reason for an 
-additional step. After all, you would still fall back to the "yes boss" 
-approach on the RELEASE PREPARED command.
-
-The transaction monitor knows if the 1st phase succeeded or not, so if the 
-COMMIT PREPARED doesn't find the transaction anymore, the monitor knows 
-that it's previous commit/rollback succeeded.
-
-> Implementation-wise, I really dislike storing the info in a shared hash
-> table, because I don't see any reasonable bound on the size of the hash
-> table (your existing code uses 100 which is about as arbitrary as it
-> gets).  Plus the actual content of each entry is not fixed-size either.
-> This is not very workable given our fixed-size shared memory mechanism.
-
-I fully agree, I'm very dissatisfied with that part.
-
-> The idea that occurs to me instead is to not use WAL or shared memory at
-> all for keeping the prepared-transaction state info.  Instead, suppose
-> that we store the status information in a file named after the GID,
-> "$PGDATA/pg_twophase/gid".  We could write the file with a CRC similarly
-> to what's done for pg_control.  Once such a file is written and fsync'd,
-> it's equally as reliable as a WAL record would be, so it seems safe
-> enough to me to report the PREPARE as done.  COMMIT, ROLLBACK, and the
-> pg_prepared_xacts system view would look into the pg_twophase directory
-> to find out all about active prepared transactions; RELEASE PREPARED
-> would simply delete the appropriate file.  (Note: commit or rollback
-> would need to take the transaction XID from the GID file and then look
-> in pg_clog to find out if the transaction were already committed.  These
-> operations do not change the pg_twophase file, but they do write a
-> normal transaction-commit or -abort WAL record and update pg_clog.)
-
-That sounds like a clever idea! I thought about using a single file 
-myself, but the multi-file approach is much simpler.
-
-> I think this would offer better performance as well as being more
-> scalable, because the implementation you have looks like it would have
-> some contention for the shared GID hashtable.
-
-I guess the performance would depend a lot on how good/bad the filesystem 
-is at creating and deleting a lot of small files.
-
-> I would be inclined to require GIDs to be numbers (probably int8's)
-> instead of strings, so that we don't have any problems with funny
-> characters in the file names.  That's negotiable though, as we could
-> certainly uuencode the strings or something to avoid that trap.
-
-I'm afraid we have to support arbitrary strings. I think at least the Java 
-Transaction API requires that, I'm not sure though if that could be 
-worked around in the JDBC driver.
-
-> You were concerned about how to mark prepared transactions in pg_clog,
-> given that Alvaro had already commandeered state '11' for
-> subtransactions.  Since only a toplevel transaction can be prepared,
-> it might work to allow state '11' with a zero pg_subtrans parent link
-> to mean a prepared transaction.  This would imply factoring prepared
-> XIDs into GlobalXmin (so that pg_subtrans entries don't get recycled
-> too soon) but we probably have to do that anyway.  AFAICS, prepared
-> but uncommitted XIDs have to be considered still InProgress, so if
-> they are less than GlobalXmin we'd lose.
-
-Yes, they must be considered InProgress. The snapshot code needs to be 
-modified to handle an arbitrary number of in progress transactions.
-
-
-I've been thinking if it would be useful to have the COMMIT
-PREPARED/ROLLBACK PREPARED commands under transaction control themselves. 
-You could for example do "BEGIN; COMMIT PREPARED mygid; COMMIT PREPARED 
-mygid2; COMMIT;" to atomically commit two already-prepared transactions, 
-and even chain the 2PC transactions like "BEGIN; COMMIT PREPARED mygid; 
-PREPARE TRANSACTION mygid2". It seems feasible to implement, just postpone 
-the actual 2nd phase commit to the end of the commit of the enclosing 
-transaction.
-
-- Heikki
-
----------------------------(end of broadcast)---------------------------
-TIP 7: don't forget to increase your free space map settings
-
-From pgsql-hackers-owner+M59924=pgman=candle.pha.pa.us@postgresql.org Tue Oct 12 15:25:43 2004
-Return-path: <pgsql-hackers-owner+M59924=pgman=candle.pha.pa.us@postgresql.org>
-Received: from svr1.postgresql.org (svr1.postgresql.org [200.46.204.71])
-	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id i9CJPfp08866
-	for <pgman@candle.pha.pa.us>; Tue, 12 Oct 2004 15:25:42 -0400 (EDT)
-Received: from localhost (unknown [200.46.204.144])
-	by svr1.postgresql.org (Postfix) with ESMTP id C0C3D32BB7C
-	for <pgman@candle.pha.pa.us>; Tue, 12 Oct 2004 20:25:37 +0100 (BST)
-Received: from svr1.postgresql.org ([200.46.204.71])
-	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
-	with ESMTP id 86781-07 for <pgman@candle.pha.pa.us>;
-	Tue, 12 Oct 2004 19:25:36 +0000 (GMT)
-Received: from postgresql.org (svr1.postgresql.org [200.46.204.71])
-	by svr1.postgresql.org (Postfix) with ESMTP id 2F57A32BB46
-	for <pgman@candle.pha.pa.us>; Tue, 12 Oct 2004 20:25:37 +0100 (BST)
-X-Original-To: pgsql-hackers-postgresql.org@localhost.postgresql.org
-Received: from localhost (unknown [200.46.204.144])
-	by svr1.postgresql.org (Postfix) with ESMTP id B4BAD32A071
-	for <pgsql-hackers-postgresql.org@localhost.postgresql.org>; Sat,  9 Oct 2004 12:48:23 +0100 (BST)
-Received: from svr1.postgresql.org ([200.46.204.71])
-	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
-	with ESMTP id 38695-06
-	for <pgsql-hackers-postgresql.org@localhost.postgresql.org>;
-	Sat,  9 Oct 2004 11:48:09 +0000 (GMT)
-Received: from smtp-3.hut.fi (smtp-3.hut.fi [130.233.228.93])
-	by svr1.postgresql.org (Postfix) with ESMTP id A887832A4FE
-	for <pgsql-hackers@postgresql.org>; Sat,  9 Oct 2004 12:48:10 +0100 (BST)
-Received: from kosh.hut.fi (kosh.hut.fi [130.233.228.10])
-	by smtp-3.hut.fi (8.12.10/8.12.10) with ESMTP id i99Bm9UD031611
-	for <pgsql-hackers@postgresql.org>; Sat, 9 Oct 2004 14:48:09 +0300
-Date: Sat, 9 Oct 2004 14:48:09 +0300 (EEST)
-From: Heikki Linnakangas <hlinnaka@iki.fi>
-X-X-Sender: hlinnaka@kosh.hut.fi
-To: pgsql-hackers@postgresql.org
-Subject: [HACKERS] Two-phase commit patch updated
-In-Reply-To: <354.1097099170@sss.pgh.pa.us>
-Message-ID: <Pine.OSF.4.61.0410091429320.339489@kosh.hut.fi>
-References: <Pine.OSF.4.58.0402042200330.238747@kosh.hut.fi>
-	<200402080138.i181cPl15259@candle.pha.pa.us> <Pine.OSF.4.58.0402220324250.126984@kosh.hut.fi>
-	<Pine.OSF.4.58.0403231758350.513267@kosh.hut.fi> <354.1097099170@sss.pgh.pa.us>
-MIME-Version: 1.0
-Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
-X-RAVMilter-Version: 8.4.3(snapshot 20030212) (smtp-3.hut.fi)
-X-Virus-Scanned: by amavisd-new at hub.org
-X-Mailing-List: pgsql-hackers
-Precedence: bulk
-Sender: pgsql-hackers-owner@postgresql.org
-X-Virus-Scanned: by amavisd-new at hub.org
-X-Spam-Checker-Version: SpamAssassin 2.61 (1.212.2.1-2003-12-09-exp) on 
-	candle.pha.pa.us
-X-Spam-Status: No, hits=-4.9 required=5.0 tests=BAYES_00 autolearn=ham 
-	version=2.61
-Status: OR
-
-I brought the 2PC patch up to date:
-
-http://www.hut.fi/~hlinnaka/pgsql/
-
-There's no new functionality, I just fixed all the bit rot so that it 
-applies to the current CVS tip.
-
-- Heikki
-
----------------------------(end of broadcast)---------------------------
-TIP 2: you can get off all lists at once with the unregister command
-    (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
-
-From pgsql-hackers-owner+M60193=pgman=candle.pha.pa.us@postgresql.org Wed Oct 20 11:43:40 2004
-Return-path: <pgsql-hackers-owner+M60193=pgman=candle.pha.pa.us@postgresql.org>
-Received: from svr1.postgresql.org (svr1.postgresql.org [200.46.204.71])
-	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id i9KFhdf10906
-	for <pgman@candle.pha.pa.us>; Wed, 20 Oct 2004 11:43:40 -0400 (EDT)
-Received: from localhost (unknown [200.46.204.144])
-	by svr1.postgresql.org (Postfix) with ESMTP id 6358632A158
-	for <pgman@candle.pha.pa.us>; Wed, 20 Oct 2004 16:43:37 +0100 (BST)
-Received: from svr1.postgresql.org ([200.46.204.71])
-	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
-	with ESMTP id 60338-02 for <pgman@candle.pha.pa.us>;
-	Wed, 20 Oct 2004 15:43:36 +0000 (GMT)
-Received: from postgresql.org (svr1.postgresql.org [200.46.204.71])
-	by svr1.postgresql.org (Postfix) with ESMTP id 01CF832A12A
-	for <pgman@candle.pha.pa.us>; Wed, 20 Oct 2004 16:43:37 +0100 (BST)
-X-Original-To: pgsql-hackers-postgresql.org@localhost.postgresql.org
-Received: from localhost (unknown [200.46.204.144])
-	by svr1.postgresql.org (Postfix) with ESMTP id 0A2B932B107
-	for <pgsql-hackers-postgresql.org@localhost.postgresql.org>; Wed, 20 Oct 2004 16:41:15 +0100 (BST)
-Received: from svr1.postgresql.org ([200.46.204.71])
-	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
-	with ESMTP id 74851-10
-	for <pgsql-hackers-postgresql.org@localhost.postgresql.org>;
-	Wed, 20 Oct 2004 15:41:08 +0000 (GMT)
-Received: from mailsrvr2.bull.com (mailsrvr2.bull.com [192.90.162.8])
-	by svr1.postgresql.org (Postfix) with ESMTP id 58BB532AF80
-	for <pgsql-hackers@postgresql.org>; Wed, 20 Oct 2004 16:41:07 +0100 (BST)
-Received: from us-phx1.az05.bull.com (us-phx1.az05.bull.com [141.112.40.1])
-	by mailsrvr2.bull.com (8.13.1/8.13.1) with ESMTP id i9KFeskm013495
-	for <pgsql-hackers@postgresql.org>; Wed, 20 Oct 2004 08:40:54 -0700
-To: pgsql-hackers@postgresql.org
-Subject: [HACKERS] 2PC support
-MIME-Version: 1.0
-X-Mailer: Lotus Notes Release 6.5.1 January 21, 2004
-Message-ID: <OFC4281B9F.ABCA4E46-ON07256F33.0054BD37-07256F33.00562470@us-phx1.az05.bull.com>
-From: Michael.Giroux@objectweb.org
-Date: Wed, 20 Oct 2004 08:40:53 -0700
-X-MIMETrack: Serialize by Router on US-PHX1/US/BULL(Release 6.5.1|January 21, 2004) at
-	10/20/2004 08:40:54 AM,
-	Serialize complete at 10/20/2004 08:40:54 AM
-Content-Type: text/plain; charset="US-ASCII"
-X-BullServices-MailScanner-Information: Please contact the ISP for more information
-X-BullServices-MailScanner: Not scanned: please contact your Internet E-Mail Service Provider for details
-X-MailScanner-From: michael.giroux@objectweb.org
-X-Virus-Scanned: by amavisd-new at hub.org
-X-Mailing-List: pgsql-hackers
-Precedence: bulk
-Sender: pgsql-hackers-owner@postgresql.org
-X-Virus-Scanned: by amavisd-new at hub.org
-Status: OR
-
-Hi,
-I've read a few of the recent posts about 2-phase-commit support.  I 
-noticed some discussion related to persisting the state of in-doubt 
-transactions, and thought you might be able to take advantage of work that 
-has been going on in the area of transaction logs. 
-
-I'm working on a project (howl.objectweb.org) to implement a journal 
-designed specifically to support transaction managers 2PC protocol.  The 
-project was concieved during a meeting between ObjectWeb and Apache 
-Geronimo developers last year at ApacheCon 2003.  The journal is currently 
-used by the Apache Geronimo TM, Codehaus ActiveMQ, and ObjectWeb JOTM 
-projects.
-
-Although the main objective is to support TM 2PC protocol, it could be 
-used as a database before-image journal as well.  The code is BSD 
-licensed.  More at http://howl.objectweb.org.
-
-Also, with respect to the requirements for the 2PC protocol, there is an 
-excellent discussion by Mike Spille.  Mike wrote a series of articles 
-titled "XA Exposed".  You can review the articles at 
-http://www.theserverside.com.  Search for "xa exposed".
-
-If any of you will be at ApacheCon 2004 next month, I'm giving a paper on 
-the HOWL journal.  I'll be happy to talk with you there.
-
-Michael Giroux,  objectweb.org
-
----------------------------(end of broadcast)---------------------------
-TIP 3: if posting/reading through Usenet, please send an appropriate
-      subscribe-nomail command to majordomo@postgresql.org so that your
-      message can get through to the mailing list cleanly
-
-From pgsql-hackers-owner+M63326=pgman=candle.pha.pa.us@postgresql.org Wed Jan 19 13:02:04 2005
-Return-path: <pgsql-hackers-owner+M63326=pgman=candle.pha.pa.us@postgresql.org>
-Received: from svr1.postgresql.org (svr1.postgresql.org [200.46.204.71])
-	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id j0JJ23w15071
-	for <pgman@candle.pha.pa.us>; Wed, 19 Jan 2005 14:02:03 -0500 (EST)
-Received: from localhost (unknown [200.46.204.144])
-	by svr1.postgresql.org (Postfix) with ESMTP id 86EA13A438A
-	for <pgman@candle.pha.pa.us>; Wed, 19 Jan 2005 19:02:00 +0000 (GMT)
-Received: from svr1.postgresql.org ([200.46.204.71])
-	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
-	with ESMTP id 39979-07 for <pgman@candle.pha.pa.us>;
-	Wed, 19 Jan 2005 19:01:58 +0000 (GMT)
-Received: from postgresql.org (svr1.postgresql.org [200.46.204.71])
-	by svr1.postgresql.org (Postfix) with ESMTP id DC7E53A4447
-	for <pgman@candle.pha.pa.us>; Wed, 19 Jan 2005 19:01:45 +0000 (GMT)
-X-Original-To: pgsql-hackers-postgresql.org@localhost.postgresql.org
-Received: from localhost (unknown [200.46.204.144])
-	by svr1.postgresql.org (Postfix) with ESMTP id E30A83A43DE
-	for <pgsql-hackers-postgresql.org@localhost.postgresql.org>; Wed, 19 Jan 2005 18:59:59 +0000 (GMT)
-Received: from svr1.postgresql.org ([200.46.204.71])
-	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
-	with ESMTP id 39733-06
-	for <pgsql-hackers-postgresql.org@localhost.postgresql.org>;
-	Wed, 19 Jan 2005 18:59:49 +0000 (GMT)
-Received: from smtp-3.hut.fi (smtp-3.hut.fi [130.233.228.93])
-	by svr1.postgresql.org (Postfix) with ESMTP id 83C883A42C9
-	for <pgsql-hackers@postgresql.org>; Wed, 19 Jan 2005 18:59:48 +0000 (GMT)
-Received: from localhost (putosiko.hut.fi [130.233.228.114])
-	by smtp-3.hut.fi (8.12.10/8.12.10) with ESMTP id j0JIxkeL013491
-	for <pgsql-hackers@postgresql.org>; Wed, 19 Jan 2005 20:59:46 +0200
-Received: from smtp-3.hut.fi ([130.233.228.93])
-	by localhost (putosiko.hut.fi [130.233.228.114]) (amavisd-new, port 10024)
-	with LMTP id 17639-01-10 for <pgsql-hackers@postgresql.org>;
-	Wed, 19 Jan 2005 20:59:45 +0200 (EET)
-Received: from kosh.hut.fi (kosh.hut.fi [130.233.228.10])
-	by smtp-3.hut.fi (8.12.10/8.12.10) with ESMTP id j0JItvEJ011614
-	for <pgsql-hackers@postgresql.org>; Wed, 19 Jan 2005 20:55:57 +0200
-Date: Wed, 19 Jan 2005 20:55:57 +0200 (EET)
-From: Heikki Linnakangas <hlinnaka@iki.fi>
-X-X-Sender: hlinnaka@kosh.hut.fi
-To: pgsql-hackers@postgresql.org
-Subject: [HACKERS] Two-phase commit for 8.1
-Message-ID: <Pine.OSF.4.61.0501192055310.62540@kosh.hut.fi>
-MIME-Version: 1.0
-Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
-X-TKK-Virus-Scanned: by amavisd-new-2.1.2-hutcc at putosiko.hut.fi
-X-Virus-Scanned: by amavisd-new at hub.org
-X-Mailing-List: pgsql-hackers
-Precedence: bulk
-Sender: pgsql-hackers-owner@postgresql.org
-X-Virus-Scanned: by amavisd-new at hub.org
-X-Spam-Checker-Version: SpamAssassin 2.61 (1.212.2.1-2003-12-09-exp) on 
-	candle.pha.pa.us
-X-Spam-Status: No, hits=-4.9 required=5.0 tests=BAYES_00 autolearn=ham 
-	version=2.61
-Status: OR
-
-Hi,
-
-Now that we got 8.0 out of the door, I'm submitting my two-phase commit patch 
-again for discussion.
-
-http://www.hut.fi/~hlinnaka/pgsql/
-
-Do we want it in 8.1, if we want a short development cycle? It needs a new 
-pg_twophase subdirectory, and it introduces a new system view, so I guess it 
-requires an initdb (or pg_upgrade).
-
-Any comments on the implementation or the new commands?
-
-I would appreciate help testing the JDBC driver with an application server that 
-does XA recovery properly.
-
-- Heikki
-
----------------------------(end of broadcast)---------------------------
-TIP 2: you can get off all lists at once with the unregister command
-    (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
-
-From pgsql-hackers-owner+M63328=pgman=candle.pha.pa.us@postgresql.org Wed Jan 19 15:00:49 2005
-Return-path: <pgsql-hackers-owner+M63328=pgman=candle.pha.pa.us@postgresql.org>
-Received: from svr1.postgresql.org (svr1.postgresql.org [200.46.204.71])
-	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id j0JL0lw26408
-	for <pgman@candle.pha.pa.us>; Wed, 19 Jan 2005 16:00:47 -0500 (EST)
-Received: from localhost (unknown [200.46.204.144])
-	by svr1.postgresql.org (Postfix) with ESMTP id AA4F63A44F7
-	for <pgman@candle.pha.pa.us>; Wed, 19 Jan 2005 21:00:43 +0000 (GMT)
-Received: from svr1.postgresql.org ([200.46.204.71])
-	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
-	with ESMTP id 69508-07 for <pgman@candle.pha.pa.us>;
-	Wed, 19 Jan 2005 21:00:41 +0000 (GMT)
-Received: from postgresql.org (svr1.postgresql.org [200.46.204.71])
-	by svr1.postgresql.org (Postfix) with ESMTP id 954C03A4493
-	for <pgman@candle.pha.pa.us>; Wed, 19 Jan 2005 21:00:42 +0000 (GMT)
-X-Original-To: pgsql-hackers-postgresql.org@localhost.postgresql.org
-Received: from localhost (unknown [200.46.204.144])
-	by svr1.postgresql.org (Postfix) with ESMTP id AEE2A3A4447
-	for <pgsql-hackers-postgresql.org@localhost.postgresql.org>; Wed, 19 Jan 2005 20:59:06 +0000 (GMT)
-Received: from svr1.postgresql.org ([200.46.204.71])
-	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
-	with ESMTP id 69310-05
-	for <pgsql-hackers-postgresql.org@localhost.postgresql.org>;
-	Wed, 19 Jan 2005 20:58:55 +0000 (GMT)
-Received: from hub.org (hub.org [200.46.204.220])
-	by svr1.postgresql.org (Postfix) with ESMTP id BD0E03A43DA
-	for <pgsql-hackers@postgresql.org>; Wed, 19 Jan 2005 20:58:56 +0000 (GMT)
-Received: from ganymede.hub.org (blk-224-186-245.eastlink.ca [24.224.186.245])
-	by hub.org (Postfix) with ESMTP id 864D2129256;
-	Wed, 19 Jan 2005 16:58:54 -0400 (AST)
-Received: by ganymede.hub.org (Postfix, from userid 1000)
-	id B19BA5E34A; Wed, 19 Jan 2005 16:58:55 -0400 (AST)
-Received: from localhost (localhost [127.0.0.1])
-	by ganymede.hub.org (Postfix) with ESMTP id AD3675DCBC;
-	Wed, 19 Jan 2005 16:58:55 -0400 (AST)
-Date: Wed, 19 Jan 2005 16:58:55 -0400 (AST)
-From: "Marc G. Fournier" <scrappy@postgresql.org>
-X-X-Sender: scrappy@ganymede.hub.org
-To: Heikki Linnakangas <hlinnaka@iki.fi>
-cc: pgsql-hackers@postgresql.org
-Subject: Re: [HACKERS] Two-phase commit for 8.1
-In-Reply-To: <Pine.OSF.4.61.0501192055310.62540@kosh.hut.fi>
-Message-ID: <20050119165747.U47533@ganymede.hub.org>
-References: <Pine.OSF.4.61.0501192055310.62540@kosh.hut.fi>
-MIME-Version: 1.0
-Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
-X-Virus-Scanned: by amavisd-new at hub.org
-X-Mailing-List: pgsql-hackers
-Precedence: bulk
-Sender: pgsql-hackers-owner@postgresql.org
-X-Virus-Scanned: by amavisd-new at hub.org
-X-Spam-Checker-Version: SpamAssassin 2.61 (1.212.2.1-2003-12-09-exp) on 
-	candle.pha.pa.us
-X-Spam-Status: No, hits=-4.9 required=5.0 tests=BAYES_00 autolearn=ham 
-	version=2.61
-Status: OR
-
-
-If the patch is ready to be committed early in the cycle, I'd say most 
-definitely ... just depends on how late in the cycle its ready ...
-
-I *believe* that 8.1, we're looking at a 2mo cycle before beta, so figure 
-beta for ~April 1st (no april fools jokes, eh?) ...
-
-On Wed, 19 Jan 2005, Heikki Linnakangas wrote:
-
-> Hi,
->
-> Now that we got 8.0 out of the door, I'm submitting my two-phase commit patch 
-> again for discussion.
->
-> http://www.hut.fi/~hlinnaka/pgsql/
->
-> Do we want it in 8.1, if we want a short development cycle? It needs a new 
-> pg_twophase subdirectory, and it introduces a new system view, so I guess it 
-> requires an initdb (or pg_upgrade).
->
-> Any comments on the implementation or the new commands?
->
-> I would appreciate help testing the JDBC driver with an application server 
-> that does XA recovery properly.
->
-> - Heikki
->
-> ---------------------------(end of broadcast)---------------------------
-> TIP 2: you can get off all lists at once with the unregister command
->   (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
->
-
-----
-Marc G. Fournier           Hub.Org Networking Services (http://www.hub.org)
-Email: scrappy@hub.org           Yahoo!: yscrappy              ICQ: 7615664
-
----------------------------(end of broadcast)---------------------------
-TIP 5: Have you checked our extensive FAQ?
-
-               http://www.postgresql.org/docs/faqs/FAQ.html
-
-From pgsql-hackers-owner+M63331=pgman=candle.pha.pa.us@postgresql.org Wed Jan 19 18:45:25 2005
-Return-path: <pgsql-hackers-owner+M63331=pgman=candle.pha.pa.us@postgresql.org>
-Received: from svr1.postgresql.org (svr1.postgresql.org [200.46.204.71])
-	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id j0K0jOw15340
-	for <pgman@candle.pha.pa.us>; Wed, 19 Jan 2005 19:45:24 -0500 (EST)
-Received: from localhost (unknown [200.46.204.144])
-	by svr1.postgresql.org (Postfix) with ESMTP id 40B203A45A5
-	for <pgman@candle.pha.pa.us>; Thu, 20 Jan 2005 00:45:20 +0000 (GMT)
-Received: from svr1.postgresql.org ([200.46.204.71])
-	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
-	with ESMTP id 91025-08 for <pgman@candle.pha.pa.us>;
-	Thu, 20 Jan 2005 00:45:16 +0000 (GMT)
-Received: from postgresql.org (svr1.postgresql.org [200.46.204.71])
-	by svr1.postgresql.org (Postfix) with ESMTP id 46A8F3A459D
-	for <pgman@candle.pha.pa.us>; Thu, 20 Jan 2005 00:45:19 +0000 (GMT)
-X-Original-To: pgsql-hackers-postgresql.org@localhost.postgresql.org
-Received: from localhost (unknown [200.46.204.144])
-	by svr1.postgresql.org (Postfix) with ESMTP id 042FE3A4340;
-	Thu, 20 Jan 2005 00:42:14 +0000 (GMT)
-Received: from svr1.postgresql.org ([200.46.204.71])
-	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
-	with ESMTP id 91212-03; Thu, 20 Jan 2005 00:42:05 +0000 (GMT)
-Received: from sss.pgh.pa.us (sss.pgh.pa.us [66.207.139.130])
-	by svr1.postgresql.org (Postfix) with ESMTP id 493723A42C9;
-	Thu, 20 Jan 2005 00:42:08 +0000 (GMT)
-Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1])
-	by sss.pgh.pa.us (8.13.1/8.13.1) with ESMTP id j0K0g4GY001116;
-	Wed, 19 Jan 2005 19:42:04 -0500 (EST)
-To: "Marc G. Fournier" <scrappy@postgresql.org>
-cc: Heikki Linnakangas <hlinnaka@iki.fi>, pgsql-hackers@postgresql.org
-Subject: Re: [HACKERS] Two-phase commit for 8.1 
-In-Reply-To: <20050119165747.U47533@ganymede.hub.org> 
-References: <Pine.OSF.4.61.0501192055310.62540@kosh.hut.fi> <20050119165747.U47533@ganymede.hub.org>
-Comments: In-reply-to "Marc G. Fournier" <scrappy@postgresql.org>
-	message dated "Wed, 19 Jan 2005 16:58:55 -0400"
-Date: Wed, 19 Jan 2005 19:42:03 -0500
-Message-ID: <1115.1106181723@sss.pgh.pa.us>
-From: Tom Lane <tgl@sss.pgh.pa.us>
-X-Virus-Scanned: by amavisd-new at hub.org
-X-Mailing-List: pgsql-hackers
-Precedence: bulk
-Sender: pgsql-hackers-owner@postgresql.org
-X-Virus-Scanned: by amavisd-new at hub.org
-Status: OR
-
-"Marc G. Fournier" <scrappy@postgresql.org> writes:
-> If the patch is ready to be committed early in the cycle, I'd say most 
-> definitely ... just depends on how late in the cycle its ready ...
-
-My recollection is that it's quite far from being complete.  I had hoped
-to spend some time during the 8.1 cycle helping Heikki finish it up,
-but if we stick to the 2-month-dev-cycle idea I'm afraid there's no way
-it'll be done in time.  I thought that "some time" would probably amount
-to a solid man-month or so, and there's no way I can spend half my time
-on just one feature for this cycle.
-
-If Heikki wants this in for 8.1, the right thing to do is vote against
-the short-dev-cycle idea.  But we need a plausible answer about what to
-do about ARC to make that credible...
-
-			regards, tom lane
-
----------------------------(end of broadcast)---------------------------
-TIP 6: Have you searched our list archives?
-
-               http://archives.postgresql.org
-
-From pgsql-hackers-owner+M63432=pgman=candle.pha.pa.us@postgresql.org Sun Jan 23 05:41:58 2005
-Return-path: <pgsql-hackers-owner+M63432=pgman=candle.pha.pa.us@postgresql.org>
-Received: from svr1.postgresql.org (svr1.postgresql.org [200.46.204.71])
-	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id j0NBfvw06363
-	for <pgman@candle.pha.pa.us>; Sun, 23 Jan 2005 06:41:58 -0500 (EST)
-Received: from localhost (unknown [200.46.204.144])
-	by svr1.postgresql.org (Postfix) with ESMTP id D0CA53A3BE7
-	for <pgman@candle.pha.pa.us>; Sun, 23 Jan 2005 11:41:55 +0000 (GMT)
-Received: from svr1.postgresql.org ([200.46.204.71])
-	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
-	with ESMTP id 51743-08 for <pgman@candle.pha.pa.us>;
-	Sun, 23 Jan 2005 11:41:52 +0000 (GMT)
-Received: from postgresql.org (svr1.postgresql.org [200.46.204.71])
-	by svr1.postgresql.org (Postfix) with ESMTP id E67533A51E4
-	for <pgman@candle.pha.pa.us>; Sun, 23 Jan 2005 11:41:10 +0000 (GMT)
-X-Original-To: pgsql-hackers-postgresql.org@localhost.postgresql.org
-Received: from localhost (unknown [200.46.204.144])
-	by svr1.postgresql.org (Postfix) with ESMTP id CB87F3A525A
-	for <pgsql-hackers-postgresql.org@localhost.postgresql.org>; Sun, 23 Jan 2005 11:39:49 +0000 (GMT)
-Received: from svr1.postgresql.org ([200.46.204.71])
-	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
-	with ESMTP id 51345-07
-	for <pgsql-hackers-postgresql.org@localhost.postgresql.org>;
-	Sun, 23 Jan 2005 11:39:32 +0000 (GMT)
-Received: from smtp-3.hut.fi (smtp-3.hut.fi [130.233.228.93])
-	by svr1.postgresql.org (Postfix) with ESMTP id 5F3223A1AA3
-	for <pgsql-hackers@postgresql.org>; Sun, 23 Jan 2005 11:38:50 +0000 (GMT)
-Received: from localhost (katosiko.hut.fi [130.233.228.115])
-	by smtp-3.hut.fi (8.12.10/8.12.10) with ESMTP id j0NBcmeL011515;
-	Sun, 23 Jan 2005 13:38:48 +0200
-Received: from smtp-3.hut.fi ([130.233.228.93])
-	by localhost (katosiko.hut.fi [130.233.228.115]) (amavisd-new, port 10024)
-	with LMTP id 04384-02-2; Sun, 23 Jan 2005 13:38:47 +0200 (EET)
-Received: from kosh.hut.fi (kosh.hut.fi [130.233.228.10])
-	by smtp-3.hut.fi (8.12.10/8.12.10) with ESMTP id j0NBbUEJ011361;
-	Sun, 23 Jan 2005 13:37:30 +0200
-Date: Sun, 23 Jan 2005 13:37:30 +0200 (EET)
-From: Heikki Linnakangas <hlinnaka@iki.fi>
-X-X-Sender: hlinnaka@kosh.hut.fi
-To: =?ISO-8859-1?Q?Hans-J=FCrgen_Sch=F6nig?= <postgres@cybertec.at>
-cc: pgsql-hackers@postgresql.org
-Subject: Re: [HACKERS] Two-phase commit for 8.1
-In-Reply-To: <41F3699B.2060608@cybertec.at>
-Message-ID: <Pine.OSF.4.61.0501231147320.64318@kosh.hut.fi>
-References: <Pine.OSF.4.61.0501192055310.62540@kosh.hut.fi>
-	<20050119165747.U47533@ganymede.hub.org> <1115.1106181723@sss.pgh.pa.us>
-	<Pine.OSF.4.61.0501212033520.352045@kosh.hut.fi> <41F3699B.2060608@cybertec.at>
-MIME-Version: 1.0
-Content-Type: TEXT/PLAIN; charset=ISO-8859-1; format=flowed
-Content-Transfer-Encoding: 8BIT
-X-TKK-Virus-Scanned: by amavisd-new-2.1.2-hutcc at katosiko.hut.fi
-X-Virus-Scanned: by amavisd-new at hub.org
-X-Mailing-List: pgsql-hackers
-Precedence: bulk
-Sender: pgsql-hackers-owner@postgresql.org
-X-Virus-Scanned: by amavisd-new at hub.org
-X-Spam-Checker-Version: SpamAssassin 2.61 (1.212.2.1-2003-12-09-exp) on 
-	candle.pha.pa.us
-X-Spam-Status: No, hits=-4.9 required=5.0 tests=BAYES_00 autolearn=ham 
-	version=2.61
-Status: OR
-
-On Sun, 23 Jan 2005, Hans-Jürgen Schönig wrote:
-
-> Heikki,
->
-> What is still missing to complete the 2PC patch?.
-
-Here's my TODO on things that need to be done:
-
-     * large objects
-     * guc variables
-     * notify/listen
-
-Large objects and notify/listen should be quite straightforward. GUC 
-variables need some thinking, but shouldn't be much work.
-
-As the patch gets more attention, I'm sure more issues will come up.
-
-- Heikki
-
----------------------------(end of broadcast)---------------------------
-TIP 9: the planner will ignore your desire to choose an index scan if your
-      joining column's datatypes do not match
-
-From pgsql-hackers-owner+M63434=pgman=candle.pha.pa.us@postgresql.org Sun Jan 23 09:15:24 2005
-Return-path: <pgsql-hackers-owner+M63434=pgman=candle.pha.pa.us@postgresql.org>
-Received: from svr1.postgresql.org (svr1.postgresql.org [200.46.204.71])
-	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id j0NFFMw25305
-	for <pgman@candle.pha.pa.us>; Sun, 23 Jan 2005 10:15:23 -0500 (EST)
-Received: from localhost (unknown [200.46.204.144])
-	by svr1.postgresql.org (Postfix) with ESMTP id 3A5DA3A3BE7
-	for <pgman@candle.pha.pa.us>; Sun, 23 Jan 2005 15:15:16 +0000 (GMT)
-Received: from svr1.postgresql.org ([200.46.204.71])
-	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
-	with ESMTP id 99539-08 for <pgman@candle.pha.pa.us>;
-	Sun, 23 Jan 2005 15:15:11 +0000 (GMT)
-Received: from postgresql.org (svr1.postgresql.org [200.46.204.71])
-	by svr1.postgresql.org (Postfix) with ESMTP id 4A7C43A1A03
-	for <pgman@candle.pha.pa.us>; Sun, 23 Jan 2005 15:15:15 +0000 (GMT)
-X-Original-To: pgsql-hackers-postgresql.org@localhost.postgresql.org
-Received: from localhost (unknown [200.46.204.144])
-	by svr1.postgresql.org (Postfix) with ESMTP id 08EA83A5242
-	for <pgsql-hackers-postgresql.org@localhost.postgresql.org>; Sun, 23 Jan 2005 15:13:52 +0000 (GMT)
-Received: from svr1.postgresql.org ([200.46.204.71])
-	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
-	with ESMTP id 00254-02
-	for <pgsql-hackers-postgresql.org@localhost.postgresql.org>;
-	Sun, 23 Jan 2005 15:13:46 +0000 (GMT)
-Received: from sunsite.dcc.uchile.cl (sunsite.dcc.uchile.cl [192.80.24.2])
-	by svr1.postgresql.org (Postfix) with ESMTP id AF7C83A520D
-	for <pgsql-hackers@postgresql.org>; Sun, 23 Jan 2005 15:13:48 +0000 (GMT)
-Received: from anakena.dcc.uchile.cl ([192.80.24.3])
-	by sunsite.dcc.uchile.cl (8.12.11/8.12.11) with ESMTP id j0NFDbu4014311;
-	Sun, 23 Jan 2005 12:13:42 -0300 (CLST)
-Received: by anakena.dcc.uchile.cl (Postfix, from userid 4151)
-	id 666A5527DA; Sun, 23 Jan 2005 12:13:37 -0300 (CLST)
-Date: Sun, 23 Jan 2005 12:13:37 -0300
-From: Alvaro Herrera <alvherre@dcc.uchile.cl>
-To: Heikki Linnakangas <hlinnaka@iki.fi>
-cc: =?iso-8859-1?Q?Hans-J=FCrgen_Sch=F6nig?= <postgres@cybertec.at>,
-   pgsql-hackers@postgresql.org
-Subject: Re: [HACKERS] Two-phase commit for 8.1
-Message-ID: <20050123151337.GD4406@dcc.uchile.cl>
-References: <Pine.OSF.4.61.0501192055310.62540@kosh.hut.fi> <20050119165747.U47533@ganymede.hub.org> <1115.1106181723@sss.pgh.pa.us> <Pine.OSF.4.61.0501212033520.352045@kosh.hut.fi> <41F3699B.2060608@cybertec.at> <Pine.OSF.4.61.0501231147320.64318@kosh.hut.fi>
-MIME-Version: 1.0
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: inline
-In-Reply-To: <Pine.OSF.4.61.0501231147320.64318@kosh.hut.fi>
-User-Agent: Mutt/1.5.6i
-X-Virus-Scanned: by amavisd-new at hub.org
-X-Mailing-List: pgsql-hackers
-Precedence: bulk
-Sender: pgsql-hackers-owner@postgresql.org
-X-Virus-Scanned: by amavisd-new at hub.org
-X-Spam-Checker-Version: SpamAssassin 2.61 (1.212.2.1-2003-12-09-exp) on 
-	candle.pha.pa.us
-X-Spam-Status: No, hits=-4.9 required=5.0 tests=BAYES_00 autolearn=ham 
-	version=2.61
-Status: OR
-
-On Sun, Jan 23, 2005 at 01:37:30PM +0200, Heikki Linnakangas wrote:
-
-> As the patch gets more attention, I'm sure more issues will come up.
-
-I see the changes to the lock manager are huge.  Can you explain what's
-the idea behind those?  Do you release the locks and then reacquire
-them, or do you reassign them to a pseudo process?  Are there
-possibilities of deadlock somewhere?
-
--- 
-Alvaro Herrera (<alvherre[@]dcc.uchile.cl>)
-Thou shalt study thy libraries and strive not to reinvent them without
-cause, that thy code may be short and readable and thy days pleasant
-and productive. (7th Commandment for C Programmers)
-
----------------------------(end of broadcast)---------------------------
-TIP 3: if posting/reading through Usenet, please send an appropriate
-      subscribe-nomail command to majordomo@postgresql.org so that your
-      message can get through to the mailing list cleanly
-
-From pgsql-hackers-owner+M63438=pgman=candle.pha.pa.us@postgresql.org Sun Jan 23 11:36:40 2005
-Return-path: <pgsql-hackers-owner+M63438=pgman=candle.pha.pa.us@postgresql.org>
-Received: from svr1.postgresql.org (svr1.postgresql.org [200.46.204.71])
-	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id j0NHaaw11289
-	for <pgman@candle.pha.pa.us>; Sun, 23 Jan 2005 12:36:37 -0500 (EST)
-Received: from localhost (unknown [200.46.204.144])
-	by svr1.postgresql.org (Postfix) with ESMTP id 7A1633A4A77
-	for <pgman@candle.pha.pa.us>; Sun, 23 Jan 2005 17:36:32 +0000 (GMT)
-Received: from svr1.postgresql.org ([200.46.204.71])
-	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
-	with ESMTP id 13791-10 for <pgman@candle.pha.pa.us>;
-	Sun, 23 Jan 2005 17:36:31 +0000 (GMT)
-Received: from postgresql.org (svr1.postgresql.org [200.46.204.71])
-	by svr1.postgresql.org (Postfix) with ESMTP id 852863A49EC
-	for <pgman@candle.pha.pa.us>; Sun, 23 Jan 2005 17:36:31 +0000 (GMT)
-X-Original-To: pgsql-hackers-postgresql.org@localhost.postgresql.org
-Received: from localhost (unknown [200.46.204.144])
-	by svr1.postgresql.org (Postfix) with ESMTP id 252743A4B01
-	for <pgsql-hackers-postgresql.org@localhost.postgresql.org>; Sun, 23 Jan 2005 17:35:26 +0000 (GMT)
-Received: from svr1.postgresql.org ([200.46.204.71])
-	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
-	with ESMTP id 13880-08
-	for <pgsql-hackers-postgresql.org@localhost.postgresql.org>;
-	Sun, 23 Jan 2005 17:35:17 +0000 (GMT)
-Received: from smtp-1.hut.fi (smtp-1.hut.fi [130.233.228.91])
-	by svr1.postgresql.org (Postfix) with ESMTP id 5B7633A19A5
-	for <pgsql-hackers@postgresql.org>; Sun, 23 Jan 2005 17:35:12 +0000 (GMT)
-Received: from localhost (katosiko.hut.fi [130.233.228.115])
-	by smtp-1.hut.fi (8.12.10/8.12.10) with ESMTP id j0NHYwms014946;
-	Sun, 23 Jan 2005 19:34:58 +0200
-Received: from smtp-1.hut.fi ([130.233.228.91])
-	by localhost (katosiko.hut.fi [130.233.228.115]) (amavisd-new, port 10024)
-	with LMTP id 04068-01; Sun, 23 Jan 2005 19:34:57 +0200 (EET)
-Received: from kosh.hut.fi (kosh.hut.fi [130.233.228.10])
-	by smtp-1.hut.fi (8.12.10/8.12.10) with ESMTP id j0NHWt0g014723;
-	Sun, 23 Jan 2005 19:32:55 +0200
-Date: Sun, 23 Jan 2005 19:32:55 +0200 (EET)
-From: Heikki Linnakangas <hlinnaka@iki.fi>
-X-X-Sender: hlinnaka@kosh.hut.fi
-To: Alvaro Herrera <alvherre@dcc.uchile.cl>
-cc: =?ISO-8859-1?Q?Hans-J=FCrgen_Sch=F6nig?= <postgres@cybertec.at>,
-   pgsql-hackers@postgresql.org
-Subject: Re: [HACKERS] Two-phase commit for 8.1
-In-Reply-To: <20050123151337.GD4406@dcc.uchile.cl>
-Message-ID: <Pine.OSF.4.61.0501231916520.414393@kosh.hut.fi>
-References: <Pine.OSF.4.61.0501192055310.62540@kosh.hut.fi>
-	<20050119165747.U47533@ganymede.hub.org> <1115.1106181723@sss.pgh.pa.us>
-	<Pine.OSF.4.61.0501212033520.352045@kosh.hut.fi> <41F3699B.2060608@cybertec.at>
-	<Pine.OSF.4.61.0501231147320.64318@kosh.hut.fi> <20050123151337.GD4406@dcc.uchile.cl>
-MIME-Version: 1.0
-Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
-X-TKK-Virus-Scanned: by amavisd-new-2.1.2-hutcc at katosiko.hut.fi
-X-Virus-Scanned: by amavisd-new at hub.org
-X-Mailing-List: pgsql-hackers
-Precedence: bulk
-Sender: pgsql-hackers-owner@postgresql.org
-X-Virus-Scanned: by amavisd-new at hub.org
-X-Spam-Checker-Version: SpamAssassin 2.61 (1.212.2.1-2003-12-09-exp) on 
-	candle.pha.pa.us
-X-Spam-Status: No, hits=-4.9 required=5.0 tests=BAYES_00 autolearn=ham 
-	version=2.61
-Status: OR
-
-On Sun, 23 Jan 2005, Alvaro Herrera wrote:
-
-> On Sun, Jan 23, 2005 at 01:37:30PM +0200, Heikki Linnakangas wrote:
->
->> As the patch gets more attention, I'm sure more issues will come up.
-
-> I see the changes to the lock manager are huge.  Can you explain what's
-> the idea behind those?  Do you release the locks and then reacquire
-> them, or do you reassign them to a pseudo process?
-
-I reassign them to a pseudo process (persistedLocksProc).
-
-Much of the changes in lock.c are just about moving code around. 
-Some copy-paste code has been put in functions. LockAcquire has been
-changed to take PGPROC as an argument, so that locks can be acquired on 
-behalf of the pseudo process.
-
-Then there's completely new code for persisting locks on PREPARE 
-TRANSACTION and reacquiring them on recovery.
-
-If it helps, I could try to split it into two patches, one with code 
-rearrangements that don't change current behaviour, and then the actual 
-2PC stuff on top of that.
-
-> Are there possibilities of deadlock somewhere?
-
-Not that I know of.
-
-- Heikki
-
----------------------------(end of broadcast)---------------------------
-TIP 5: Have you checked our extensive FAQ?
-
-               http://www.postgresql.org/docs/faq
-
-From pgsql-hackers-owner+M63788=pgman=candle.pha.pa.us@postgresql.org Mon Jan 31 09:35:11 2005
-Return-path: <pgsql-hackers-owner+M63788=pgman=candle.pha.pa.us@postgresql.org>
-Received: from svr1.postgresql.org (svr1.postgresql.org [200.46.204.71])
-	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id j0VFZAw06420
-	for <pgman@candle.pha.pa.us>; Mon, 31 Jan 2005 10:35:10 -0500 (EST)
-Received: from localhost (unknown [200.46.204.144])
-	by svr1.postgresql.org (Postfix) with ESMTP id 46B838B9C28
-	for <pgman@candle.pha.pa.us>; Mon, 31 Jan 2005 15:35:07 +0000 (GMT)
-Received: from svr1.postgresql.org ([200.46.204.71])
-	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
-	with ESMTP id 86064-08 for <pgman@candle.pha.pa.us>;
-	Mon, 31 Jan 2005 15:35:03 +0000 (GMT)
-Received: from postgresql.org (svr1.postgresql.org [200.46.204.71])
-	by svr1.postgresql.org (Postfix) with ESMTP id 5D6918B9E6A
-	for <pgman@candle.pha.pa.us>; Mon, 31 Jan 2005 15:23:48 +0000 (GMT)
-X-Original-To: pgsql-hackers-postgresql.org@localhost.postgresql.org
-Received: from localhost (unknown [200.46.204.144])
-	by svr1.postgresql.org (Postfix) with ESMTP id E92DF8B9CC6
-	for <pgsql-hackers-postgresql.org@localhost.postgresql.org>; Mon, 31 Jan 2005 15:21:14 +0000 (GMT)
-Received: from svr1.postgresql.org ([200.46.204.71])
-	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
-	with ESMTP id 83005-03
-	for <pgsql-hackers-postgresql.org@localhost.postgresql.org>;
-	Mon, 31 Jan 2005 15:21:04 +0000 (GMT)
-Received: from sunsite.dcc.uchile.cl (sunsite.dcc.uchile.cl [192.80.24.2])
-	by svr1.postgresql.org (Postfix) with ESMTP id A315B8B9D3E
-	for <pgsql-hackers@postgresql.org>; Mon, 31 Jan 2005 15:01:43 +0000 (GMT)
-Received: from anakena.dcc.uchile.cl ([192.80.24.3])
-	by sunsite.dcc.uchile.cl (8.12.11/8.12.11) with ESMTP id j0VF1KCf026107;
-	Mon, 31 Jan 2005 12:01:24 -0300 (CLST)
-Received: by anakena.dcc.uchile.cl (Postfix, from userid 4151)
-	id F287A52515; Mon, 31 Jan 2005 12:01:19 -0300 (CLST)
-Date: Mon, 31 Jan 2005 12:01:19 -0300
-From: Alvaro Herrera <alvherre@dcc.uchile.cl>
-To: Heikki Linnakangas <hlinnaka@iki.fi>
-cc: =?iso-8859-1?Q?Hans-J=FCrgen_Sch=F6nig?= <postgres@cybertec.at>,
-   pgsql-hackers@postgresql.org
-Subject: Re: [HACKERS] Two-phase commit for 8.1
-Message-ID: <20050131150119.GI22141@dcc.uchile.cl>
-References: <Pine.OSF.4.61.0501192055310.62540@kosh.hut.fi> <20050119165747.U47533@ganymede.hub.org> <1115.1106181723@sss.pgh.pa.us> <Pine.OSF.4.61.0501212033520.352045@kosh.hut.fi> <41F3699B.2060608@cybertec.at> <Pine.OSF.4.61.0501231147320.64318@kosh.hut.fi> <20050123151337.GD4406@dcc.uchile.cl> <Pine.OSF.4.61.0501231916520.414393@kosh.hut.fi>
-MIME-Version: 1.0
-Content-Type: text/plain; charset=iso-8859-1
-Content-Disposition: inline
-Content-Transfer-Encoding: 8bit
-In-Reply-To: <Pine.OSF.4.61.0501231916520.414393@kosh.hut.fi>
-User-Agent: Mutt/1.5.6i
-X-Virus-Scanned: by amavisd-new at hub.org
-X-Mailing-List: pgsql-hackers
-Precedence: bulk
-Sender: pgsql-hackers-owner@postgresql.org
-X-Virus-Scanned: by amavisd-new at hub.org
-X-Spam-Checker-Version: SpamAssassin 2.61 (1.212.2.1-2003-12-09-exp) on 
-	candle.pha.pa.us
-X-Spam-Status: No, hits=-4.9 required=5.0 tests=BAYES_00 autolearn=ham 
-	version=2.61
-Status: OR
-
-On Sun, Jan 23, 2005 at 07:32:55PM +0200, Heikki Linnakangas wrote:
-
-> If it helps, I could try to split it into two patches, one with code 
-> rearrangements that don't change current behaviour, and then the actual 
-> 2PC stuff on top of that.
-
-I think that'd be a good idea, because such a patch could be merged
-right now, and the actual 2PC stuff would be smaller and easier to
-review.
-
-You'd only need a committer to actually commit the initial patch ...
-
--- 
-Alvaro Herrera (<alvherre[@]dcc.uchile.cl>)
-"No hay cielo posible sin hundir nuestras raíces
- en la profundidad de la tierra"                        (Malucha Pinto)
-
----------------------------(end of broadcast)---------------------------
-TIP 9: the planner will ignore your desire to choose an index scan if your
-      joining column's datatypes do not match
-
-From pgsql-hackers-owner+M66050@postgresql.org Wed Apr  6 10:04:39 2005
-Return-path: <pgsql-hackers-owner+M66050@postgresql.org>
-Received: from svr1.postgresql.org (svr1.postgresql.org [200.46.204.71])
-	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id j36E4cO20150
-	for <pgman@candle.pha.pa.us>; Wed, 6 Apr 2005 10:04:38 -0400 (EDT)
-Received: from localhost (unknown [200.46.204.144])
-	by svr1.postgresql.org (Postfix) with ESMTP id 248C2537FE
-	for <pgman@candle.pha.pa.us>; Wed,  6 Apr 2005 15:04:32 +0100 (BST)
-Received: from svr1.postgresql.org ([200.46.204.71])
-	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
-	with ESMTP id 64844-06 for <pgman@candle.pha.pa.us>;
-	Wed,  6 Apr 2005 14:04:32 +0000 (GMT)
-Received: from postgresql.org (svr1.postgresql.org [200.46.204.71])
-	by svr1.postgresql.org (Postfix) with ESMTP id D2EB5537F8
-	for <pgman@candle.pha.pa.us>; Wed,  6 Apr 2005 15:04:31 +0100 (BST)
-X-Original-To: pgsql-hackers-postgresql.org@localhost.postgresql.org
-Received: from localhost (unknown [200.46.204.144])
-	by svr1.postgresql.org (Postfix) with ESMTP id AA7FE539FA
-	for <pgsql-hackers-postgresql.org@localhost.postgresql.org>; Wed,  6 Apr 2005 15:01:33 +0100 (BST)
-Received: from svr1.postgresql.org ([200.46.204.71])
-	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
-	with ESMTP id 62842-09
-	for <pgsql-hackers-postgresql.org@localhost.postgresql.org>;
-	Wed,  6 Apr 2005 14:01:26 +0000 (GMT)
-Received: from smtp-1.hut.fi (smtp-1.hut.fi [130.233.228.91])
-	by svr1.postgresql.org (Postfix) with ESMTP id F02FD538C8
-	for <pgsql-hackers@postgresql.org>; Wed,  6 Apr 2005 15:01:22 +0100 (BST)
-Received: from localhost (katosiko.hut.fi [130.233.228.115])
-	by smtp-1.hut.fi (8.12.10/8.12.10) with ESMTP id j36E11Yl028611;
-	Wed, 6 Apr 2005 17:01:01 +0300
-Received: from smtp-1.hut.fi ([130.233.228.91])
-	by localhost (katosiko.hut.fi [130.233.228.115]) (amavisd-new, port 10024)
-	with LMTP id 22125-05; Wed,  6 Apr 2005 17:01:00 +0300 (EEST)
-Received: from kosh.hut.fi (kosh.hut.fi [130.233.228.10])
-	by smtp-1.hut.fi (8.12.10/8.12.10) with ESMTP id j36DxlPJ028376;
-	Wed, 6 Apr 2005 16:59:48 +0300
-Date: Wed, 6 Apr 2005 16:59:47 +0300 (EEST)
-From: Heikki Linnakangas <hlinnaka@iki.fi>
-X-X-Sender: hlinnaka@kosh.hut.fi
-To: Alvaro Herrera <alvherre@dcc.uchile.cl>
-cc: pgsql-hackers@postgresql.org
-Subject: Re: [HACKERS] Two phase commit
-In-Reply-To: <20050405230731.GA26960@surnet.cl>
-Message-ID: <Pine.OSF.4.61.0504061652300.502110@kosh.hut.fi>
-References: <20050405230731.GA26960@surnet.cl>
-MIME-Version: 1.0
-Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
-X-TKK-Virus-Scanned: by amavisd-new-2.1.2-hutcc at katosiko.hut.fi
-X-Virus-Scanned: by amavisd-new at hub.org
-X-Mailing-List: pgsql-hackers
-Precedence: bulk
-Sender: pgsql-hackers-owner@postgresql.org
-X-Virus-Scanned: by amavisd-new at hub.org
-Status: OR
-
-On Tue, 5 Apr 2005, Alvaro Herrera wrote:
-
-> What happenned to your two phase commit patch?  Are you still working on
-> it?  Have you got something done from the last time we heard from you?
-
-I've kept it up-to-date by doing "cvs update" every now and then and 
-fixing possible conflicts.
-
-It would be nice if you hackers could take a serious look at it and tell 
-what needs to be done to get it finally committed.
-
-I've been busy with other things and haven't had the time to push it.
-
-I try to update my "project page" every time I update the patch:
-
-http://www.hut.fi/~hlinnaka/pgsql/
-
-There isn't any big issues left as far as I know.
-
-- Heikki
-
----------------------------(end of broadcast)---------------------------
-TIP 2: you can get off all lists at once with the unregister command
-    (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
-