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