Back to Paradedb

Installing Third Party Extensions

docs/deploy/third-party-extensions.mdx

0.23.33.7 KB
Original Source
<Note> [Foreign data wrapper](https://www.postgresql.org/docs/current/ddl-foreign-data.html) extensions can be used to query AWS S3 and other external data stores directly from ParadeDB. </Note>

Postgres has a rich ecosystem of extensions. ParadeDB is designed to work alongside other PostgreSQL extensions for a complete data platform.

Pre-installed Extensions

To keep the ParadeDB Docker image size manageable, the following extensions are pre-installed:

  • pg_search — Full-text and hybrid search with BM25
  • pgvector — Vector similarity search
  • postgis — Geospatial queries and indexing
  • pg_ivm — Incremental materialized views
  • pg_cron — Scheduled jobs and background tasks
<Note> `pg_cron` is configured on the default `postgres` database and cannot be changed. </Note>

Compatible Extensions

ParadeDB has been tested with and supports the following popular extensions:

  • Citus — Distributed PostgreSQL for horizontal scaling
  • pg_partman — Automated partition management
  • pg_stat_statements — Query performance monitoring
  • postgres_fdw — Foreign data wrappers for federated queries
<Note> If you encounter any issues with extension compatibility, please [open an issue](https://github.com/paradedb/paradedb/issues) or reach out to our [community](https://www.paradedb.com/slack). </Note>

Installing Third Party Extensions

The process for installing an extension varies by extension. Generally speaking, it requires:

  • Download the prebuilt binaries inside ParadeDB
  • Install the extension binary and any dependencies inside ParadeDB
  • Add the extension to shared_preload_libraries in postgresql.conf, if required by the extension
  • Run CREATE EXTENSION <extension name>

We recommend installing third party extensions from prebuilt binaries to keep the image size small. As an example, let's install pg_partman, an extension for managing table partition sets.

Install Prebuilt Binaries

First, enter a shell with root permissions in the ParadeDB image.

bash
docker exec -it --user root paradedb bash
<Note> This command assumes that your ParadeDB container name is `paradedb`. </Note>

Next, install the prebuilt binaries. Most popular Postgres extensions can be installed with apt-get install.

bash
apt-get update
apt-get install -y --no-install-recommends postgresql-17-partman
<Note> If the extension is not available with `apt-get install`, you can usually `curl` the prebuilt binary from a GitHub Release page. You will need to first install `curl` via `apt-get install` if you are taking this approach. </Note>

Add to shared_preload_libraries

<Accordion title="Modifying shared_preload_libraries">

If you are installing an extension which requires this step, you can do so via the following command, replacing <extension_name> with your extension's name:

bash
sed -i "/^shared_preload_libraries/s/'\([^']*\)'/'\1,<extension_name>'/" /var/lib/postgresql/data/postgresql.conf

For pg_partman, the command is:

bash
sed -i "/^shared_preload_libraries/s/'\([^']*\)'/'\1,pg_partman_bgw'/" /var/lib/postgresql/data/postgresql.conf
</Accordion>

Postgres must be restarted afterwards. We recommend simply restarting the Docker container.

Create the Extension

Connect to ParadeDB via psql and create the extension.

sql
CREATE EXTENSION pg_partman;

pg_partman is now ready to use!

Note that this is a simple example of installing pg_partman. The full list of settings and optional dependencies can be found in the official installation instructions.