pg.ddx.io  pgsql-hackers@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Emmanuel Cecchet <manu@frogthinker.org>
To: Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>
Cc: pgsql-hackers@postgresql.org
Subject: Re: Transactions and temp tables
Date: Wed, 08 Oct 2008 08:41:51 -0400
Message-ID: <48ECAA8F.3070306@frogthinker.org> (raw)
In-Reply-To: <48EC7EB5.5020001@enterprisedb.com>
References: <48EA7B12.6050906@frogthinker.org>
	<48EB0551.50205@enterprisedb.com>
	<48EB95B7.10604@frogthinker.org>
	<48EC7EB5.5020001@enterprisedb.com>

Heikki Linnakangas wrote:
> I was thinking of a transaction that's just prepared (1st phase), but 
> not committed or rolled back:
>
> postgres=# CREATE TEMP TABLE foo (bar int);
> CREATE TABLE
> postgres=# BEGIN;
> BEGIN
> postgres=# DROP TABLE foo;
> DROP TABLE
> postgres=# PREPARE TRANSACTION '2pc';
> PREPARE TRANSACTION
> postgres=# SELECT * FROM foo;
> <blocks>
>
> Furthermore, it looks like the backend refuses to shut down, even if 
> you end the psql session, because RemoveTempRelations() is called on 
> backend shutdown and it gets blocked on that lock.
Thanks for the example, I get it now. Does it make sense to allow any 
request execution between PREPARE TRANSACTION and the subsequent COMMIT 
or ROLLBACK?
I did the same experiment with a regular table (not a temp table) and it 
blocks exactly the same way, so I don't think that the problem is 
specific to temp tables.
Once PREPARE has been executed, the transaction state is restored to 
TRANS_DEFAULT, but I wonder if we should not have a specific 
TRANS_PREPARED state in which we can only authorize a COMMIT or a 
ROLLBACK. Is there any reasonable use case where someone would have to 
execute requests between PREPARE and COMMIT/ROLLBACK?

Let me know what you think of the additional TRANS_PREPARED transaction 
state. It looks like the behavior of what happens between PREPARE and 
COMMIT/ROLLBACK is pretty much undefined.

Emmanuel

-- 
Emmanuel Cecchet
FTO @ Frog Thinker 
Open Source Development & Consulting
--
Web: http://www.frogthinker.org
email: manu@frogthinker.org
Skype: emmanuel_cecchet




view thread (36+ messages)  latest in thread

Message-ID: <48ECAA8F.3070306@frogthinker.org>
Permalink:  ../48ECAA8F.3070306@frogthinker.org/
Also on:    postgresql.org/message-id/48ECAA8F.3070306@frogthinker.org

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-hackers@postgresql.org
  Cc: manu@frogthinker.org, heikki.linnakangas@enterprisedb.com
  Subject: Re: Transactions and temp tables
  In-Reply-To: <48ECAA8F.3070306@frogthinker.org>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox