You can submit and vote for the extensions you want us to support next at ps-extensions.io.
Types of Extensions
PostgreSQL extensions generally fall into two main categories:Native Extensions
These are extensions that ship with PostgreSQL itself and are maintained by the PostgreSQL core team. Examples include:- Data type extensions:
citext
,hstore
,uuid-ossp
for specialized data types - Index extensions:
btree_gin
,btree_gist
for advanced indexing capabilities - Text search extensions:
unaccent
,pg_trgm
for full-text search enhancements - Utility extensions:
pgcrypto
for cryptographic functions,tablefunc
for table manipulation
Community Extensions
These are developed and maintained by the community or third-party organizations. Popular examples include:- Vector search:
pgvector
for AI/ML vector operations - Query optimization:
pg_hint_plan
for query plan hints - Partitioning:
pg_partman
for automated table partitioning
Extensions that modify shared memory settings, background worker processes, or core database functionality typically require a restart. You can only enable these extensions through the Dashboard.Most simple extensions like data types or functions can be installed without a restart.
Managing Extensions
Some extensions may require that you use a role with superuser privileges to enable them on your PlanetScale for Postgres database. See supported extensions for more information.
Installing an Extension
To install an extension in your database, use theCREATE EXTENSION
command:
Removing an Extension
To remove an extension from your database, use theDROP EXTENSION
command:
Updating an Extension
To update an extension to a newer version, use theALTER EXTENSION
command:
Viewing Installed Extensions
To see all extensions currently installed in your database, use this query:Installing Extensions in Specific Schemas
By default, extensions are installed in thepublic
schema. To install an extension in a specific schema:
Configuring Extensions in the Dashboard

