Source AWS extension compatibility matrix:
Notes:
- "Extension" is the PostgreSQL extension identifier used in
CREATE EXTENSION.- "Canonical Link" points to the upstream project, PostgreSQL docs, or authoritative source.
- Some extensions are AWS-specific and therefore point to AWS documentation.
- Drawbacks are intentionally practical and production-focused.
| Extension | Name | Description | Good For | Limitations / Drawbacks | Canonical Link |
|---|---|---|---|---|---|
| aws_commons | AWS Common Utilities | Shared helper functions/types for AWS-integrated extensions | Required dependency for aws_s3/aws_lambda | AWS-only, limited outside RDS ecosystem | https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Concepts.General.FeatureSupport.Extensions.html |
| aws_lambda | AWS Lambda Integration | Invoke AWS Lambda functions directly from PostgreSQL | Event-driven workflows, async jobs, integrations | Network latency, operational coupling, IAM complexity | https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL-Lambda.html |
| aws_s3 | AWS S3 Integration | Import/export data between PostgreSQL and S3 | Bulk exports/imports, analytics pipelines | Tightly coupled to AWS IAM/S3 permissions | https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PostgreSQL.S3Import.html |
| bloom | Bloom Index Access Method | Space-efficient probabilistic index | Multi-column filtering at lower storage cost | False positives possible | https://www.postgresql.org/docs/current/bloom.html |
| btree_gin | B-Tree GIN Operator Classes | B-tree behavior for GIN indexes | Mixed indexing strategies | Larger indexes than standard B-tree | https://www.postgresql.org/docs/current/btree-gin.html |
| btree_gist | B-Tree GiST Operator Classes | B-tree equivalent support for GiST | Exclusion constraints, mixed GiST usage | Slower than standard B-tree in many cases | https://www.postgresql.org/docs/current/btree-gist.html |
| chkpass | Encrypted Password Type | Data type for encrypted passwords | Legacy password storage | Obsolete for modern auth systems | https://www.postgresql.org/docs/current/chkpass.html |
| citext | Case-Insensitive Text | Text type with case-insensitive comparisons | Emails, usernames, normalized search | Locale/collation edge cases | https://www.postgresql.org/docs/current/citext.html |
| cube | Cube Data Type | Multi-dimensional cube data type | Vector-like geometric calculations | Not a substitute for pgvector | https://www.postgresql.org/docs/current/cube.html |
| dblink | Database Link | Query remote PostgreSQL databases | Lightweight federation | Hard to secure/manage at scale | https://www.postgresql.org/docs/current/dblink.html |
| dict_int | Integer Dictionary | Full-text search dictionary for integers | Numeric token indexing | Niche usage | https://www.postgresql.org/docs/current/dict-int.html |
| dict_xsyn | Extended Synonym Dictionary | Synonym support for text search | Search normalization | Requires careful synonym maintenance | https://www.postgresql.org/docs/current/dict-xsyn.html |
| earthdistance | Earth Distance | Geographic distance calculations | Radius/location queries | Simpler than PostGIS, less accurate/flexible | https://www.postgresql.org/docs/current/earthdistance.html |
| flow_control | Flow Control Functions | Utility flow-control helpers | Procedural workflows | Limited practical usage | https://www.postgresql.org/docs/current/contrib-spi.html |
| hll | HyperLogLog | Probabilistic cardinality estimation | Fast approximate COUNT(DISTINCT) | Approximate only | https://github.com/citusdata/postgresql-hll |
| hstore | Key-Value Store | Key/value data type | Semi-structured metadata | Inferior to JSONB for most new systems | https://www.postgresql.org/docs/current/hstore.html |
| hypopg | Hypothetical Indexes | Simulate indexes without creating them | Query optimization/testing | Planner estimates only, not actual execution | https://github.com/HypoPG/hypopg |
| insert_username | Insert Username Trigger | Trigger inserts current username | Auditing | Very limited functionality | https://www.postgresql.org/docs/current/contrib-spi.html |
| intagg | Integer Aggregator | Integer aggregation helpers | Specialized aggregation workloads | Rarely needed in modern PG | https://www.postgresql.org/docs/current/intagg.html |
| intarray | Integer Array Utilities | Functions/operators for integer arrays | Analytics, tagging systems | Limited to integer arrays | https://www.postgresql.org/docs/current/intarray.html |
| ip4r | IPv4/IPv6 Range Types | IP range indexing/operators | Networking/security systems | More niche than inet/cidr built-ins | https://github.com/RhodiumToad/ip4r |
| isn | International Standard Numbers | ISBN/ISSN/UPC validation | Publishing/retail systems | Very domain specific | https://www.postgresql.org/docs/current/isn.html |
| lo | Large Object Support | Manage PostgreSQL large objects | Large binary storage | Operational overhead, vacuum complexity | https://www.postgresql.org/docs/current/lo.html |
| log_fdw | Log Foreign Data Wrapper | Query PostgreSQL log files | Operational troubleshooting | Read-only and operationally niche | https://www.postgresql.org/docs/current/logfdw.html |
| ltree | Label Trees | Hierarchical tree structures | Taxonomies, category trees | Specialized query syntax | https://www.postgresql.org/docs/current/ltree.html |
| moddatetime | Modification Timestamp Trigger | Auto-update modification timestamps | Audit columns | Very limited scope | https://www.postgresql.org/docs/current/contrib-spi.html |
| mysql_fdw | MySQL Foreign Data Wrapper | Query MySQL from PostgreSQL | Migrations, federated queries | Cross-engine performance issues | https://github.com/EnterpriseDB/mysql_fdw |
| pg_buffercache | Buffer Cache Inspection | Inspect shared buffer cache | Performance tuning | Read-only diagnostics | https://www.postgresql.org/docs/current/pgbuffercache.html |
| pg_cron | PostgreSQL Cron Scheduler | Run scheduled jobs inside PostgreSQL | Maintenance jobs, scheduled tasks | Jobs tied to DB lifecycle | https://github.com/citusdata/pg_cron |
| pg_freespacemap | Free Space Inspection | Inspect table free space map | Storage diagnostics | Operational diagnostics only | https://www.postgresql.org/docs/current/pgfreespacemap.html |
| pg_hint_plan | Query Planner Hints | Override planner decisions with hints | Performance tuning edge cases | Can hide root-cause query issues | https://github.com/ossc-db/pg_hint_plan |
| pg_partman | Partition Management | Automated partition management | Time-series/event data | Adds operational complexity | https://github.com/pgpartman/pg_partman |
| pg_prewarm | Prewarm Shared Buffers | Load relation data into cache | Reduce cold-start latency | Consumes memory aggressively | https://www.postgresql.org/docs/current/pgprewarm.html |
| pg_similarity | Similarity Functions | Text similarity operations | Search/fuzzy matching | Less common than pg_trgm | https://github.com/eulerto/pg_similarity |
| pg_stat_statements | Query Statistics Collector | Tracks execution statistics | Query optimization, observability | Adds small execution overhead | https://www.postgresql.org/docs/current/pgstatstatements.html |
| pg_transport | Data Transport Utilities | Transport/streaming helpers | Migration tooling | AWS/RDS niche usage | https://github.com/aws/pg_transport |
| pg_trgm | Trigram Matching | Similarity and fuzzy text search | Search/autocomplete | Indexes can become large | https://www.postgresql.org/docs/current/pgtrgm.html |
| pg_visibility | Visibility Map Inspection | Inspect tuple/page visibility | Vacuum troubleshooting | Diagnostic-only extension | https://www.postgresql.org/docs/current/pgvisibility.html |
| pgAudit | PostgreSQL Auditing | Detailed audit logging | Compliance/security | High logging overhead possible | https://github.com/pgaudit/pgaudit |
| pglogical | Logical Replication System | Advanced logical replication | Multi-region replication, migrations | Operationally complex | https://github.com/2ndQuadrant/pglogical |
| pgrowlocks | Row Lock Inspection | Inspect row-level locks | Concurrency debugging | Diagnostic only | https://www.postgresql.org/docs/current/pgrowlocks.html |
| pgstattuple | Tuple Statistics | Table/index bloat statistics | Storage optimization | Expensive on large relations | https://www.postgresql.org/docs/current/pgstattuple.html |
| pgvector | Vector Similarity Search | Embeddings/vector search support | AI semantic search/RAG | Memory intensive at scale | https://github.com/pgvector/pgvector |
| plcoffee | CoffeeScript Language | CoffeeScript procedural language | Experimental stored procedures | Very niche, mostly obsolete | https://github.com/plv8/plcoffee |
| plls | LiveScript Language | LiveScript procedural language | Experimental scripting | Rarely used in production | https://github.com/plv8/plls |
| plperl | Perl Procedural Language | Write functions in Perl | Legacy Perl ecosystems | Security/maintainability concerns | https://www.postgresql.org/docs/current/plperl.html |
| plpgsql | PostgreSQL Procedural Language | Default procedural language | Stored procedures/triggers | Can become difficult to maintain | https://www.postgresql.org/docs/current/plpgsql.html |
| plprofiler | PL/pgSQL Profiler | Profile PL/pgSQL execution | Procedure optimization | Profiling overhead | https://github.com/bigsql/plprofiler |
| pltcl | Tcl Procedural Language | Write functions in Tcl | Legacy Tcl systems | Rarely used today | https://www.postgresql.org/docs/current/pltcl.html |
| postgis | Spatial GIS Extension | GIS/spatial capabilities | Maps, geospatial systems | Complex and resource intensive | https://postgis.net/ |
| postgis_raster | Raster GIS Support | Raster geospatial processing | Satellite imagery/rasters | Heavy storage/CPU usage | https://postgis.net/docs/RT_reference.html |
| postgis_tiger_geocoder | TIGER Geocoder | US address geocoding | Address normalization/geocoding | US-centric datasets | https://postgis.net/docs/Extras.html |
| postgis_topology | GIS Topology | Spatial topology modeling | Advanced GIS systems | Significant complexity | https://postgis.net/docs/Topology.html |
| postgres_fdw | PostgreSQL FDW | Query remote PostgreSQL servers | Federated Postgres systems | Network latency/performance issues | https://www.postgresql.org/docs/current/postgres-fdw.html |
| prefix | Prefix Search Operators | Efficient prefix text searching | Search/autocomplete | More niche than pg_trgm | https://github.com/dimitri/prefix |
| seg | Segment Data Type | Numeric interval type | Scientific/statistical workloads | Rarely used | https://www.postgresql.org/docs/current/seg.html |
| sslinfo | SSL Connection Info | Inspect SSL connection properties | Security diagnostics | Diagnostic only | https://www.postgresql.org/docs/current/sslinfo.html |
| tablefunc | Table Functions | Crosstab/pivot utilities | Reporting/analytics | Less flexible than BI tooling | https://www.postgresql.org/docs/current/tablefunc.html |
| tcn | Triggered Change Notifications | Row change notifications | Event-driven systems | Limited adoption | https://www.postgresql.org/docs/current/tcn.html |
| test_decoding | Logical Decoding Plugin | Logical WAL decoding test output | CDC experimentation | Not ideal for production CDC | https://www.postgresql.org/docs/current/test-decoding.html |
| tsearch2 | Legacy Text Search | Deprecated full-text search extension | Legacy systems | Deprecated, avoid new usage | https://www.postgresql.org/docs/current/textsearch.html |
| tsm_system_rows | Table Sampling by Rows | Random row sampling | Analytics/testing | Approximate sampling only | https://www.postgresql.org/docs/current/tsm-system-rows.html |
| tsm_system_time | Table Sampling by Time | Time-limited sampling | Fast approximate scans | Approximate/non-deterministic | https://www.postgresql.org/docs/current/tsm-system-time.html |
| unaccent | Accent Removal | Remove accents from text | Search normalization | Locale-specific edge cases | https://www.postgresql.org/docs/current/unaccent.html |
| uuid-ossp | UUID Generation | UUID generation utilities | Distributed IDs | Often replaced by gen_random_uuid() | https://www.postgresql.org/docs/current/uuid-ossp.html |
| wal2json | WAL to JSON Decoder | Logical replication JSON output | CDC pipelines | High WAL throughput can be expensive | https://github.com/eulerto/wal2json |
| Use Case | Recommended Extensions |
|---|---|
| AI / RAG / Semantic Search | pgvector, pg_trgm, unaccent |
| Operational Observability | pg_stat_statements, pgAudit, pg_visibility, pg_buffercache |
| Multi-Tenant SaaS | pg_partman, pg_trgm, citext |
| CDC / Event Streaming | wal2json, pglogical, test_decoding |
| Search / Fuzzy Matching | pg_trgm, pg_similarity, prefix, unaccent |
| GIS / Mapping | postgis, postgis_topology, postgis_raster |
| Federated Databases | postgres_fdw, mysql_fdw, dblink |
| AWS Native Integrations | aws_s3, aws_lambda, aws_commons |
| Extension | Why |
|---|---|
| chkpass | Legacy password storage patterns |
| tsearch2 | Deprecated |
| plcoffee | Extremely niche/obsolete |
| plls | Extremely niche/obsolete |
| pltcl | Rarely used in modern environments |
| hstore | JSONB usually superior |
| dblink | postgres_fdw generally preferred |
- Prefer
pg_stat_statementson virtually every production deployment. - Prefer
pg_trgmfor fuzzy search before introducing Elasticsearch/OpenSearch. - Use
pgvectorcautiously at scale because ANN/vector indexing can significantly impact memory usage. - Use
pg_partmanonly when native partitioning management becomes operationally painful. - Avoid excessive procedural language extensions unless there is a very strong operational reason.
- Be cautious with auditing extensions such as
pgAuditbecause log volume can explode rapidly under high throughput. - Prefer
postgres_fdwoverdblinkfor most federated Postgres access patterns.
Reference documentation sourced from AWS RDS PostgreSQL extension compatibility matrix and upstream PostgreSQL extension documentation. (docs.aws.amazon.com)