Обсуждение: altering the name of the public schema

Поиск
Список
Период
Сортировка

altering the name of the public schema

От
Jochem van Dieten
Дата:
[restarting the "Renaming schema's" thread from pgsql-general]

Using pgAdminII version 1.4.2 with PostgreSQL 7.3

I can alter the name of a schema using:
test=# update pg_catalog.pg_namespace
test-#     set nspname = 'newname'
test-#     where nspname = 'oldname';

This works without a problem until I try to rename the public schema.
For some reason this schema doesn't list among the schema's in a
database anymore. Changing the name back to public will make it list
again. But, even when it is not visible I can perform queries on it.
psql does not have any problems.

If I just add another entry into the pg_namespace table using an insert
query it will show straight away as a schema in pgAdminII. So I presume
the issue lies in the one thing I can't control in the pg_namespace
table; the OID.
Could it be that somewhere in pgAdminII there is a reference to the OID
2200 that is assigned to the public schema by default?

Jochem


Re: altering the name of the public schema

От
"Dave Page"
Дата:

> -----Original Message-----
> From: Jochem van Dieten [mailto:jochemd@oli.tudelft.nl]
> Sent: 02 December 2002 01:48
> To: pgadmin-support@postgresql.org
> Subject: [pgadmin-support] altering the name of the public schema
>
>
> [restarting the "Renaming schema's" thread from pgsql-general]


I don't read -general, but there was part of this discussion on
-hackers.

> Using pgAdminII version 1.4.2 with PostgreSQL 7.3
>
> I can alter the name of a schema using:
> test=# update pg_catalog.pg_namespace
> test-#     set nspname = 'newname'
> test-#     where nspname = 'oldname';
>
> This works without a problem until I try to rename the public schema.
> For some reason this schema doesn't list among the schema's in a
> database anymore. Changing the name back to public will make it list
> again. But, even when it is not visible I can perform queries on it.
> psql does not have any problems.
>
> If I just add another entry into the pg_namespace table using
> an insert
> query it will show straight away as a schema in pgAdminII. So
> I presume
> the issue lies in the one thing I can't control in the pg_namespace
> table; the OID.
> Could it be that somewhere in pgAdminII there is a reference
> to the OID
> 2200 that is assigned to the public schema by default?

pgAdmin hides system objects by default, but in the case of the public
schema it makes an exception bcause hiding public would not be sensible.
It does it by a combination of name and OID: the oid is less than the
last system oid, so it is hidden, except if it is called public.

Switch on show System Objects on the view menu and you should see it.

Regards, Dave.

Re: altering the name of the public schema [SOLVED]

От
Jochem van Dieten
Дата:
Dave Page wrote:
> From: Jochem van Dieten [mailto:jochemd@oli.tudelft.nl]
>
>>Could it be that somewhere in pgAdminII there is a reference to the OID
>>2200 that is assigned to the public schema by default?
>
>
> pgAdmin hides system objects by default, but in the case of the public
> schema it makes an exception bcause hiding public would not be sensible.
> It does it by a combination of name and OID: the oid is less than the
> last system oid, so it is hidden, except if it is called public.
>
> Switch on show System Objects on the view menu and you should see it.

That indeed solves this issue. May I make an enhancement request that
objects with an OID less than the last system OID are hidden, unless the
OID is 2200 (system OID's are not cycled, are they)?

Jochem