wrappers

Foreign data wrappers developed by Supabase

Overview

PackageVersionCategoryLicenseLanguage
wrappers0.6.0FDWApache-2.0Rust
IDExtensionBinLibLoadCreateTrustRelocSchema
8500wrappersNoYesNoYesNoYes-
Relatedmulticorn odbc_fdw jdbc_fdw pgspider_ext

manually upgraded PGRX from 0.16.1 to 0.17.0 by Vonng

Version

TypeRepoVersionPG VerPackageDeps
EXTPIGSTY0.6.01817161514wrappers-
RPMPIGSTY0.6.01817161514wrappers_$v-
DEBPIGSTY0.6.01817161514postgresql-$v-wrappers-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
d12.aarch64
d13.x86_64
d13.aarch64
PIGSTY 0.6.0
PIGSTY 0.6.0
PIGSTY 0.6.0
PIGSTY 0.6.0
PIGSTY 0.6.0
u22.x86_64
u22.aarch64
PIGSTY 0.6.0
PIGSTY 0.6.0
PIGSTY 0.6.0
PIGSTY 0.6.0
PIGSTY 0.6.0
u24.x86_64
u24.aarch64
PIGSTY 0.6.0
PIGSTY 0.6.0
PIGSTY 0.6.0
PIGSTY 0.6.0
PIGSTY 0.6.0

Build

You can build the RPM / DEB packages for wrappers using pig build:

pig build pkg wrappers         # build RPM / DEB packages

Install

You can install wrappers directly. First, make sure the PGDG and PIGSTY repositories are added and enabled:

pig repo add pgsql -u          # Add repo and update cache

Install the extension using pig or apt/yum/dnf:

pig install wrappers;          # Install for current active PG version
pig ext install -y wrappers -v 18  # PG 18
pig ext install -y wrappers -v 17  # PG 17
pig ext install -y wrappers -v 16  # PG 16
pig ext install -y wrappers -v 15  # PG 15
pig ext install -y wrappers -v 14  # PG 14
dnf install -y wrappers_18       # PG 18
dnf install -y wrappers_17       # PG 17
dnf install -y wrappers_16       # PG 16
dnf install -y wrappers_15       # PG 15
dnf install -y wrappers_14       # PG 14
apt install -y postgresql-18-wrappers   # PG 18
apt install -y postgresql-17-wrappers   # PG 17
apt install -y postgresql-16-wrappers   # PG 16
apt install -y postgresql-15-wrappers   # PG 15
apt install -y postgresql-14-wrappers   # PG 14

Create Extension:

CREATE EXTENSION wrappers;

Usage

Sources: official README, official docs, v0.6.0 release

wrappers is both a Rust framework for writing PostgreSQL foreign data wrappers and a packaged collection of Supabase-maintained FDWs. A single extension installs many wrapper implementations, then each foreign server chooses the specific wrapper type it needs.

CREATE EXTENSION wrappers;

Typical Workflow

Create a server for one wrapper, then expose remote data through foreign tables:

CREATE SERVER stripe_server
  FOREIGN DATA WRAPPER stripe_wrapper
  OPTIONS (
    api_key_id 'stripe_api_key',
    api_url 'https://api.stripe.com/v1/'
  );

CREATE FOREIGN TABLE stripe_customers (
  id text,
  email text,
  name text,
  description text,
  created timestamp,
  attrs jsonb
)
  SERVER stripe_server
  OPTIONS (
    object 'customers',
    rowid_column 'id'
  );

What It Covers

Upstream ships wrappers for databases and services such as BigQuery, ClickHouse, DuckDB, MySQL, Redis, S3, Stripe, Snowflake, Slack, Notion, OpenAPI, Infura, and many others. Read and write support varies by wrapper, but pushdown for WHERE, ORDER BY, and LIMIT is a core framework feature.

Version Notes

The v0.6.0 release keeps the same extension model but expands the catalog and wrapper behavior. Official release notes call out:

  • new OpenAPI FDW support
  • new Infura FDW support
  • Snowflake timeout_secs table option
  • write-path and scan fixes across several wrappers

Caveats

  • Wrapper-specific options, supported objects, and write support differ widely; check the official catalog page for the exact FDW you use.
  • The docs warn that logical restores can fail when materialized views depend on foreign tables, so avoid that pattern or rely on physical backups.

Last Modified 2026-04-19: update extension stub docs (9f178c3)