mirror of
https://github.com/postgres/postgres.git
synced 2025-08-22 21:53:06 +03:00
Repair ALTER EXTENSION ... SET SCHEMA.
It turns out that we broke this in commit e5bc9454e
, because
the code was assuming that no dependent types would appear
among the extension's direct dependencies, and now they do.
This isn't terribly hard to fix: just skip dependent types,
expecting that we will recurse to them when we process the parent
object (which should also be among the direct dependencies).
But a little bit of refactoring is needed so that we can avoid
duplicating logic about what is a dependent type.
Although there is some testing of ALTER EXTENSION SET SCHEMA,
it failed to cover interesting cases, so add more tests.
Discussion: https://postgr.es/m/930191.1715205151@sss.pgh.pa.us
This commit is contained in:
@@ -2940,7 +2940,7 @@ AlterExtensionNamespace(const char *extensionName, const char *newschema, Oid *o
|
||||
|
||||
/*
|
||||
* If not all the objects had the same old namespace (ignoring any
|
||||
* that are not in namespaces), complain.
|
||||
* that are not in namespaces or are dependent types), complain.
|
||||
*/
|
||||
if (dep_oldNspOid != InvalidOid && dep_oldNspOid != oldNspOid)
|
||||
ereport(ERROR,
|
||||
|
Reference in New Issue
Block a user