Production
clusters, these reboots are applied in a rolling cadence through the cluster’s instances.
For detailed configuration instructions and parameter descriptions for each extension, please refer to their individual documentation pages via the 📝 links in the “Additional Notes” column.
Troubleshooting
Common Extension Issues
Extension not found
Permission denied
Extension already exists
CREATE EXTENSION IF NOT EXISTS extension_name;
to avoid this error, or check installed extensions first.
Dependency conflicts
Supported Extensions
Table Column Legend
- Extension: Extension name with link to official documentation
- Description: Brief description of extension functionality
- Version: Version number available in PlanetScale (or TBD if placeholder)
- Superuser required: ⭐ = Extension requires superuser privileges to use its functionality
- Restart required: ✅ = Must be enabled through PlanetScale dashboard first because the extension requires shared libraries and a restart (blank = install directly with
CREATE EXTENSION
) - Additional Notes: 📝 = Link to detailed configuration documentation
Supported Native PostgreSQL Extensions
Extension | Description | Version | Superuser required | Restart required | Additional Notes |
---|---|---|---|---|---|
autoinc | Functions for autoincrementing fields | 1.0 | ⭐ | ||
bloom | Bloom filter index access method | 1.0 | ⭐ | ||
btree_gin | Provides GIN operator classes that implement B-tree equivalent behavior for various data types | 1.3 | |||
btree_gist | Provides GiST index operator classes that implement B-tree equivalent behavior | 1.7 | |||
citext | Provides case-insensitive character string type | 1.6 | |||
cube | Data type for representing multidimensional cubes | 1.5 | |||
dict_int | Text search dictionary template for integers | 1.0 | |||
dict_xsyn | Text search dictionary for extended synonym processing | 1.0 | ⭐ | ||
earthdistance | Calculate great circle distances on the surface of the Earth | 1.2 | ⭐ | ||
fuzzystrmatch | Functions for determining similarities and distance between strings | 1.2 | |||
hstore | Data type for storing sets of key/value pairs within a single PostgreSQL value | 1.8 | |||
insert_username | Functions for tracking who changed a table | 1.0 | ⭐ | ||
intagg | Integer aggregator and enumerator (deprecated) | 1.1 | ⭐ | ||
intarray | Functions and operators for manipulating null-free arrays of integers | 1.5 | |||
isn | Data types for international product numbering standards | 1.2 | |||
lo | Support for managing Large Objects (also called BLOBs) | 1.1 | |||
ltree | Data type for representing labels of data stored in hierarchical tree-like structures | 1.3 | |||
moddatetime | Functions for tracking last modification time | 1.0 | ⭐ | ||
pg_stat_statements | Provides a means for tracking planning and execution statistics of all SQL statements | 1.11 | ⭐ | ✅ | 📝 |
pg_trgm | Functions and operators for determining the similarity of alphanumeric text based on trigram matching | 1.6 | |||
pgcrypto | Cryptographic functions for PostgreSQL | 1.3 | |||
pgrowlocks | Show row-level locking information | 1.2 | ⭐ | ||
pgstattuple | Obtain tuple-level statistics | 1.5 | ⭐ | ||
plpgsql | Loadable procedural language for the PostgreSQL database system | 1.0 | |||
postgres_fdw | Foreign data wrapper for remote PostgreSQL servers | 1.1 | ⭐ | ||
seg | Data type for representing line segments or floating-point intervals | 1.4 | |||
tablefunc | Functions that return tables (multiple rows) | 1.0 | |||
tcn | Provides a trigger function that notifies listeners of changes to any table | 1.0 | |||
tsm_system_rows | Table sampling method SYSTEM_ROWS which can be used in TABLESAMPLE clause | 1.0 | |||
tsm_system_time | Table sampling method SYSTEM_TIME which can be used in TABLESAMPLE clause | 1.0 | |||
unaccent | Text search dictionary for removing accents (diacritic signs) from lexemes | 1.1 | |||
uuid-ossp | Functions to generate universally unique identifiers (UUIDs) | 1.1 |
Supported Community Extensions
Extension | Description | Version | Superuser required | Restart required | Additional Notes |
---|---|---|---|---|---|
address_standardizer | Used to parse an address into constituent elements. Generally used to support geocoding address normalization step. (Part of PostGIS) | 3.6.0 | ⭐ | ||
address_standardizer_data_us | Address Standardizer US dataset example. (Part of PostGIS) | 3.6.0 | ⭐ | ||
pg_cron | Simple cron-based job scheduler for PostgreSQL that allows you to run SQL commands on a schedule | 1.6 | ⭐ | ✅ | 📝 |
pg_hint_plan | Provides query plan hints to control the PostgreSQL planner | 1.7.0 | ⭐ | ✅ | 📝 |
pg_partman | Extension to create and manage both time-based and serial-based table partition sets | 5.2.4 | |||
pg_partman_bgw | Background worker to automatically run partition maintenance for pg_partman | 5.2.4 | ✅ | 📝 | |
pg_squeeze | Automatically cleans up unused space in tables (table bloat) | 1.8 | ⭐ | ✅ | 📝 |
pgvector | Open-source vector similarity search for PostgreSQL, designed for AI/ML applications | 0.8.0 | ⭐ | ||
postgis | PostGIS extends the capabilities of the PostgreSQL relational database by adding support for storing, indexing, and querying geospatial data | 3.6.0 | ⭐ | ||
postgis_sfcgal | SFCGAL is a C++ wrapper library around CGAL that provides advanced 2D and 3D spatial functions | 3.6.0 | ⭐ | ||
postgis_tiger_geocoder | A plpgsql based geocoder written to work with the TIGER (Topologically Integrated Geographic Encoding and Referencing system) / Line and Master Address database export released by the US Census Bureau | 3.6.0 | |||
postgis_topology | The PostGIS Topology types and functions are used to manage topological objects such as faces, edges and nodes | 3.6.0 | ⭐ |
PlanetScale Extensions
These extensions are installed by PlanetScale and cannot be disabled.Extension | Description | Version | Additional Notes |
---|---|---|---|
pgextwlist | PostgreSQL Extension Allowlist | N/A | |
pginsights | PlanetScale Insights plugin | N/A | 📝 |
pg_pscale_utils | Utility extension to handle superuser actions in PlanetScale Postgres | N/A |