Hi,
On 2021-08-16 15:36:59 -0400, Tom Lane wrote:
> There's a policy question here, which is when does an operation on
> a pre-existing object within an extension script cause the object
> to be absorbed into the extension? You might naively say "never",
> but that's not our historical behavior, and I think it'd clearly
> be the wrong thing in some cases. For example, consider
>
> CREATE TYPE cube; -- make a shell type
> -- do something that requires type cube to exist
> CREATE EXTENSION cube;
>
> We don't want this to fail, because it might be necessary to do
> things that way to get out of circular dependencies.
In what scenario would that be a good way to address a circular
dependency? ISTM that whatever depends on $ext should be using shell
types or such to avoid the circular dependency, then create $ext. Rather
than creating shell types for object in $ext and then create $ext.
> Another point that perhaps deserves discussion is whether it's
> okay to change the signature of GenerateTypeDependencies in
> stable branches (we need to fix this in v13 not only v14/HEAD).
> I can't see a good reason for extensions to be calling that,
> and codesearch.debian.net knows of no outside callers, so I'm
> inclined to just change it. If anyone thinks that's too risky,
> we could do something with a wrapper function in v13.
Seems OK to not bother with a wrapper to me - I can't see a reason
either.
Greetings,
Andres Freund