Re: [COMMITTERS] pgsql: Fix pg_dump to dump shell types. - Mailing list pgsql-hackers

From Tom Lane
Subject Re: [COMMITTERS] pgsql: Fix pg_dump to dump shell types.
Date
Msg-id 20081.1439158993@sss.pgh.pa.us
Whole thread Raw
Responses Re: [COMMITTERS] pgsql: Fix pg_dump to dump shell types.  (Peter Eisentraut <peter_e@gmx.net>)
List pgsql-hackers
Andrew Dunstan <andrew@dunslane.net> writes:
> Still not quite there. If either 9.0 or 9.1 is upgraded to 9.2 or later, 
> they fail like this:

>     pg_restore: creating TYPE "public"."myshell"
>     pg_restore: setting owner and privileges for TYPE "public"."myshell"
>     pg_restore: setting owner and privileges for ACL "public"."myshell"
>     pg_restore: [archiver (db)] Error from TOC entry 4293; 0 0 ACL
>     myshell buildfarm
>     pg_restore: [archiver (db)] could not execute query: ERROR:  type
>     "myshell" is only a shell
>          Command was: REVOKE ALL ON TYPE "myshell" FROM PUBLIC;
>     REVOKE ALL ON TYPE "myshell" FROM "buildfarm";
>     GRANT ALL ON TYPE "myshell" TO PUBL...

> We could just declare that we don't support this for versions older than 
> 9.2, in which case I would just remove the type from the test database 
> before testing cross-version upgrade. But if it's easily fixed then 
> let's do it.

It looks to me like the reason for this is that pg_dump forces the
"typacl" of a type to be '{=U}' when reading the schema data for a
pre-9.2 type, rather than reading it as NULL (ie default permissions)
which would result in not printing any grant/revoke commands for
the object.

I do not see a good reason for that; quite aside from this problem,
it means there is one more place that knows the default permissions
for a type than there needs to be.  Peter, what was the rationale?
        regards, tom lane



pgsql-hackers by date:

Previous
From: Noah Misch
Date:
Subject: Re: Precedence of standard comparison operators
Next
From: Tom Lane
Date:
Subject: Re: Precedence of standard comparison operators