Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save mwillbanks/0ff4ca7a13a31e4cee84152ebf8f2024 to your computer and use it in GitHub Desktop.

Select an option

Save mwillbanks/0ff4ca7a13a31e4cee84152ebf8f2024 to your computer and use it in GitHub Desktop.
Amazon RDS PostgreSQL Extensions Reference

Amazon RDS PostgreSQL Extensions Reference

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

Strongly Recommended Extensions by Use Case

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

Extensions Worth Avoiding for Most Modern Systems

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

Production Guidance

  • Prefer pg_stat_statements on virtually every production deployment.
  • Prefer pg_trgm for fuzzy search before introducing Elasticsearch/OpenSearch.
  • Use pgvector cautiously at scale because ANN/vector indexing can significantly impact memory usage.
  • Use pg_partman only 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 pgAudit because log volume can explode rapidly under high throughput.
  • Prefer postgres_fdw over dblink for most federated Postgres access patterns.

Reference documentation sourced from AWS RDS PostgreSQL extension compatibility matrix and upstream PostgreSQL extension documentation. (docs.aws.amazon.com)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment