How to use PostgreSQL extensions for Azure Database for PostgreSQL

APPLIES TO: Azure Database for PostgreSQL - Flexible Server

Azure Database for PostgreSQL flexible server allows you to extend the functionality of your database using extensions. Extensions bundle multiple related SQL objects in a single package that can be loaded or removed from your database with a command. After being loaded into the database, extensions function like built-in features.

Allow extensions

Before installing extensions in Azure Database for PostgreSQL flexible server, you must allow these extensions to be listed for use.

Using the Azure portal:

  1. Select your Azure Database for PostgreSQL flexible server instance.

  2. From the resource menu, under Settings section, select Server parameters.

  3. Search for the azure.extensions parameter.

  4. Select the extensions you wish to allow.

    Screenshot of allowlist.

Load libraries

shared_preload_libraries is a server configuration parameter that determines which libraries have to be loaded when Azure Database for PostgreSQL flexible server starts. Any libraries that use shared memory must be loaded via this parameter. If your extension needs to be added to the shared preload libraries, follow these steps:

Using the Azure portal:

  1. Select your Azure Database for PostgreSQL flexible server instance.

  2. From the resource menu, under Settings section, select Server parameters.

  3. Search for the shared_preload_libraries parameter.

  4. Select the libraries you wish to add.

    Screenshot of shared libraries.

You can set shared_preload_libraries via the CLI parameter set command.

az postgres flexible-server parameter set --resource-group <resource_group> --server-name <server> --subscription <subscription_id> --name shared_preload_libraries --value <extension_name>,<extension_name>

Create Extension

After extensions are allowlisted and loaded, they must be installed in each database on which they're to be used.

  1. To create an extension, a user must be a member of the azure_pg_admin role. A member of the azure_pg_admin role can grant privileges to other users to create extensions.

  2. Run the CREATE EXTENSION command to install a particular extension. This command loads the packaged objects into your database.

Note

Third-party extensions offered in Azure Database for PostgreSQL flexible server are open-source licensed code. We don't offer any third-party extensions or extension versions with premium or proprietary licensing models.

Azure Database for PostgreSQL flexible server instance supports a subset of key PostgreSQL extensions, as listed in the following table. This information is also available by running SHOW azure.extensions;. Extensions not listed in this document aren't supported on Azure Database for PostgreSQL flexible server. You can't create or load your extension in Azure Database for PostgreSQL flexible server.

Upgrading PostgreSQL extensions

A simple command allows in-place upgrades of database extensions. This feature enables customers to automatically update their third-party extensions to the latest versions, maintaining current and secure systems without manual effort.

Updating extensions

To update an installed extension to the latest available version supported by Azure, use the following SQL command:

ALTER EXTENSION <extension_name> UPDATE;

This command simplifies the management of database extensions by allowing users to manually upgrade to the latest version approved by Azure, enhancing both compatibility and security.

Installed extensions

To list the extensions currently installed on your database, use the following SQL command:

SELECT * FROM pg_extension;

View the list of available extension.

Limitations

While updating extensions is straightforward, there are certain limitations:

  • Selection of a specific version: The command doesn't support updating to intermediate versions of an extension.

  • Downgrading: Doesn't support downgrading an extension to a previous version. If a downgrade is necessary, it might require support assistance and depends on the availability of the previous version.