How to enable an extension

vmk8s

This guide outlines the steps for enabling an extension (also “plugin”) in a Charmed PostgreSQL deployment.

See also: List of supported extensions

Enable extension

Enable the extension by setting True as the value of its respective config option, like in the following example:

juju config postgresql plugin-<extension name>-enable=True
juju config postgresql-k8s plugin-<extension name>-enable=True

Integrate your application

Integrate your charm with the PostgreSQL charm:

juju integrate <your-charm> postgresql
juju integrate <your-charm> postgresql-k8s

If your application charm requests extensions through db or db-admin relation data, but the extension is not enabled yet, you’ll see that the PostgreSQL application goes into a blocked state with the following message:

postgresql/0*  blocked   idle   10.1.123.30      extensions requested through relation
postgresql-k8s/0*  blocked   idle   10.1.123.30      extensions requested through relation

In the Juju debug logs we can see the list of extensions that need to be enabled. The example below shows a debug log for a PostgreSQL machine charm:

unit-postgresql-0: 18:04:51 ERROR unit.postgresql/0.juju-log db:5: ERROR - `extensions` (pg_trgm, unaccent) cannot be requested through relations - Please enable extensions through `juju config` and add the relation again.

After enabling the needed extensions through the config options, the charm will unblock. If you have removed the relation, you can add it back again.

If the application charm uses the new postgresql_client interface, it can use the is_postgresql_plugin_enabled helper method from the data interfaces library to check whether the plugin/extension is already enabled in the database.

See also: List of supported extensions