From: | Emmanuel Cecchet <manu(at)frogthinker(dot)org> |
---|---|
To: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Transactions and temp tables |
Date: | 2008-10-06 20:54:42 |
Message-ID: | 48EA7B12.6050906@frogthinker.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi,
I had the same problem as John with "could not open relation
1663/16384/16584: No such file or directory" in a specific combination
of transactions with temp tables
(http://archives.postgresql.org/pgsql-hackers/2008-02/msg01260.php) As
Heikki mentioned
(http://archives.postgresql.org/pgsql-hackers/2008-02/msg01277.php) we
should be able to allow CREATE+DROP in the same transaction.
I came up with a patch (currently based on 8.3.3) to address that issue.
Instead of relying on a boolean that tells if a temp table was accessed,
I keep a list of the Oid for the temp tables accessed in the transaction
and at prepare commit time, I check if the relations are still valid. I
also added a check to allow empty temp tables at prepare commit time
(this allows to use temp tables with 'on commit delete rows' options.
I am attaching the patch and the use cases I have been using to test it.
The test cases try to compile the various use cases that I have seen
reported on the list. Let me know what you think of the patch and if it
could be applied to 8.3 and 8.4?
Thanks in advance for your feedback,
manu
--
Emmanuel Cecchet
FTO @ Frog Thinker
Open Source Development & Consulting
--
Web: http://www.frogthinker.org
email: manu(at)frogthinker(dot)org
Skype: emmanuel_cecchet
Attachment | Content-Type | Size |
---|---|---|
patch-2pc-temp-tablev3.txt | text/plain | 6.0 KB |
2pcTempTableTests.sql | text/plain | 4.0 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Simon Riggs | 2008-10-06 21:06:44 | Reducing some DDL Locks to ShareLock |
Previous Message | Robert Haas | 2008-10-06 20:04:23 | Re: Common Table Expressions applied; some issues remain |