Re: ALTER TABLE ... REPLACE WITH

Поиск
Список
Период
Сортировка
От Robert Haas
Тема Re: ALTER TABLE ... REPLACE WITH
Дата
Msg-id AANLkTimAxHrW7-8ZtHEd9qxB0ErHU4e6BR_KpARv5GmY@mail.gmail.com
обсуждение исходный текст
Ответ на Re: ALTER TABLE ... REPLACE WITH  ("Kevin Grittner" <Kevin.Grittner@wicourts.gov>)
Список pgsql-hackers
On Wed, Dec 15, 2010 at 11:30 AM, Kevin Grittner
<Kevin.Grittner@wicourts.gov> wrote:
> Heikki Linnakangas  wrote:
>> On 14.12.2010 20:27, Simon Riggs wrote:
>
>>> 1. Prepare new data into "new_table" and build indexes
>>> 2. Swap old for new
>>> BEGIN;
>>> DROP TABLE "old_table";
>>> ALTER TABLE "new_table" RENAME to "old_table";
>>> COMMIT;
>>>
>>> Step (2) works, but any people queuing to access the table
>>> will see ERROR: could not open relation with OID xxxxx
>>
>> Could we make that work without error?
>
> Well, that worked better for us than building up the new
> contents in a temporary table and doing the sequence Tom
> suggests, but to eliminate the above error we had to do:
>
> BEGIN;
> ALTER TABLE "old_table" RENAME TO "dead_table";
> ALTER TABLE "new_table" RENAME TO "old_table";
> COMMIT;
> -- Wait for all references to old OID to expire.
> DROP TABLE "dead_table";

Been there, done that.  Didn't buy the post-card.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


В списке pgsql-hackers по дате отправления:

Предыдущее
От: "Kevin Grittner"
Дата:
Сообщение: Re: ALTER TABLE ... REPLACE WITH
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Complier warnings on mingw gcc 4.5.0