"Regina Obe" <l...@pcorp.us> writes: >> requires = 'extfoo, extbar' >> no_relocate = 'extfoo'
> So when no_relocate is specified, where would that live? In the control file. > Would I mark the extfoo as not relocatable on CREATE / ALTER of said > extension? > Or add an extra field to pg_extension We don't record dependent extensions in pg_extension now, so that doesn't seem like it would fit well. I was envisioning that ALTER EXTENSION SET SCHEMA would do something along the lines of (1) scrape the list of dependent extensions out of pg_depend (2) open and parse each of their control files (3) fail if any of their control files mentions the target one in no_relocate. Admittedly, this'd be a bit slow, but I doubt that ALTER EXTENSION SET SCHEMA is a performance bottleneck for anybody. > I had tried to do that originally, e.g. instead of even bothering with such > an extra arg, just mark it as not relocatable if the extension's script > contains references to the required extension's schema. I don't think that's a great approach, because those references might appear in places that can track a rename (ie, in an object name that's resolved to a stored OID). Short of fully parsing the script file you aren't going to get a reliable answer. I'm content to lay that problem off on the extension authors. > But then what if extfoo is upgraded? We already have mechanisms for version-dependent control files, so I don't see where there's a problem. regards, tom lane