There’s already a lot you can do.

  • Read Postgres tables, views, and materialized views.
  • Automated use of Postgres B-tree indexes to accelerate queries when applicable. Further optimizations in this area are ongoing.
  • Support for most Postgres built-in data types.
  • Read Parquet, Iceberg, Delta, and CSV files from cloud storage using read_parquet, iceberg_scan, delta_scan, and read_csv functions.
  • Write Parquet and CSV files to cloud storage using COPY table TO 's3://...' and COPY (SELECT ...) TO 's3://...'.
  • Support for Amazon S3, Google GCS, and Cloudflare R2 storage.
  • Automatic fallback to Postgres execution when a query is not compatible with DuckDB.

These features can be combined to move data in-and-out of cloud storage. For instance, you can combine reading from cloud storage with local data using joins, and then write those results out to S3.

Future

We have a lot more planned for pg_duckdb. If you are interested in sponsoring one of these features, get in touch with us.

  • Write to Postgres tables using INSERT INTO ... SELECT
  • Further improve performance of reading heap tables
  • MotherDuck storage and execution
  • Azure support
  • Read partitioned Postgres tables
  • Automatic enabling and disabling of DuckDB execution based on query plan
  • Refinement of result sets to ensure exact match to Postgres execution
  • Custom functions (UDFs) including functions from Postgres extensions
  • Custom types
  • BRIN index scan
  • More ways to store and access your data