Extensions / Procedural languages
PL/pgSQL procedural language
pgext.cloud · Website · Documentation · License text · Control file
| Package | plpgsql |
|---|---|
| Version | 1.0 |
| PostgreSQL versions | 14 · 15 · 16 · 17 · 18 |
| Repository | PostgreSQL contrib |
| Extension type | Standard |
| Requires CREATE EXTENSION | Yes |
| Requires preload | No |
| Trusted | Yes |
| Relocatable | No |
| Schema | pg_catalog |
| Latest commit | 2026-05-14 |
| Latest release | 2026-05-14 |
| Catalogue updated | 2026-07-29 |
| bedquilt | A json object store |
| biscuit | IAM-LIKE pattern matching with bitmap indexing |
| cat_tools | Tools for interfacing with the PostgreSQL catalog |
| check_orapg | Validate Oracle-to-PostgreSQL or EDB migrations by comparing database objects, privileges, attributes, comments, and row counts. |
| currency | Custom PostgreSQL currency type in 1Byte |
| data_historization | PLPGSQL Script to historize data in partitionned table |
| db2fce | DB2 compatibility functions, types, operators, and SYSIBM.SYSDUMMY1 for PostgreSQL. |
| dbpatch | PostgreSQL database patch change management extension |
| dbstat | Collects exact table row counts and modification timing through SQL objects and a companion libpq process. |
| ddl_historization | Historize the ddl changes inside PostgreSQL database |
| drop_role_helper | Generates SQL to revoke all privileges held by a role in the current database. |
| dsef | DiffStats and ExplainFull: detailed SQL reports for third party help & support |
| event_manager | Loosely coupled PostgreSQL event trigger and queue system with synchronous or asynchronous processing. |
| explanation | EXPLAIN plan parser that returns plan nodes as relational rows organized as a proximity tree. |
| firefly | PostGIS-backed Firefly database schema for tracking 3D points and add/delete operations by task. |
| geekspeak | Database schema extension for the GeekSpeak podcast website. |
| generic_plan | Generate a generic plan for a parameterized SQL statement. |
| gogudb | PostgreSQL extension for distributed hash and range partitioning across foreign servers. |
| grants_manager | Declarative PL/pgSQL toolkit for snapshotting, reporting, and aligning database object grants. |
| hello-world | RLS demo extension with users and products tables |
| hybrid_search | Hybrid pgvector and full-text search helper functions for LangChain and Supabase. |
| index_analyzer | PL/pgSQL functions for evaluating existing and prospective indexes and checking foreign-key indexing. |
| istoria | Table history management with non-linear undo/redo |
| italian_codes | Validation domains for Italian fiscal and VAT codes |
| job_queue | Proof-of-concept database-side asynchronous job queue using dynamic PostgreSQL background workers. |
| json_query | Generate PostgreSQL WHERE clause predicates from JSONB filter objects. |
| json_utils | JSON type helper functions, operators, and a hash operator class for PostgreSQL 9.2+. |
| jsonb_schema | jsonb with separately stored schema |
| jx_io | Extension to export and import json and xml from/to postgres |
| keyhippo | RLS-compatible API keys for PostgreSQL |
| kilobase | Preloaded pgrx background worker for scheduling and refreshing PostgreSQL materialized views. |
| kissfft | Fast-Fourier transformer (fft) |
| lab-orders | pgpm demo for the Postgres Conference 2026 |
| launchql-base32 | RFC6238 TOTP implementation in pure PostgreSQL plpgsql |
| launchql-ext-types | 🛠. basic pg utils |
| launchql-extension-utils | PostgreSQL utilities |
| launchql-extension-verify | PostgreSQL verification utilities |
| launchql-inflection | inflection is a port of the functionality from Ruby on Rails' Active Support Inflection classes into PostgreSQL |
| launchql-jwt-claims | launchql-jwt-claims extension |
| launchql-stamps | 🛠. basic pg utils |
| launchql-totp | 🛠. basic pg utils |
| livewire | power delivery modeling |
| medications | medications extension |
| merge_ips | Functions to merge IP addresses, ignoring gaps |
| meta_triggers | Insert, update and delete triggers for the meta system catalog |
| migration | Database Migrations: Configure and Run |
| monitoring_role | Security-definer monitoring wrappers for a non-privileged role |
| mv_rewrite | Query rewriting extension that transparently rewrites queries to use lower-cost materialized views. |
| mv_stats | Tracks creation, alteration, refresh, and reset statistics for materialized views. |
| myhelper | Collection of PostgreSQL helper functions |
| mypg_sharding | mypg sharding utilities for PostgreSQL |
| mysqlcompat | MySQL compatibility functions, aggregates, operators, and casts for PostgreSQL porting. |
| newsfeeds | PostgreSQL extension for gathering news |
| nfiesta_gisdata | nfi gisdata database |
| nfiesta_sdesign | PostgreSQL extension for manipulating sampling design data. |
| nfiesta_target_data | PostgreSQL extension for manipulation of target data - aggregation of local density contributions at the plot level. |
| nonoms | Normalised nomenclatural system for managing biological names and taxonomic understandings in PostgreSQL. |
| norm | No-ORM helper extension that generates simple CRUD functions. |
| npm | Schema and tables for tracking npm package metadata and daily download counts. |
| ollama | Ollama client for PostgreSQL |
| omnidb_plpgsql_debugger | PostgreSQL extension for enabling PL/pgSQL debugger in OmniDB |
| partman_to_cstore | Move old pg_partman partitions to cstore columnar storage. |
| pase | PostgreSQL ultra-high dimensional approximate nearest neighbor search extension. |
| pathman_sharding | Improved sharding for pg_pathman. |
| patients | patients extension |
| pg-audit-json | Trigger-based PostgreSQL table auditing with JSONB row snapshots and recursive change diffs. |
| pg2podg | PostgreSQL extension for two-player open deterministic games. |
| pg4ml | Machine learning framework for PostgreSQL |
| pgAutomator | Database logic for the pgAutomator job scheduling system. |
| pg_abris | Abris metadata extension that creates a meta schema with metadata tables, views, and helper functions. |
| pg_accumulator | Accumulation registers for balance and turnover tracking in PostgreSQL |
| pg_audit | An extension for creating audit tables |
| pg_audit_tools | PostgreSQL extension for audit tables management |
| pg_biscuit | A fast bitmap-based index for PostgreSQL |
| pg_bleve | PostgreSQL extension for Bleve search integration |
| pg_bm25 | Full text search for PostgreSQL using BM25 |
| pg_cache_tree | Caches recursive parent and child IDs in array columns using trigger and helper functions. |
| pg_calcpi | Computes digits of pi in PostgreSQL with a PL/pgSQL spigot algorithm. |
| pg_catalog_get_defs | Adds PL/pgSQL functions that reconstruct CREATE TYPE definitions from pg_catalog metadata. |
| pg_column_tetris | Enforce optimal column alignment to minimize row padding |
| pg_credereum | Cryptographically verifiable database auditing backed by blockchain-style transaction blocks. |
| pg_datatype_password | SQL-only password data type and operators using pgcrypto Blowfish hashes, with trigger-based encryption before storage. |
| pg_dbo_timestamp | PostgreSQL extension for storing time and author of database structure modification. |
| pg_dbwa | Analyzes local or remote PostgreSQL workloads using historical pg_stat_statements snapshots. |
| pg_dms | Document management system with custom ID, family, and reference types plus action tracking and JSON registry helpers. |
| pg_drop_events | logs transaction ids of drop table, drop column, drop materialized view statements |
| pg_dropbuffers | Drop PostgreSQL shared buffers and the operating-system page cache for testing |
| pg_dropcache | Invalidate PostgreSQL shared_buffers cache for a database or relation |
| pg_eyes | SQL monitoring functions and views for PostgreSQL database activity |
| pg_fairmlq | PL/pgSQL only implementation of a fair multi-level queue for multi-tenant applications |
| pg_fsql | Recursive SQL template engine with JSONB-driven execution |
| pg_gen_uid | Adds a PL/pgSQL function that generates random lowercase alphanumeric identifiers using pgcrypto. |
| pg_git | Implements Git-like repositories, commits, branches, merges and remote operations using PostgreSQL-native data and functions. |
| pg_graphql_server | Runs an HTTP GraphQL endpoint from a PostgreSQL background worker and delegates queries to pg_graphql. |
| pg_gsl | Wraps selected GNU Scientific Library routines, including real FFT transforms and helper functions, for PostgreSQL. |
| pg_idm | Exposes PostgreSQL role and membership management through updatable views and DML-trigger functions. |
| pg_idx_advisor | PostgreSQL index advisor |
| pg_lake_iceberg | Iceberg implementation in Postgres |
| pg_landmetrics | A PostgreSQL/PostGIS extension for calculating landscape metrics. |
| pg_ledger | Provides a double-entry accounting engine with immutable journals, fiscal periods, currencies and posting rules inside PostgreSQL. |
| pg_linegazer | Transparent code coverage for PL/pgSQL |
| pg_llm_helper | Captures PostgreSQL errors in shared memory and exposes history plus an optional pgai-backed LLM troubleshooting function. |
| pg_lock_pool | Wait on a PostgreSQL advisory lock pool |
| pg_message_queue | Listen/Notify-based PostgreSQL message queue extension |
| pg_monitoring | Provides a common SQL interface for collecting PostgreSQL replication, table-load and database-load monitoring statistics. |
| pg_normalize_email | Normalize email addresses in PostgreSQL |
| pg_once | Run‑once / idempotency‑key manager with TTL and response caching |
| pg_os | PostgreSQL extension providing operating system-level functionality directly through SQL, enabling process management, file system operations, IPC, and system monitoring within the database environment. |
| pg_osgr | Ordnance Survey grid reference handling for biological recording |
| pg_pageprep | Prepares heap pages on PostgreSQL or Postgres Pro Standard for migration to the 64-bit-XID page format used by Postgres Pro Enterprise. |
| pg_part | Table partitioning utility for PostgreSQL |
| pg_particulous | Migrate tables between vanilla PostgreSQL and pg_pathman partitioning |
| pg_partman | Extension to manage partitioned tables by time or ID |
| pg_pathman | Partitioning tool for PostgreSQL |
| pg_paxos | Paxos distributed consensus functions and table replication for PostgreSQL |
| pg_popyramids_datamarts | Creates population-pyramid analytics data-mart objects in a hard-coded dms schema from a pre-existing ods schema. |
| pg_profile | PostgreSQL load profile repository and report builder |
| pg_prometheus | Prometheus metric sample type and helpers for PostgreSQL. |
| pg_prttn_tools | Provides PL/pgSQL tools for managing inheritance-based partition tables. |
| pg_reactive | Live SQL query subscriptions with result deltas over LISTEN/NOTIFY |
| pg_reversi | Reversi game implemented as a PostgreSQL extension. |
| pg_sakila_db | PostgreSQL extension for deploying a port of the Sakila example database. |
| pg_semantic_cache | Caches query results and retrieves semantically similar results using pgvector embeddings and configurable eviction policies. |
| pg_sendmail | Sends email from SQL by invoking a sendmail-compatible executable at a fixed server path. |
| pg_sentence_transformer | Runs a Hugging Face sentence-transformer model inside a preload background worker and maintains pgvector embeddings for a configured table. |
| pg_sessions | Tracks per-session SQL execution metrics and optional Linux process resource statistics in shared memory. |
| pg_shardman | Manages PostgreSQL 10 hash-sharded tables across nodes using pg_pathman, postgres_fdw, and logical replication. |
| pg_statviz | Capture PostgreSQL statistics snapshots for time-series analysis and visualization |
| pg_tileless | Tools for packaging twkb in sqlite for tileless |
| pg_tms | functions to tile rasters in TMS format |
| pg_turboquant | Compact TurboQuant approximate-nearest-neighbor index access method for pgvector vector and halfvec data. |
| pg_twkb | TWKB tools etc |
| pg_upless | Detect Useless UPDATE |
| pg_zlog | Logical table replication using Ceph and ZLog |
| pgaut | Auto Update Timestamp for PostgreSQL |
| pgcat | Enhanced logical replication extension for per-table subscriptions, table mapping, and replica-identity tracking. |
| pgeyes | PL/pgSQL administrative helper extension with a pgeyes() environment check and foreign_db metadata table. |
| pgfsm | Finite State Machine enforcement with triggers and util functions. |
| pgh_consistency | Pfafstetter consistency checks for PgHydro |
| pgh_hgm | Hydrogeomorphological analysis extension for PgHydro |
| pgh_output | Output and reporting objects for PgHydro |
| pgh_output_en_au | Australian English output pack for PgHydro |
| pgh_output_pt_br | Brazilian Portuguese output pack for PgHydro |
| pgh_raster | Raster hydrology extension for PgHydro |
| pghydro | Drainage network analysis core for PostgreSQL and PostGIS |
| pgmock | SQL/PLpgSQL extension for mocking function and table dependencies in PostgreSQL unit tests |
| pgnats | NATS messaging integration with publish, subscribe, JetStream, key-value, and object store SQL APIs |
| pgparts | SQL/PLpgSQL helper extension for creating and maintaining table partitions with triggers |
| pgpm-base32 | PostgreSQL modules using the pgpm workflow for safe, testable, reversible SQL changes. |
| pgpm-defaults | PostgreSQL modules using the pgpm workflow for safe, testable, reversible SQL changes. |
| pgpm-faker | PostgreSQL modules using the pgpm workflow for safe, testable, reversible SQL changes. |
| pgpm-inflection | PostgreSQL modules using the pgpm workflow for safe, testable, reversible SQL changes. |
| pgpm-jwt-claims | Agentic DB - Give your agent a brain |
| pgpm-measurements | PostgreSQL modules using the pgpm workflow for safe, testable, reversible SQL changes. |
| pgpm-types | PostgreSQL modules using the pgpm workflow for safe, testable, reversible SQL changes. |
| pgpm-verify | pgpm-verify extension |
| pgrao | PGRAO Postgres DB Catalog Extension |
| pgrollup | create rollup tables for fast aggregate queries |
| pgrouting | pgRouting Extension |
| pgsqlmock | Mocking and faking helpers for PostgreSQL unit tests |
| pgtap | Unit testing for PostgreSQL |
| pgtap_fixture | A PostgreSQL extension that allows more complex fixtures to be created for pgTAP tests. |
| pgtelemetry | Provides monitoring views and functions for PostgreSQL activity, storage, locks, replication, WAL, vacuum, and query statistics. |
| pgvroom | VROOM functionality reached from the database |
| plparrot | Parrot Virtual Machine and Rakudo Perl 6 as PostgreSQL procedural languages |
| plpgsql_check | Additional validation, profiling, and diagnostics for PL/pgSQL functions |
| plpgsql_wrap | Oracle WRAP-equivalent PL/pgSQL language handler storing AES-256-GCM encrypted procedure source. |
| plrust | Compiles Rust functions to native code as a PostgreSQL procedural language, with optional postgrestd-backed trusted sandboxing. |
| postgres_ci | Implements the database backend for the defunct Postgres-CI service, including users, projects, builds, hooks, sessions, and notifications. |
| postpic | A PostgreSQL image type with SQL image-processing and metadata functions, backed by GraphicsMagick, plus import/export utilities. |
| powa | PostgreSQL Workload Analyser-core |
| prescriptions | pgpm demo for the Postgres Conference 2026 |
| qgres | Simple queue system |
| quria | quria: experimental pgrx extension for BM25 full-text and HNSW vector search |
| range_partitioning | Manages trigger-based static range partitions for PostgreSQL-XL, including split and merge operations. |
| recall | Tracks table changes in per-table _log tables for timestamp-based history queries. |
| recursively_delete | Recursively delete rows and their foreign-key dependents |
| rep_fdw | Replicate table changes to another PostgreSQL server through postgres_fdw |
| rls_helpers | PL/pgSQL procedures for simulating Supabase authenticated and anonymous roles while testing row-level security policies. |
| roleman | Parameterized role and privilege management functions for PostgreSQL. |
| rpg | R-inspired PL/pgSQL data manipulation functions. |
| rtiles | Rust/PostGIS extension for serving configurable Mapbox Vector Tile layers for self-hosted interactive maps. |
| scheduling | pgpm demo for the Postgres Conference 2026 |
| session_variables | SQL functions for storing and retrieving session-scoped values through custom PostgreSQL settings. |
| short_ids | PL/pgSQL generator for short random text IDs with collision checks and transaction advisory locks. |
| skitch-extension-defaults | default roles |
| skitch-extension-jobs | An asynchronous job queue schema for ACID compliant job creation |
| skitch-extension-utils | PostgreSQL utilities |
| skitch-extension-verify | PL/pgSQL catalog-verification functions for checking PostgreSQL objects, roles, privileges, policies, and other schema properties. |
| sphinxlink | C extension for issuing SphinxSearch or ManticoreSearch queries from PostgreSQL through the MySQL-compatible protocol. |
| sql_saga | C and PL/pgSQL extension for valid-time temporal tables, temporal foreign keys, history-preserving views, and bulk temporal merge operations. |
| supa_queue | Simple PostgreSQL job queue that dispatches asynchronous HTTP requests with pg_net, schedules processing and retries with pg_cron, and stores endpoint credentials in Supabase Vault. |
| supabase | A friendly playground for building and validating Supabase Row‑Level Security (RLS) |
| supabase_auth_apikey | Supabase Auth API-key helpers for creating, deleting, validating, and authorizing user API keys. |
| sys_syn_dblink | PL/pgSQL synchronization processor that pulls sys_syn queues over named dblink connections, transforms batches, writes local tables, and returns processing status to the source database. |
| tab_tier | PL/pgSQL extension for job-driven retention, tiering, and date-based table partition maintenance. |
| table_log_pl | PL/pgSQL drop-in replacement for the table_log trigger-based DML auditing extension. |
| table_version | PostgreSQL table versioning extension |
| tablelog | Trigger-based audit and change-data-capture extension that records INSERT, UPDATE, and DELETE row images in a central log table and can generate replay SQL. |
| telephone | PostgreSQL data type for normalized telephone numbers with dialing-plan validation. |
| test_factory | Framework for registering, creating, caching, and reusing named PostgreSQL test data sets. |
| time_for_keys | C and PL/pgSQL helpers that enforce temporal foreign keys between valid-time tables with constraint triggers. |
| timestampandtz | C data type that stores a timestamp together with its source time-zone identity, with casts, operators, indexing, and date/time functions. |
| town | Minimal PL/pgSQL helper that creates JSONB-and-array time-series tables with GIN and GiST indexes. |
| types | Reusable domains for attachments, email addresses, hostnames, images, uploads, and URLs. |
| unit | SI units extension |
| units | Unit conversion table and PL/pgSQL conversion function for length units. |
| us-states | pgpm demo for the Postgres Conference 2026 |
| uuidv7-sql | Pure SQL and PL/pgSQL functions for generating, inspecting, and transforming UUID version 7 values. |
| variant | Variant data type that can store values from other PostgreSQL types. |
| vectors | Vector database plugin for PostgreSQL, written in Rust, specifically designed for LLM |
| vrprouting | Vehicle Routing Problems on the Database |
| wasm | A Postgres extension to run WebAssembly binaries. |
| webauthn | Pure-SQL PostgreSQL implementation of WebAuthn credential registration and assertion verification. |
| xl_global_views | Creates global pgxl_ views over Postgres-XL nodes based on pg_ views. |
| zombodb | Elasticsearch-backed full-text search and indexing for PostgreSQL |
| plx | Transpile multiple procedural dialects to PL/pgSQL |
| plisql | PL/iSQL procedural language |
| plpgsql_check | Additional validation, profiling, and diagnostics for PL/pgSQL functions |
| pldbgapi | server-side support for debugging PL/pgSQL functions |
| plpgsql_wrap | Oracle WRAP-equivalent PL/pgSQL language handler storing AES-256-GCM encrypted procedure source. |
| orafce | Functions and operators that emulate a subset of functions and packages from the Oracle RDBMS |
| plprofiler | server-side support for profiling PL/pgSQL functions |
| plsh | PL/sh procedural language |
| pljava | PL/Java procedural language |
| pglinter | PostgreSQL Linting and Analysis Extension |