wrappers
Postgres Foreign Data Wrapper development framework in Rust.
Install
trunk install wrappers
Wrappers
Wrappers
is a development framework for Postgres Foreign Data Wrappers (FDW), written in Rust. Its goal is to make Postgres FDW development easier while keeping Rust language's modern capabilities, such as high performance, strong types, and safety.
Wrappers
is also a collection of FDWs built by Supabase. We currently support the following FDWs, with more under development:
FDW | Description | Read | Modify |
---|---|---|---|
HelloWorld | A demo FDW to show how to develop a basic FDW. | ||
BigQuery | A FDW for Google BigQuery | ✅ | ✅ |
Clickhouse | A FDW for ClickHouse | ✅ | ✅ |
Stripe | A FDW for Stripe API | ✅ | ✅ |
Firebase | A FDW for Google Firebase | ✅ | ❌ |
Airtable | A FDW for Airtable API | ✅ | ❌ |
S3 | A FDW for AWS S3 | ✅ | ❌ |
Logflare | A FDW for Logflare | ✅ | ❌ |
Auth0 | A FDW for Auth0 | ✅ | ❌ |
SQL Server | A FDW for Microsoft SQL Server | ✅ | ❌ |
Redis | A FDW for Redis | ✅ | ❌ |
AWS Cognito | A FDW for AWS Cognito | ✅ | ❌ |
Notion | A Wasm FDW for Notion | ✅ | ❌ |
Snowflake | A Wasm FDW for Snowflake | ✅ | ✅ |
Paddle | A Wasm FDW for Paddle | ✅ | ✅ |
Warning
Restoring a logical backup of a database with a materialized view using a foreign table can fail. For this reason, either do not use foreign tables in materialized views or use them in databases with physical backups enabled.
Features
- Minimum interface and easy to implement.
- Support for rich data types.
- Support both sync and async backends, such as RDBMS, RESTful APIs, flat files and etc.
- Built on top of pgrx, providing higher level interfaces, without hiding lower-level C APIs.
WHERE
,ORDER BY
,LIMIT
pushdown are supported.
Documentation
Installation
Wrappers
is a pgrx extension, you can follow the pgrx installation steps to install Wrappers.
Basically, run below command to install FDW after pgrx
is installed. For example,
cargo pgrx install --pg-config [path_to_pg_config] --features stripe_fdw
Developing a FDW
Visit Wrappers Docs for more details.