extension dependencies with 'requires'

Started by Eric Hansonalmost 8 years ago3 messagesgeneral
Jump to latest
#1Eric Hanson
eric@aquameta.com

Greetings,

I'm trying to author an extension and running into troubles with
dependencies. The extension depends on the uuid-ossp, pgcrypto and
postgres_fdw extensions, but I would like the dependencies to be installed
in the public schema, though the extension itself lives in its own schema.
Is there a way to use CREATE EXTENSION ... CASCADE and specify in the
control file which schema the dependencies are installed in? How does the
extension know where to install its dependencies?

Thanks,
Eric
--
Eric Hanson
CEO, Aquameta Labs
503-929-1073
www.aquameta.com

--
-- Eric Hanson CEO, Aquameta 503-929-1073

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Eric Hanson (#1)
Re: extension dependencies with 'requires'

Eric Hanson <eric@aquameta.com> writes:

I'm trying to author an extension and running into troubles with
dependencies. The extension depends on the uuid-ossp, pgcrypto and
postgres_fdw extensions, but I would like the dependencies to be installed
in the public schema, though the extension itself lives in its own schema.
Is there a way to use CREATE EXTENSION ... CASCADE and specify in the
control file which schema the dependencies are installed in?

Afraid not. CASCADE will pass down the same target-schema option to the
child CREATE EXTENSION operations that appeared in the initial command.

regards, tom lane

#3Eric Hanson
eric@aquameta.com
In reply to: Tom Lane (#2)
Re: extension dependencies with 'requires'

Ok thanks.

FWIW, this pretty profoundly limits what you can do with dependencies in
extensions that define their own schema: When two extensions that both
define their own schema need to share the same dependency, sounds like that
is impossible, because the dependency extensions can't be installed in two
schemas at the same time. Which ever extension is installed first will
create the dep in the target schema, and then the second extension will try
to install the dep and fail due to it being already installed.

Thanks,
Eric

--
Eric Hanson
CEO, Aquameta Labs
503-929-1073
www.aquameta.com

On Tue, May 1, 2018 at 11:00 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Show quoted text

Eric Hanson <eric@aquameta.com> writes:

I'm trying to author an extension and running into troubles with
dependencies. The extension depends on the uuid-ossp, pgcrypto and
postgres_fdw extensions, but I would like the dependencies to be

installed

in the public schema, though the extension itself lives in its own

schema.

Is there a way to use CREATE EXTENSION ... CASCADE and specify in the
control file which schema the dependencies are installed in?

Afraid not. CASCADE will pass down the same target-schema option to the
child CREATE EXTENSION operations that appeared in the initial command.

regards, tom lane