Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
---
meta:
title: Supported PostgreSQL extensions
description: This page describes how to use PostgreSQL extensions with Serverless SQL Databases
content:
h1: Supported PostgreSQL extensions
paragraph: This page describes how to use PostgreSQL extensions with Serverless SQL Databases
tags: sql-databases serverless database extensions postgresql pgvector postgis timescaledb
dates:
validation: 2024-10-08
posted: 2024-10-08
categories:
- serverless
---

Serverless SQL Database supports most popular [PostgreSQL extensions](#install-an-extension). Due to autoscaling and built-in connection pooling, some [advanced features of extensions might be limited or require workarounds](#supported-extensions).

<Macro id="requirements" />

- A Scaleway account logged into the [console](https://console.scaleway.com)
- [Owner](/identity-and-access-management/iam/concepts/#owner) status or [IAM permissions](/identity-and-access-management/iam/concepts/#permission) allowing you to perform actions in the intended Organization
- [Created a Serverless SQL Database](/serverless/sql-databases/how-to/create-a-database/)

## Install an extension

1. [Connect to your Serverless SQL Database](https://www.scaleway.com/en/docs/serverless/sql-databases/quickstart/#how-to-connect-to-a-database) with a PostgreSQL client. For instance with psql:
```bash
psql "postgres://[user-or-application-id]:[api-secret-key]@[database-hostname]:5432/[database-name]?sslmode=require"
```

2. Create extension using SQL:
```sql
CREATE EXTENSION extension_name;
```

3. Use extension with its supported features. Assuming you installed `pgvector` with `CREATE EXTENSION vector`, you can for instance create a vector and query it:
```sql
CREATE TABLE songs (id bigserial PRIMARY KEY, embedding vector(3));
INSERT INTO songs (embedding) VALUES ('[1,1,1]'), ('[2,2,2]'), ('[0,1,2]');
SELECT * FROM songs ORDER BY embedding <-> '[3,3,3]' LIMIT 5;
```
This example will find the nearest vectors (using L2 distance) from '[3,3,3]':
```bash
id | embedding
----+-----------
2 | [2,2,2]
1 | [1,1,1]
3 | [0,1,2]
```

## Supported extensions

The following PostgreSQL extensions are available with Serverless SQL Databases:


| Extension | Description and known limitations |
|------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------|
| address_standardizer | Parses addresses into their constituent elements, typically used in the geocoding normalization process. |
| address_standardizer_data_us | Provides a dataset example for the US Address Standardizer extension. |
| bloom | Implements a Bloom filter-based index, ideal for situations where space efficiency is crucial. |
| btree_gin | Adds support for indexing common data types using the GIN (Generalized Inverted Index) method. |
| btree_gist | Adds support for indexing common data types using the GiST (Generalized Search Tree) method. |
| citext | Provides a case-insensitive character string data type for easier text comparison. |
| cube | Defines a data type for representing multidimensional cubes, useful in mathematical and geometrical computations. |
| dict_int | Offers a text search dictionary template optimized for integer values. |
| dict_xsyn | Provides a text search dictionary template for advanced synonym processing, improving search accuracy. Features requiring direct access to the filesystem will not be supported (eg. custom synonym lists) |
| earthdistance | Calculates great-circle distances between points on Earth, useful in geographical applications. |
| fuzzystrmatch | Determines similarities and differences between strings, helpful for tasks like data deduplication. |
| hstore | Stores sets of key-value pairs in a single value, enabling a flexible schema for semi-structured data. |
| intagg | Aggregates and enumerates integer values, though it is considered obsolete since PG 8.4 and official support has been integrated in PostgreSQL directly |
| intarray | Provides functions, operators, and indexing support for one-dimensional arrays of integers, enhancing array processing. |
| isn | Supports data types for international product numbering standards, such as ISBN and EAN. |
| ltree | Defines a data type for representing tree-like structures in a hierarchical manner, facilitating complex data modeling. |
| pg_cron | Schedules jobs within PostgreSQL using a cron-like syntax, automating routine database tasks. `pg_cron` requires the database to be in active state permanently and thus that you setup a minimum vCPU above 1 to properly work. |
| pg_prewarm | Preloads relation data into memory to reduce initial disk I/O latency and improve performance. |
| pg_stat_statements | Tracks planning and execution statistics for all SQL statements, aiding in performance tuning. |
| pg_trgm | Measures text similarity and provides index searching based on trigrams, enhancing text search capabilities. |
| pgcrypto | Provides cryptographic functions for data encryption, decryption, and hashing, essential for secure data storage. |
| pgrouting | Extends PostgreSQL and PostGIS with geospatial routing capabilities, enabling the calculation of shortest paths and other routing operations. |
| pgrowlocks | Displays information about row-level locking, helping in the diagnosis of concurrency issues. |
| pgvector | Supports vector similarity search, often used for storing and searching embeddings in machine learning applications. [Query options](https://github.com/pgvector/pgvector?tab=readme-ov-file#query-options) using `SET` command require [to be used in a single transaction](https://www.scaleway.com/en/docs/serverless/sql-databases/reference-content/known-differences/#unsupported-configuration-commands) (ie. between `BEGIN; (...) COMMIT;`) |
| plpgsql | Enables the use of PL/pgSQL, a procedural language for PostgreSQL that allows complex control structures and query manipulation. |
| postgis | Adds support for geographic objects, allowing location queries to be run in SQL, and is the foundation of geographic information system (GIS) functionality in PostgreSQL. |
| postgis_raster | Implements raster data support in PostGIS, enabling analysis and storage of raster images alongside vector data. |
| postgis_sfcgal | Adds advanced 3D geometry functions to PostGIS, leveraging the SFCGAL library for complex spatial operations. |
| postgis_tiger_geocoder | Provides geocoding and reverse geocoding capabilities based on the US Census TIGER data within PostGIS. |
| postgis_topology | Supports topological data models in PostGIS, allowing for advanced spatial relationships and analyses. |
| tablefunc | Offers functions for manipulating entire tables, including crosstab operations for pivot tables. |
| timescaledb | Enables efficient handling and analysis of time-series data, extending PostgreSQL with specialized time-series functions. |
| tsm_system_rows | Implements a TABLESAMPLE method that limits the number of rows returned, useful for sampling large datasets. |
| tsm_system_time | Implements a TABLESAMPLE method that limits rows based on a time duration, useful for time-based sampling. |
| unaccent | Provides a text search dictionary that removes accents from characters, improving text search accuracy. |
| uuid-ossp | Generates universally unique identifiers (UUIDs), essential for ensuring data uniqueness across distributed systems. |
Loading