Re: unlooged tables - Mailing list pgsql-general

From Sergey Konoplev
Subject Re: unlooged tables
Date
Msg-id CAL_0b1uupFviYVrr+QjYS9vqpEhKNbriCWP4bF4VAhEwy60KUg@mail.gmail.com
Whole thread Raw
In response to unlooged tables  (Igor Neyman <ineyman@perceptron.com>)
Responses Re: unlooged tables
List pgsql-general
Hi,

On Thu, Dec 6, 2012 at 7:08 AM, Igor Neyman <ineyman@perceptron.com> wrote:
> Is there any way to change “regular” table to “unlogged” without dropping
> said table and recreating it as unlogged?

AFAIK it is impossible currently.

The best way to do such transformation that comes to my mind is:

CREATE TABLE table1 (
    id bigserial PRIMARY KEY,
    data text
);

INSERT INTO table1 (data)
SELECT 'bla' || i::text
FROM generate_series(1, 10) AS i;

SELECT * FROM table1;

CREATE UNLOGGED TABLE tmp (LIKE table1 INCLUDING ALL);
ALTER TABLE table1 INHERIT tmp;

BEGIN;
ALTER TABLE table1 RENAME TO table1_old;
ALTER TABLE tmp RENAME TO table1;
END;

So new rows will be inserted into the new unlogged table and old rows
will be available from the old one.

INSERT INTO table1 (data)
SELECT 'bla' || i::text
FROM generate_series(11, 15) AS i;

UPDATE table1 SET data = 'mla' || i::text WHERE i <= 5;

SELECT * FROM table1;

And then all we need is move the data to the new table and finish with
the old one.

ALTER SEQUENCE table1_id_seq OWNED BY table1.id;

BEGIN;
INSERT INTO table1 SELECT * FROM table1_old;
DROP TABLE table1_old CASCADE;
END;

SELECT * FROM table1;

Correct me if I misunderstand something, please.

>
> Didn’t find the answer in the docs.  Looks like “alter table …” does not
> support “unlogged.
>
>
>
> TIA,
>
> Igor Neyman



--
Sergey Konoplev
Database and Software Architect
http://www.linkedin.com/in/grayhemp

Phones:
USA +1 415 867 9984
Russia, Moscow +7 901 903 0499
Russia, Krasnodar +7 988 888 1979

Skype: gray-hemp
Jabber: gray.ru@gmail.com


pgsql-general by date:

Previous
From: Chris Angelico
Date:
Subject: Re: libpq - prevent automatic reconnect
Next
From: "Gauthier, Dave"
Date:
Subject: Setting default privs for a user doesn't seem to work.