Roadmap

What is done, what is planned, and where the detail lives.

This page is the entry point. The working record is design/ROADMAP.md, which carries the full list with per-item history. The release schedule and the test that gates beta 1 are in design/RELEASE_PLAN_1.0.md. Issues are the authority on anything being worked now.

Status

pgColumnar is pre-release. The version marker is 1.0-alpha3, recorded in VERSION. That version is in development and not tagged; the latest published pre-release is v1.0-alpha2. A table USING pgcolumnar is stored in the native on-disk format, PGCN v1.

Releases to 1.0

An alpha may add features. Beta 1 and every release after it may not.

That rule decides the schedule. Anything a user can see must land in an alpha. After beta 1 the only changes are fixes, performance work that adds no surface, documentation, and tests. A feature deferred past beta 1 waits for 2.0.

release target theme
1.0-alpha3 2026-09-01 feature complete: retention, load deduplication, sort reporting, more skipping
1.0-alpha4 2026-09-15 skipping and layout
1.0-alpha5 2026-09-29 join acceleration
1.0-alpha6 2026-10-13 encoding and Parquet partition inference
1.0-beta1 2026-10-27 feature freeze

Dates are a cadence, not a commitment. They follow the 14 days observed between v1.0-alpha and v1.0-alpha2, and each is the date a tag is cut.

Beta 1 is a test rather than a date. It needs a frozen on-disk format and an upgrade path gated from every shipped version. It needs a green matrix on the tag and documentation current against the code. And it needs every open performance issue measured and answered. The plan linked above carries the full test.

Done

The large pieces that have shipped:

  • Storage and scan. Native PGCN v1 format, zone maps and bloom filters for skipping, column projection, vectorized execution, delete vectors.
  • Interoperability. Arrow and Parquet, import and export, flat and nested, with no libarrow or libparquet dependency. External Parquet read in place, with an FDW surface, projection and predicate pushdown, multi-file reads and partition pruning.
  • Maintenance. Vacuum, compaction, clustering and reclustering, projections. Retention through pgcolumnar.expire, and an optional background daemon for the online verbs.
  • Object storage. Reads and writes over S3-compatible endpoints for the Parquet functions and both foreign-data wrappers, behind an endpoint allow-list that is empty by default.
  • Apache Iceberg. Read a table at its current snapshot, applying row-level deletes of every kind, with an FDW surface and a REST catalog client.
  • Parallel bulk work. pgcolumnar.parallel_copy loads one file with several background workers as one atomic operation, and pgcolumnar.parallel_export_parquet exports in parallel.
  • PostgreSQL integration. Read stream and asynchronous IO, virtual generated columns, temporal constraints, statistics collection for the planner.

Planned

Where an item falls in the series is in the table above; nothing here is a further commitment. Each links to the issue that owns it.

area item issue
Planner Join and aggregate acceleration, including runtime filters pushed into the scan #752

Everything this table listed before has shipped: object storage reads and writes, Apache Iceberg, the grouped parallel aggregate arm, and the join-heavy benchmark. See Done above.

Under investigation

Recorded so the work is visible, without implying it will be built:

  • Techniques from published columnar systems, ranked against what we already implement. See #403. Its companion reading, #405, is closed, and so is the PostgreSQL 19 and 20 survey, #390.

What this page is not

It is not a commitment. The dates above are the cadence this project has kept, not a promise. An item here means the work is recorded and reasoned about. It does not mean anyone is working on it.