Thread: Overwrite pg_catalog?

Overwrite pg_catalog?

From
Juliano
Date:
Hi everyone,

I tried to restore pg_catalog to my new database, but the existing pg_catalog can't be overwritten or dropped, and postgres auto creates pg_catalog when I create a new DB.

So, there is a way to restore the pg_catalog to a new database?

Regards,
Juliano

Re: Overwrite pg_catalog?

From
Francisco Olarte
Date:
Juliano:

On Thu, Dec 1, 2016 at 12:16 PM, Juliano <jplinux@protonmail.com> wrote:
> I tried to restore pg_catalog to my new database, but the existing
> pg_catalog can't be overwritten or dropped, and postgres auto creates
> pg_catalog when I create a new DB.

This is because, in general, pg_catalog is maintained by DML
statements, restoring it is not going to do what you think.

I.e., if you create a table, a row goes into pg_class, but if you
somehow manage to insert into pg_class a table is not properly created
( more things need to be done ).

Copying pg_catalog from one db to other is like trying to copy the
root dir and FAT from one floppy ( how old fashioned ) to other, it
cannot be done with normal tools and probably won't do what you think
it does.


> So, there is a way to restore the pg_catalog to a new database?

Probably not, but this has the faint smell of http://xyproblem.info/ ,
what are you truing to achieve by doing that?

Francisco Olarte.


Re: Overwrite pg_catalog?

From
Melvin Davidson
Date:


On Thu, Dec 1, 2016 at 7:07 AM, Francisco Olarte <folarte@peoplecall.com> wrote:
Juliano:

On Thu, Dec 1, 2016 at 12:16 PM, Juliano <jplinux@protonmail.com> wrote:
> I tried to restore pg_catalog to my new database, but the existing
> pg_catalog can't be overwritten or dropped, and postgres auto creates
> pg_catalog when I create a new DB.

This is because, in general, pg_catalog is maintained by DML
statements, restoring it is not going to do what you think.

I.e., if you create a table, a row goes into pg_class, but if you
somehow manage to insert into pg_class a table is not properly created
( more things need to be done ).

Copying pg_catalog from one db to other is like trying to copy the
root dir and FAT from one floppy ( how old fashioned ) to other, it
cannot be done with normal tools and probably won't do what you think
it does.


> So, there is a way to restore the pg_catalog to a new database?

Probably not, but this has the faint smell of http://xyproblem.info/ ,
what are you truing to achieve by doing that?

Francisco Olarte.


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

Juliano,

The right way to do what you want is to:
A:
1. pg_dump from the database you want to copy     https://www.postgresql.org/docs/9.6/static/app-pgdump.html
2. pg_restore the dump file too the new database.   https://www.postgresql.org/docs/9.6/static/app-pgrestore.html
OR
B:
1: pg_dumpall from the cluster you want to copy              https://www.postgresql.org/docs/9.6/static/app-pg-dumpall.html
2: use psql to restore the dump file into the new cluster   https://www.postgresql.org/docs/9.6/static/app-psql.html

--
Melvin Davidson
I reserve the right to fantasize.  Whether or not you
wish to share my fantasy is entirely up to you.

Re: Overwrite pg_catalog?

From
"David G. Johnston"
Date:
On Thu, Dec 1, 2016 at 4:16 AM, Juliano <jplinux@protonmail.com> wrote:
Hi everyone,

I tried to restore pg_catalog to my new database, but the existing pg_catalog can't be overwritten or dropped, and postgres auto creates pg_catalog when I create a new DB.

So, there is a way to restore the pg_catalog to a new database?


​I suggest you explain the actual problem ​you are trying to solve - the one for which you believe restoring pg_catalog is a solution.

David J.

Re: Overwrite pg_catalog?

From
"Joshua D. Drake"
Date:
On 12/01/2016 03:16 AM, Juliano wrote:
> Hi everyone,
>
> I tried to restore pg_catalog to my new database, but the existing
> pg_catalog can't be overwritten or dropped, and postgres auto creates
> pg_catalog when I create a new DB.
>
> So, there is a way to restore the pg_catalog to a new database?

Why would you do that? You should be restoring from a proper backup
which will already have everything it needs to populate the new
pg_catalog correctly.

JD

>
> Regards,
> Juliano


--
Command Prompt, Inc.                  http://the.postgres.company/
                         +1-503-667-4564
PostgreSQL Centered full stack support, consulting and development.
Everyone appreciates your honesty, until you are honest with them.
Unless otherwise stated, opinions are my own.


Re: Overwrite pg_catalog?

From
Michael Paquier
Date:
On Thu, Dec 01, 2016 at 01:07:09PM +0100, Francisco Olarte wrote:
> Juliano:
>
> On Thu, Dec 1, 2016 at 12:16 PM, Juliano <jplinux@protonmail.com> wrote:
> > I tried to restore pg_catalog to my new database, but the existing
> > pg_catalog can't be overwritten or dropped, and postgres auto creates
> > pg_catalog when I create a new DB.
>
> This is because, in general, pg_catalog is maintained by DML
> statements, restoring it is not going to do what you think.

s/DML/DDL/
--
Michael

Attachment

Re: Overwrite pg_catalog?

From
Juliano
Date:
Hi everyone,

Ok, thanks.
Just to explain: I have some custom objects on my pg_catalog and I would like to restore it in a new test database and I think that this is the best way, isn't it?

Regards,
Juliano



-------- Original Message --------
Subject: Re: [GENERAL] Overwrite pg_catalog?
Local Time: December 2, 2016 2:18 AM
UTC Time: December 2, 2016 2:18 AM
From: michael.paquier@gmail.com
To: Francisco Olarte <folarte@peoplecall.com>
Juliano <jplinux@protonmail.com>, pgsql-general@postgresql.org <pgsql-general@postgresql.org>

On Thu, Dec 01, 2016 at 01:07:09PM +0100, Francisco Olarte wrote:
> Juliano:
>
> On Thu, Dec 1, 2016 at 12:16 PM, Juliano <jplinux@protonmail.com> wrote:
> > I tried to restore pg_catalog to my new database, but the existing
> > pg_catalog can't be overwritten or dropped, and postgres auto creates
> > pg_catalog when I create a new DB.
>
> This is because, in general, pg_catalog is maintained by DML
> statements, restoring it is not going to do what you think.

s/DML/DDL/
--
Michael

Re: Overwrite pg_catalog?

From
Michael Paquier
Date:
On Tue, Dec 6, 2016 at 5:15 PM, Juliano <jplinux@protonmail.com> wrote:
> Hi everyone,
>
> Ok, thanks.
> Just to explain: I have some custom objects on my pg_catalog and I would
> like to restore it in a new test database and I think that this is the best
> way, isn't it?

Yes, pg_dump and pg_dumpall are the tools to use to restore a database
or multiple databases from a past state, and provides options
regarding what you want to dump. So go for it.
--
Michael