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: Tom Lane <tgl@sss.pgh.pa.us>
Cc: pgsql-hackers@postgresql.org
Subject: Re: Transactions and temp tables
Date: Mon, 01 Dec 2008 15:50:42 -0500
Message-ID: <49344E22.2000008@frogthinker.org> (raw)
In-Reply-To: <492B377F.4080602@frogthinker.org>
References: <48EA7B12.6050906@frogthinker.org>
	<48EB0551.50205@enterprisedb.com>
	<48EB95B7.10604@frogthinker.org>
	<48EC7EB5.5020001@enterprisedb.com>
	<48ECAA8F.3070306@frogthinker.org>
	<28137.1223472191@sss.pgh.pa.us>
	<48ECBBC2.6060003@frogthinker.org>
	<29132.1223475486@sss.pgh.pa.us>
	<48EFA13C.2060407@frogthinker.org>
	<490F804A.60108@enterprisedb.com>
	<490FB4B3.908@frogthinker.org>
	<49106B10.2090407@enterprisedb.com>
	<4910DFC0.3080301@frogthinker.org>
	<4914CD14.2060608@frogthinker.org>
	<4921C42A.3030600@enterprisedb.com>
	<492221A3.1060608@frogthinker.org>
	<4922A798.7050709@enterprisedb.com>
	<49232993.1050801@enterprisedb.com>
	<49243376.2000404@frogthinker.org>
	<492543D5.9050904@enterprisedb.com>
	<492B377F.4080602@frogthinker.org>

Heikki,

I think that the Assert in is_temp_rel(Oid) in tablecmds.c should be 
replaced by if (on_commits == NULL) return false;
As the use case below shows, a regular table can be created and hold a 
LOCKTAG_RELATION lock that will trigger the call to is_temp_rel in 
is_preparable_locktag. The assert will break if no temp table was accessed.

As we were also trying to list potential issues, if the temp table uses 
a SERIAL type, will there be potentially a problem with the sequence at 
prepare time?

Emmanuel


> The following test fails with your patch on my system. Could you check 
> if you can reproduce?
>
> psql (8.4devel)
> Type "help" for help.
>
> test=# begin;
> BEGIN
> test=# create table paul(x int);
> CREATE TABLE
> test=# insert into paul values(1);
> INSERT 0 1
> test=# prepare transaction 'persistentTableShouldSucceed';
> server closed the connection unexpectedly
>        This probably means the server terminated abnormally
>        before or while processing the request.
> The connection to the server was lost. Attempting reset: Failed.
>
> ---
>
> LOG:  database system is ready to accept connections
> TRAP: FailedAssertion("!(on_commits != ((void *)0))", File: 
> "tablecmds.c", Line: 7823)
> LOG:  server process (PID 15969) was terminated by signal 6: Aborted
> LOG:  terminating any other active server processes
> FATAL:  the database system is in recovery mode
>
>
> Thanks,
> manu
>


-- 
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: <49344E22.2000008@frogthinker.org>
Permalink:  ../49344E22.2000008@frogthinker.org/
Also on:    postgresql.org/message-id/49344E22.2000008@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, tgl@sss.pgh.pa.us
  Subject: Re: Transactions and temp tables
  In-Reply-To: <49344E22.2000008@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