Marti Raudsepp <ma...@juffo.org> writes:
> The documentation says: The view schemata contains all schemas in the
> current database that are owned by a currently enabled role.

> In other words: this view only displays schemas that are *owned* by
> your user, or roles that your current user inherits from (superuser
> sees everything of course). Sadly it doesn't list visible/accessible
> schemas.

> I think this is pretty surprising; not sure if it's just bad legacy or
> if there is some good reason for this behavior. I couldn't find any
> justification in the source code.

The justification is that the SQL standard requires the view to act that
way.

         20.46  SCHEMATA view

         Function

         Identify the schemata in a catalog that are owned by a given user.

         Definition

         CREATE VIEW SCHEMATA AS
             SELECT CATALOG_NAME, SCHEMA_NAME, SCHEMA_OWNER,
                    DEFAULT_CHARACTER_SET_CATALOG, DEFAULT_CHARACTER_SET_
         SCHEMA,
                    DEFAULT_CHARACTER_SET_NAME, SQL_PATH
             FROM DEFINITION_SCHEMA.SCHEMATA

             WHERE ( SCHEMA_OWNER = CURRENT_USER
                   OR
                     SCHEMA_OWNER IN
                     ( SELECT ROLE_NAME
                       FROM ENABLED_ROLES ) )
               AND
                   CATALOG_NAME
                 = ( SELECT CATALOG_NAME
                     FROM INFORMATION_SCHEMA_CATALOG_NAME );

         GRANT SELECT ON TABLE SCHEMATA
             TO PUBLIC WITH GRANT OPTION;

> I think we should add a TODO item for fixing this?

Waste of breath.  You could try lobbying the SQL committee to change the
standard, perhaps.

                        regards, tom lane

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

Reply via email to