[Yandex Cloud documentation](../../../index.md) > [Yandex Managed Service for PostgreSQL](../../index.md) > [Step-by-step guides](../index.md) > PostgreSQL extensions and dictionaries > Managing extensions

# Managing extensions

Managed Service for PostgreSQL supports multiple standard PostgreSQL extensions, along with several custom ones. A complete list of available extensions and their versions for each PostgreSQL release [is provided below](#postgresql).

{% note warning %}

Managed Service for PostgreSQL clusters do not support managing PostgreSQL extensions via SQL commands.

{% endnote %}

## Loading libraries for extensions {#libraries-connection}

Some extensions require shared libraries to be loaded. To load a library, specify its name in the [Shared preload libraries setting](../../concepts/settings-list.md#setting-shared-libraries) when you [create](../cluster-create.md) or [modify](../update.md#change-postgresql-config) a cluster.

Managed Service for PostgreSQL supports the following libraries:

* `age`: Required for the [age](https://age.apache.org) extension.
* `anon`: Required for the [postgresql_anonymizer](https://postgresql-anonymizer.readthedocs.io/en/stable/) extension.
* `auto_explain`: Required for the [auto_explain](https://www.postgresql.org/docs/current/auto-explain.html) extension.
* `pg_cron`: Required for the [pg_cron](https://github.com/citusdata/pg_cron) extension.
* `pg_hint_plan`: Required for the [pg_hint_plan](https://github.com/ossc-db/pg_hint_plan) extension.
* `pg_qualstats`: Required for the [pg_qualstats](https://github.com/powa-team/pg_qualstats) extension.
* `pgaudit`: Required for the [pgaudit](https://www.pgaudit.org/) extension.
* `pglogical`: Required for the [pglogical](https://github.com/2ndQuadrant/pglogical) extension.
* `timescaledb`: Required for [TimescaleDB](https://github.com/timescale/timescaledb) to function.

To declare a library in the Terraform manifest, specify its name in `SHARED_PRELOAD_LIBRARIES_<library_name>` format, e.g., `SHARED_PRELOAD_LIBRARIES_TIMESCALEDB`.

{% note warning %}

Loading a shared library will cause PostgreSQL on the master host to restart.

{% endnote %}

## Getting a list of loaded extensions {#list-extensions}

{% list tabs group=instructions %}

- Management console {#console}

  1. Navigate to **Managed Service for&nbsp;PostgreSQL**.
  1. Click the name of your cluster and select the **Databases** section.
  1. The **PostgreSQL extensions** column will show the list of extensions loaded for each database.

- CLI {#cli}

  If you do not have the Yandex Cloud CLI yet, [install and initialize it](../../../cli/quickstart.md#install).

  The folder used by default is the one specified when [creating](../../../cli/operations/profile/profile-create.md) the CLI profile. To change the default folder, use the `yc config set folder-id <folder_ID>` command. You can also specify a different folder for any command using `--folder-name` or `--folder-id`. If you access a resource by its name, the search will be limited to the default folder. If you access a resource by its ID, the search will be global, i.e., through all folders based on access permissions.

  To get a list of database extensions, run this command:

  ```bash
  yc managed-postgresql database get <DB_name> \
     --cluster-name <cluster_name>
  ```

  The `extensions` list will show the loaded extensions.

- REST API {#api}

  1. [Get an IAM token for API authentication](../../api-ref/authentication.md) and put it into an environment variable:

     ```bash
     export IAM_TOKEN="<IAM_token>"
     ```

  1. Call the [Database.Get](../../api-ref/Database/get.md) method, e.g., via the following [cURL](https://curl.se/) request:

     ```bash
     curl \
       --request GET \
       --header "Authorization: Bearer $IAM_TOKEN" \
       --url 'https://mdb.api.cloud.yandex.net/managed-postgresql/v1/clusters/<cluster_ID>/databases/<DB_name>'
     ```

     You can get the cluster ID with the [list of clusters in the folder](../cluster-list.md#list-clusters), and the database name, with the [list of databases in the cluster](../databases.md#list-db).

  1. Check the [server response](../../api-ref/Database/get.md#responses) to make sure your request was successful.

     You can find the list of loaded extensions in the `extensions` field of the command output.

- gRPC API {#grpc-api}

  1. [Get an IAM token for API authentication](../../api-ref/authentication.md) and put it into an environment variable:

     ```bash
     export IAM_TOKEN="<IAM_token>"
     ```

  1. Clone the [cloudapi](https://github.com/yandex-cloud/cloudapi) repository:
     
     ```bash
     cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
     ```
     
     Below, we assume that the repository contents reside in the `~/cloudapi/` directory.
  1. Call the [DatabaseService.Get](../../api-ref/grpc/Database/get.md) method, e.g., via the following [gRPCurl](https://github.com/fullstorydev/grpcurl) request:

     ```bash
     grpcurl \
       -format json \
       -import-path ~/cloudapi/ \
       -import-path ~/cloudapi/third_party/googleapis/ \
       -proto ~/cloudapi/yandex/cloud/mdb/postgresql/v1/database_service.proto \
       -rpc-header "Authorization: Bearer $IAM_TOKEN" \
       -d '{
             "cluster_id": "<cluster_ID>",
             "database_name": "<DB_name>"
           }' \
       mdb.api.cloud.yandex.net:443 \
       yandex.cloud.mdb.postgresql.v1.DatabaseService.Get
     ```

     You can get the cluster ID from the [list of clusters in your folder](../cluster-list.md#list-clusters), and the database name, from the [list of databases in your cluster](../databases.md#list-db).

  1. Check the [server response](../../api-ref/grpc/Database/get.md#yandex.cloud.mdb.postgresql.v1.Database) to make sure your request was successful.

     You can find the list of loaded extensions in the `extensions` field of the command output.

{% endlist %}

## Updating a list of loaded extensions {#update-extensions}

{% list tabs group=instructions %}

- Management console {#console}

  1. Navigate to **Managed Service for&nbsp;PostgreSQL**.
  1. Click the name of your cluster and select the **Databases** tab.
  1. Find the database you need in the list, click ![options](../../../_assets/console-icons/ellipsis.svg) in its row, then select **Manage**.
  1. Select the extensions you need and click **Configure**.

- CLI {#cli}

  If you do not have the Yandex Cloud CLI yet, [install and initialize it](../../../cli/quickstart.md#install).

  The folder used by default is the one specified when [creating](../../../cli/operations/profile/profile-create.md) the CLI profile. To change the default folder, use the `yc config set folder-id <folder_ID>` command. You can also specify a different folder for any command using `--folder-name` or `--folder-id`. If you access a resource by its name, the search will be limited to the default folder. If you access a resource by its ID, the search will be global, i.e., through all folders based on access permissions.

  To update extensions for a database, provide their list in the `--extensions` argument of the CLI command. Any extensions not included in the list will be disabled.

  ```bash
  yc managed-postgresql database update <DB_name> \
     --cluster-name <cluster_name> \
     --extensions <extension_name>,<extension_name>...
  ```

  You may get errors when installing multiple extensions. Learn more about possible causes of errors and how to troubleshoot them in [FAQ](../../qa/errors.md#cli-extensions-error).

- Terraform {#tf}

  1. Open the current Terraform configuration file with the infrastructure plan.

     To learn how to create this file, see [Creating a cluster](../cluster-create.md).

     For the complete list of configurable Managed Service for PostgreSQL cluster database fields, see [this Terraform provider guide](../../../terraform/resources/mdb_postgresql_database.md).

  1. Add one or more `extension` sections to your cluster database configuration, with one section per extension:

      ```hcl
      resource "yandex_mdb_postgresql_database" "<DB_name>" {
        ...
        extension {
          name    = "<extension_name>"
        }
        ...
      }
      ```

  1. Make sure the settings are correct.

     1. In the command line, navigate to the directory that contains the current Terraform configuration files defining the infrastructure.
     1. Run this command:
     
        ```bash
        terraform validate
        ```
     
        Terraform will show any errors found in your configuration files.

  1. Confirm updating the resources.

     1. Run this command to view the planned changes:
     
        ```bash
        terraform plan
        ```
     
        If you described the configuration correctly, the terminal will display a list of the resources to update and their parameters. This is a verification step that does not apply changes to your resources.
     
     1. If everything looks correct, apply the changes:
        1. Run this command:
     
           ```bash
           terraform apply
           ```
     
        1. Confirm updating the resources.
        1. Wait for the operation to complete.

- REST API {#api}

  1. [Get an IAM token for API authentication](../../api-ref/authentication.md) and put it into an environment variable:

     ```bash
     export IAM_TOKEN="<IAM_token>"
     ```

  1. Call the [Database.Update](../../api-ref/Database/update.md) method, e.g., via the following [cURL](https://curl.se/) request:

     {% note warning %}
     
     The API method will assign default values to all the parameters of the object you are modifying unless you explicitly provide them in your request. To avoid this, list the settings you want to change in the `updateMask` parameter as a single comma-separated string.
     
     {% endnote %}

     ```bash
     curl \
       --request PATCH \
       --header "Authorization: Bearer $IAM_TOKEN" \
       --header "Content-Type: application/json" \
       --url 'https://mdb.api.cloud.yandex.net/managed-postgresql/v1/clusters/<cluster_ID>/databases/<DB_name>' \
       --data '{
                 "updateMask": "extensions",
                 "extensions": [
                   {
                     "name": "<extension_name>"
                   },
                   { <similar_configuration_for_extension_2> },
                   { ... },
                   { <similar_configuration_for_extension_N> }
                 ]
               }'
     ```

     Where:

     * `updateMask`: Comma-separated string of settings to update.

       Here, we provide only one setting.

     * `extensions`: Array of database extensions. Each object represents a single extension and has the following structure:

       * `name`: Extension name.

       Use names from the [list of supported PostgreSQL](#postgresql) extensions and utilities.

     You can get the cluster ID from the [list of clusters in your folder](../cluster-list.md#list-clusters), and the database name, from the [list of databases in your cluster](../databases.md#list-db).

  1. Check the [server response](../../api-ref/Database/update.md#responses) to make sure your request was successful.

- gRPC API {#grpc-api}

  1. [Get an IAM token for API authentication](../../api-ref/authentication.md) and put it into an environment variable:

     ```bash
     export IAM_TOKEN="<IAM_token>"
     ```

  1. Clone the [cloudapi](https://github.com/yandex-cloud/cloudapi) repository:
     
     ```bash
     cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
     ```
     
     Below, we assume that the repository contents reside in the `~/cloudapi/` directory.
  1. Call the [DatabaseService.Update](../../api-ref/grpc/Database/update.md) method, e.g., via the following [gRPCurl](https://github.com/fullstorydev/grpcurl) request:

     {% note warning %}
     
     The API method will assign default values to all the parameters of the object you are modifying unless you explicitly provide them in your request. To avoid this, list the settings you want to change in the `update_mask` parameter as an array of `paths[]` strings.
     
     {% cut "Format for listing settings" %}
     
     ```yaml
     "update_mask": {
         "paths": [
             "<setting_1>",
             "<setting_2>",
             ...
             "<setting_N>"
         ]
     }
     ```
     
     {% endcut %}
     
     {% endnote %}

     ```bash
     grpcurl \
       -format json \
       -import-path ~/cloudapi/ \
       -import-path ~/cloudapi/third_party/googleapis/ \
       -proto ~/cloudapi/yandex/cloud/mdb/postgresql/v1/database_service.proto \
       -rpc-header "Authorization: Bearer $IAM_TOKEN" \
       -d '{
             "cluster_id": "<cluster_ID>",
             "database_name": "<DB_name>",
             "update_mask": {
               "paths": [
                 "extensions"
               ]
             },
             "extensions": [
               {
                 "name": "<extension_name>"
               },
               { <similar_configuration_for_extension_2> },
               { ... },
               { <similar_configuration_for_extension_N> }
             ]
           }' \
       mdb.api.cloud.yandex.net:443 \
       yandex.cloud.mdb.postgresql.v1.DatabaseService.Update
     ```

     Where:

     * `update_mask`: List of settings you want to update as an array of strings (`paths[]`).

       Here, we provide only one setting.

     * `extensions`: Array of database extensions. Each array element contains the configuration for a single extension and has the following structure:

       * `name`: Extension name.

       Use names from the [list of supported PostgreSQL](#postgresql) extensions and utilities.

     You can get the cluster ID from the [list of clusters in your folder](../cluster-list.md#list-clusters), and the database name, from the [list of databases in your cluster](../databases.md#list-db).

  1. Check the [server response](../../api-ref/grpc/Database/update.md#yandex.cloud.operation.Operation) to make sure your request was successful.

{% endlist %}

## Supported PostgreSQL extensions and utilities {#postgresql}

#|
|| **Extension** \ **PostgreSQL version** | **14** | **15** | **16** | **17** | **18** ||
|| <p>[address_standardizer](https://postgis.net/docs/manual-3.1/postgis_installation.html#installing_pagc_address_standardizer)</p><p>Provides functions to normalize postal addresses from string inputs.</p> | 3.1.4 | 3.3.2 | 3.4.0 | 3.4.3 | - ||
|| <p>[address_standardizer_data_us](https://postgis.net/docs/manual-3.1/postgis_installation.html#make_install_postgis_extensions)</p><p>Contains normalization rules for the US and Canadian postal addresses to be used with the `address_standardizer` extension.</p> | 3.1.4 | 3.3.2 | 3.4.0 | 3.4.3 | - ||
|| <p>[age](https://age.apache.org)</p><p>Adds support for [graph databases](https://en.wikipedia.org/wiki/Graph_database), including:
* Graph DB storage
* Graph DB management
* Operations on graphs</p>

Using this extension requires you to [enable the `age` shared library](#libraries-connection). | - | - | 1.5.0 | 1.5.0 | - ||
|| <p>[amcheck](https://www.postgresql.org/docs/current/amcheck.html)</p><p>Provides functions for validating the logical integrity of a database’s relational schema.</p><p>To use this extension, you need the [`mdb_admin`](../../concepts/roles.md#mdb-admin) role.</p> | 1.3 | 1.3 | 1.3 | 1.4 | - ||
|| <p>[autoinc](https://www.postgresql.org/docs/current/contrib-spi.html#id-1.11.7.47.6)</p><p>Contains the `autoinc()` function, which returns the next value of a sequence stored in an integer-type field. Unlike the built-in sequence types, `autoinc()` does the following:
* Blocks attempts to insert a query-provided value into the field.
* Allows the field value to be changed when updating a record.</p> | 1.0 | 1.0 | 1.0 | 1.0 | - ||
|| <p>[bloom](https://www.postgresql.org/docs/current/static/bloom.html)</p><p>Enables access to database indexes based on [Bloom filters](https://en.wikipedia.org/wiki/Bloom_filter). These probabilistic data structures require significantly less memory than hash tables but can return false-positive matches.</p> | 1.0 | 1.0 | 1.0 | 1.0 | - ||
|| <p>[btree_gin](https://www.postgresql.org/docs/current/static/btree-gin.html)</p><p>Contains examples of GIN (Generalized Inverted Index) operator classes used for inverted index searches.</p> | 1.3 | 1.3 | 1.3 | 1.3 | - ||
|| <p>[btree_gist](https://www.postgresql.org/docs/current/static/btree-gist.html)</p><p>Contains GiST (Generalized Search Tree) operator classes. Unlike a B-tree index, GiST supports the `<>` (<q>not equal to</q>) and `<->` (<q>distance</q>) operators, but does not guarantee result uniqueness.</p> | 1.6 | 1.7 | 1.7 | 1.7 | - ||
|| <p>[citext](https://www.postgresql.org/docs/current/static/citext.html)</p><p>Contains the `citext` data type for case-insensitive string operations.</p> | 1.6 | 1.6 | 1.6 | 1.6 | - ||
|| <p>[clickhouse_fdw](https://github.com/adjust/clickhouse_fdw)</p><p>Adds a [foreign data wrapper](https://wiki.postgresql.org/wiki/Foreign_data_wrappers) for accessing ClickHouse® databases, with support for `SELECT FROM` and `INSERT INTO` operations.</p><p>The extension is not supported in PostgreSQL version 16 and above. Use [Yandex Data Transfer](../../../data-transfer/tutorials/rdbms-to-clickhouse.md) to import data into a ClickHouse® database.</p> | 1.4 | 1.4 | - | - | - ||
|| <p>[cube](https://www.postgresql.org/docs/current/static/cube.html)</p><p>Contains the `cube` data type for representing multidimensional cubes.</p> | 1.5 | 1.5 | 1.5 | 1.5 | - ||
|| <p>[dblink](https://www.postgresql.org/docs/current/static/dblink.html)</p><p>Enables connections to other PostgreSQL databases from within the current session.</p><p>To use this extension, you need the [`mdb_admin`](../../concepts/roles.md#mdb-admin) role.</p> | 1.2 | 1.2 | 1.2 | 1.2 | - ||
|| <p>[dict_int](https://www.postgresql.org/docs/current/static/dict-int.html)</p><p>Contains an example of an additional dictionary template for full-text search. This template helps to control the size of the unique word list, which improves search performance.</p><p>For full-text search, you can also use [Hunspell dictionaries](hunspell.md) alongside this extension.</p> | 1.0 | 1.0 | 1.0 | 1.0 | - ||
|| <p>[dict_xsyn](https://www.postgresql.org/docs/current/static/dict-xsyn.html)</p><p>(Extended Synonym Dictionary) contains an example of an add-on dictionary template for full-text search. It allows searching for a word using any of its synonyms.</p><p>For full-text search, you can also use [Hunspell dictionaries](hunspell.md) alongside this extension.</p> | 1.0 | 1.0 | 1.0 | - | - ||
|| <p>[earthdistance](https://www.postgresql.org/docs/current/static/earthdistance.html)</p><p>Provides a module for calculating distances between geographical points. Distance calculation is performed using two methods:
* Using the `cube` data type, which requires you to enable the `cube` extension.
* Using the built-in `point` data type.</p> | 1.1 | 1.1 | 1.1 | 1.1 | - ||
|| <p>[fuzzystrmatch](https://www.postgresql.org/docs/current/fuzzystrmatch.html)</p><p>Provides functions for calculating string similarity and distance.</p> | 1.1 | 1.1 | 1.2 | 1.2 | - ||
|| <p>[h3](https://github.com/zachasme/h3-pg)</p><p>Adds support for [H3 library](https://h3geo.org/docs/) data structures for geospatial hierarchical partitioning into hexagonal cells to build a grid of such cells over the surface of the Earth.</p> | - | - | 4.1.3 | 4.1.3 | 4.2.3 ||
|| <p>[h3_postgis](https://github.com/libreearth/h3_postgis)</p><p>Adds support for [H3 library](https://h3geo.org/docs/) data structures when using GIS (geographic information system) objects.</p> | - | - | 4.1.3 | 4.1.3 | - ||
|| <p>[hstore](https://www.postgresql.org/docs/current/static/hstore.html)</p><p>Contains the `hstore` data type for storing and efficient use of <q>key:value</q> pairs within a single table field.</p> | 1.8 | 1.8 | 1.8 | 1.8 | - ||
|| <p>[hypopg](https://hypopg.readthedocs.io/en/rel1_stable/)</p><p>Contains virtual indexes. Virtual indexes provide a low-cost way to determine whether PostgreSQL will use real indexes for [problematic queries](../../tutorials/profiling.md#solving-inefficient-queries).</p> | 1.3.1 | 1.3.1 | 1.4.0 | 1.4.1 | 1.4.2 ||
|| <p>[intarray](https://www.postgresql.org/docs/current/static/intarray.html)</p><p>Provides functions and operators for handling integer arrays containing no `NULL` values.</p> | 1.5 | 1.5 | 1.5 | 1.5 | - ||
|| <p>[isn](https://www.postgresql.org/docs/current/static/isn.html)</p><p>Provides data types for international product numbering standards: EAN13, UPC, ISBN, ISMN, and ISSN. Numbers are validated and generated based on a predetermined list of prefixes.</p> | 1.2 | 1.2 | 1.2 | 1.2 | - ||
|| <p>[jsquery](https://github.com/postgrespro/jsquery)</p><p>Adds JsQuery language support for the `jsonb` data type. JsQuery enables efficient search in nested objects and provides additional index-supported comparison operators.</p> | 1.1 | 1.1 | 1.1 | 1.1 | 1.2 ||
|| <p>[lo](https://www.postgresql.org/docs/current/static/lo.html)</p><p>Contains the `lo` data type and the `lo_manage()` function. They are used to manage BLOBs (Binary Large Objects) in compliance with the JDBC and ODBC driver specifications, as the standard PostgreSQL behavior is non-compliant.</p> | 1.1 | 1.1 | 1.1 | 1.1 | - ||
|| <p>[logerrors](https://github.com/munakoiso/logerrors)</p><p>Enables the collection of message statistics from log files.</p> | - | - | - | 2.0 | 2.1.2 ||
|| <p>[ltree](https://www.postgresql.org/docs/current/static/ltree.html)</p><p>Contains the `ltree` data type to represent data labels stored in a tree-structured hierarchy.</p> | 1.2 | 1.2 | 1.2 | 1.3 | - ||
|| <p>[lwaldump](https://github.com/g0djan/lwaldump/tree/REL_13_STABLE)</p><p>Enables you to retrieve the last LSN (log sequence number) written to the replica’s disk.</p> | - | - | - | 1.0 | - ||
|| <p>[moddatetime](https://www.postgresql.org/docs/current/static/contrib-spi.html#id-1.11.7.47.8)</p><p>Provides the `moddatetime()` function for tracking the last modification time of a table row.</p> | 1.0 | 1.0 | 1.0 | 1.0 | - ||
|| <p>[oracle_fdw](https://github.com/laurenz/oracle_fdw)</p><p>Adds a [foreign data wrapper](https://wiki.postgresql.org/wiki/Foreign_data_wrappers) for accessing Oracle databases.</p><p>To use this extension, you need the [`mdb_admin`](../../concepts/roles.md#mdb-admin) role.</p> | 1.2 | 1.2 | 1.2 | 1.2 | 2.8.0 ||
|| <p>[orafce](https://github.com/orafce/orafce)</p><p>Provides functions and operators emulating Oracle database functions and packages.</p> | 3.18 | 3.25 | 4.6 | - | - ||
|| <p>[pg_buffercache](https://www.postgresql.org/docs/current/pgbuffercache.html)</p><p>Provides functions for shared buffer cache monitoring.</p><p>To use this extension, you need the [`mdb_admin`](../../concepts/roles.md#mdb-admin) role.</p> | 1.3 | 1.3 | 1.4 | 1.5 | - ||
|| <p>[pg_cron](https://github.com/citusdata/pg_cron)</p><p>Enables you to schedule database jobs and execute SQL queries directly within them.</p><p>Requires [enabling the `pg_cron` shared library](#libraries-connection).</p><p>To use this extension, you need the [`mdb_admin`](../../concepts/roles.md#mdb-admin) role.</p><p>Loading this extension will cause all hosts to restart. For more information, see [Using pg_cron](pg_cron.md).</p>  | 1.4.1 | 1.4.1 | 1.5 | 1.6 | 1.6.7 ||
|| <p>[pg_hint_plan](http://pghintplan.osdn.jp/)</p><p>Provides functions for managing the PostgreSQL planner.</p><p>Using this extension requires you to [enable the `pg_hint_plan` shared library](#libraries-connection).</p> | 1.4 | 1.5 | 1.6.0 | 1.7.0 | 1.8.0 ||
|| <p>[pg_partman](https://github.com/pgpartman/pg_partman)</p><p>Adds advanced table partitioning options, including time-based and sequence-based partitioning.</p>  | 4.6.0 | 4.7.0 | 4.7.4 | 5.1.0 | 5.3.0 ||
|| <p>[pg_prewarm](https://www.postgresql.org/docs/current/pgprewarm.html)</p><p>Enables loading relation data into the OS cache or the PostgreSQL buffer cache.</p> | 1.2 | 1.2 | 1.2 | 1.2 | - ||
|| <p>[pg_qualstats](https://github.com/powa-team/pg_qualstats)</p><p>Enables collection of predicate statistics from `WHERE` and `JOIN` clauses.</p><p>Using this extension requires you to [enable the `pg_qualstats` shared library](#libraries-connection).</p> | 2.0.3 | 2.0.4 | 2.1.0 | 2.1.1 | 2.1.2 ||
|| <p>[pg_repack](http://reorg.github.io/pg_repack/)</p><p>Provides functions for removing bloat from tables and indexes. Unlike `CLUSTER` and `VACUUM FULL`, it does not require exclusive locking of tables.</p><p>To use this extension, you need the [`mdb_admin`](../../concepts/roles.md#mdb-admin) role.</p> | 1.4.7 | 1.5.2^1^  | 1.5.2^1^  | 1.5.2^1^ | 1.5.2^1^ ||
|| <p>[pg_stat_kcache](https://github.com/powa-team/pg_stat_kcache)</p><p>Enables collection of read and write operation statistics at the file system level.</p><p>Using this utility requires you to enable the `pg_stat_statements` extension.</p><p>To use this extension, you need the [`mdb_admin`](../../concepts/roles.md#mdb-admin) role.</p> | 2.2.0 | 2.2.1 | 2.2.1 | 2.3.0 | - ||
|| <p>[pg_stat_statements](https://www.postgresql.org/docs/current/pgstatstatements.html)</p><p>Enables you to track the scheduling and collect execution statistics of all SQL queries running in a cluster.</p><p>To use this extension, you need the [`mdb_monitor`](../../concepts/roles.md#mdb_monitor) role.</p> | 1.9 | 1.10 | 1.10 | 1.11 | - ||
|| <p>[pg_tm_aux](https://github.com/x4m/pg_tm_aux)</p><p>Enables you to create a logical replication slot in the past.</p> | 1.0 | 1.1 | 1.1.1 | 1.1.1 | 57 ||
|| <p>[pg_trgm](https://www.postgresql.org/docs/current/static/pgtrgm.html)</p><p>Provides tools for fast similarity search across strings using trigram matching.</p> | 1.6 | 1.6 | 1.6 | 1.6 | - ||
|| <p>[pg_uuidv7](https://github.com/fboulnois/pg_uuidv7)</p><p>Adds support for generating and managing [UUIDv7 identifiers](https://www.rfc-editor.org/rfc/rfc9562.html#name-uuid-version-7).</p> | - | 1.5 | 1.5 | 1.5 | 1.5.0 ||
|| <p>[pgaudit](https://www.pgaudit.org/)</p><p>Provides additional logging tools and enhanced auditing capabilities.</p><p>Using this extension requires you to [enable the `pgaudit` shared library](#libraries-connection).</p><p>For more information, see [Using pgaudit](pgaudit.md).</p>  | 1.0.0 | 1.7 | 16.0 | 17.0 | 18.0 ||
|| <p>[pgcrypto](https://www.postgresql.org/docs/current/static/pgcrypto.html)</p><p>Provides cryptographic functions for PostgreSQL. For more information, see [Using pgcrypto](pgcrypto.md).</p> | 1.3 | 1.3 | 1.3 | 1.3 | - ||
|| <p>[pglogical](https://github.com/2ndQuadrant/pglogical)</p><p>Adds support for streaming logical replication based on the publish/subscribe model.</p><p>Using this extension requires you to [enable the `pglogical` shared library](#libraries-connection).</p> | 2.4.1 | 2.4.4 | 2.4.4 | 2.4.5 | 2.4.6 ||
|| <p>[pgrouting](http://pgrouting.org/)</p><p>Provides geospatial routing functions for the [PostGIS](https://www.postgis.net/) database.</p> | 3.3.0 | 3.4.1 | 3.5.0 | 3.6.2 | 3.8.0 ||
|| <p>[pgrowlocks](https://www.postgresql.org/docs/current/static/pgrowlocks.html)</p><p>Contains the `pgrowlocks()` function returning row locking details for a specified table.</p> | 1.2 | 1.2 | 1.2 | 1.2 | - ||
|| <p>[pgstattuple](https://www.postgresql.org/docs/current/pgstattuple.html)</p><p>Provides functions for retrieving tuple-level statistics.</p><p>To use this extension, you need the [`mdb_admin`](../../concepts/roles.md#mdb-admin) or [`mdb_superuser`](../../concepts/roles.md#mdb-superuser) role.</p> | 1.5 | 1.5 | 1.5 | 1.5 | - ||
|| <p>[pgvector](https://github.com/pgvector/pgvector)</p><p>Provides vector similarity search functionality.</p><p>The [vector extension is available](../../qa/errors.md#vector-error) under the name `pgvector`.</p> | 0.2.5 | 0.3.2 | 0.8.0 | 0.8.0 | 0.8.0 ||
|| <p>[plpgsql](https://www.timescale.com/learn/postgresql-extensions-plpgsql)</p><p>Adds support for the PL/pgSQL procedural language.</p> | - | - | - | 1.0 | - ||
|| <p>[plv8](https://plv8.github.io/)</p><p>Adds support for the plv8 JavaScript-based procedural language powered by the V8 engine.</p> | 3.0.0 | - | 3.2.3 | 3.2.3 | 3.2.4 ||
|| <p>[postgis](https://postgis.net/docs/)</p><p>Enables storing and processing GIS (geographic information system) objects in PostgreSQL databases.</p> | 3.1.4 | 3.3.2 | 3.4.0 | 3.4.3 | 3.6.0 ||
|| <p>[postgis_raster](https://postgis.net/docs/RT_reference.html)</p><p>Adds the ability to store and process raster geospatial data from GIS (geographic information system) objects in PostgreSQL databases.</p> | 3.1.4 | 3.3.2 | 3.4.0 | 3.4.3 | - ||
|| <p>[postgis_tiger_geocoder](https://postgis.net/docs/postgis_installation.html#loading_extras_tiger_geocoder)</p><p>Provides functions for geocoding using data in the [TIGER](https://wiki.openstreetmap.org/wiki/TIGER) format.</p> | 3.1.4 | 3.3.2 | 3.4.0 | 3.4.3 | - ||
|| <p>[postgis_topology](https://postgis.net/docs/Topology.html)</p><p>Contains data types and functions of the `postgis` extension for managing topological objects.</p> | 3.1.4 | 3.3.2 | 3.4.0 | 3.4.3 | - ||
|| <p>[postgres_fdw](https://www.postgresql.org/docs/current/static/postgres-fdw.html)</p><p>Adds a [foreign data wrapper](https://wiki.postgresql.org/wiki/Foreign_data_wrappers) for accessing external PostgreSQL servers.</p><p>To use this extension, you need the [`mdb_admin`](../../concepts/roles.md#mdb-admin) role.</p> | 1.1 | 1.1 | 1.1 | 1.1 | - ||
|| <p>[postgresql_anonymizer](https://postgresql-anonymizer.readthedocs.io/en/stable/)</p><p>Enables you to mask or substitute data in a PostgreSQL database.</p><p>Using this extension requires you to [enable the `anon` shared library](#libraries-connection).</p><p>For more information, see [Using postgresql_anonymizer](pg_anon.md).</p><p>To use this extension, you need the [`mdb_admin`](../../concepts/roles.md#mdb-admin) role.</p> | - | 1.3.2 | 1.3.2 | 1.3.2 | 1.3.2 ||
|| <p>[rum](https://github.com/postgrespro/rum)</p><p>Provides an access method for `RUM` index operations.</p> | 1.3 | 1.3 | 1.3 | 1.3 | 1.3.15 ||
|| <p>[seg](https://www.postgresql.org/docs/current/static/seg.html)</p><p>Contains the `seg` data type to represent line segments or floating-point intervals.</p> | 1.4 | 1.4 | 1.4 | 1.4 | - ||
|| <p>[smlar](http://sigaev.ru/git/gitweb.cgi?p=smlar.git;a=blob;hb=HEAD;f=README)</p><p>Provides functions for calculating array similarity.</p> | 1.0 | 1.0 | 1.0 | 1.0 | 18 ||
|| <p>[tablefunc](https://www.postgresql.org/docs/current/static/tablefunc.html)</p><p>Provides functions returning row sets.</p> | 1.0 | 1.0 | 1.0 | 1.0 | - ||
|| <p>[timescaledb](https://github.com/timescale/timescaledb)</p><p>Enables automatic table partitioning by time and partition key, while preserving the standard PostgreSQL data interface. This provides the scalability needed to process time-series in PostgreSQL.</p><p>Using this extension requires you to [enable the `timescaledb` shared library](#libraries-connection).</p><p>The service includes TimescaleDB Apache 2 Edition, which offers reduced functionality compared to TimescaleDB Community Edition. You cannot change the edition. For more information about limitations, see [this TimescaleDB guide](https://docs.timescale.com/about/latest/timescaledb-editions/).</p> | 2.6.1 | 2.9.0 | 2.20.3 | 2.20.3 | 2.23.0 ||
|| <p>[unaccent](https://www.postgresql.org/docs/current/static/unaccent.html)</p><p>Provides a dictionary for diacritic-insensitive text search.</p> | 1.1 | 1.1 | 1.1 | 1.1 | - ||
|| <p>[uuid-ossp](https://www.postgresql.org/docs/current/static/uuid-ossp.html)</p><p>Provides functions for generating UUIDs according to standard algorithms.</p> | 1.1 | 1.1 | 1.1 | 1.1 | - ||
|| <p>[xml2](https://www.postgresql.org/docs/current/static/xml2.html)</p><p>Adds support for Xpath and XSLT.</p> | 1.1 | 1.1 | 1.1 | 1.1 | - ||
|#

^1^: This extension version is installed in new clusters, as well as clusters upgraded to the current version from version 14 and below.

The [pgcompacttable](https://github.com/dataegret/pgcompacttable) utility reorganizes table data to reduce its footprint without impacting cluster performance.

Command syntax:

```bash
./bin/pgcompacttable \
  -h c-<cluster_ID>.rw.mdb.yandexcloud.net \
  -p 6432 \
  -U <username> \
  -W <password> \
  -d <DB_name> \
  -n <schema_name> \
  -t <table_name>
```

Using this utility requires you to enable the `pgstattuple` extension.

To use it, you need the [`mdb_admin`](../../concepts/roles.md#mdb-admin) role.

_ClickHouse® is a registered trademark of [ClickHouse, Inc](https://clickhouse.com)._