Search Postgresql Archives

Re: unlooged tables

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> -----Original Message-----
> From: Sergey Konoplev [mailto:gray.ru@xxxxxxxxx]
> Sent: Thursday, December 06, 2012 4:52 PM
> To: Igor Neyman
> Cc: pgsql-general@xxxxxxxxxxxxxx
> Subject: Re:  unlooged tables
> 
> Hi,
> 
> On Thu, Dec 6, 2012 at 7:08 AM, Igor Neyman <ineyman@xxxxxxxxxxxxxx>
> 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

I was hoping, may be hacking pg_catalog, like setting pg_class.relpersistence to 'u' will do the trick (or something like this).

b.t.w. there will be no other active connections, so there is no risk of needing to add/update/delete records in the table while changing to "unlogged".

Regards,
Igor Neyman




-- 
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux