postgres=# select * from todo;

TODO

The outcomes we want to achieve — some already in progress, others still ideas. Internal steps, review notes, and blockers belong on the work and project pages. Propose an outcome by editing this file on GitHub and opening a pull request.

Postgres Hacking TODO List
==========================
Last updated: 2026-07-16

This is a list of outcomes we want to achieve, not an internal task list.
[WIP] means public work exists.  [NOT STARTED] means the idea has not yet
become active work.  Implementation steps, review notes, and blockers belong
on the work and project pages.  When an outcome is finished, remove it.

To propose an outcome, edit this file on GitHub and open a pull request:
https://github.com/NikolayS/hacking-postgres/edit/main/TODO


Observability
=============

* [NOT STARTED] Per-database query counts in pg_stat_database, enabling QPS alongside TPS

* [WIP] Precise, low-overhead timing and tracing for Postgres wait events

	https://hacking.postgres.tv/projects/wait-event-tracing/
	https://commitfest.postgresql.org/patch/6984/

* [WIP] Complete wait-event coverage for blocking Postgres operations

	https://gaps.wait.events/
	https://www.postgresql.org/message-id/flat/CACdN0M78U%2BGvpqA7oey-GA7fFSYM636aDp6H9FVvCztv9zXxSA%40mail.gmail.com

* [WIP] pg_stat_statements that scales without global LWLock contention

	https://www.postgresql.org/message-id/flat/CAA5RZ0vZwR_dSK6fo0P2-EnskUVN0NjLHnGnJMFDPC8-kEW3sQ%40mail.gmail.com


Recovery and replication
========================

* [WIP] Reliable recovery landmarks for destructive DDL

	https://hacking.postgres.tv/projects/log-object-drops/
	https://commitfest.postgresql.org/patch/6272/

* [WIP] Safe logical decoding from an archive-fed standby

	https://hacking.postgres.tv/projects/logical-decoding-archives/
	https://github.com/NikolayS/postgres/pull/40


SQL features
============

* [WIP] Partial refresh of materialized views

	https://hacking.postgres.tv/projects/partial-matview-refresh/
	https://commitfest.postgresql.org/patch/6305/


Client/server protocol
======================

* [WIP] Negotiated custom command-completion tags

	https://github.com/NikolayS/postgres/pull/16


Storage internals
=================

* [WIP] Compression of whole WAL records

	https://commitfest.postgresql.org/patch/5621/

* [WIP] Safe online B-tree page merge to reclaim index bloat

	https://hacking.postgres.tv/projects/btree-page-merge/
	https://www.postgresql.org/message-id/flat/CANBEAPFq3YAOydjUS3xwcUG9L6e3WE5Z4nGPk_Q3RsjSFWTJNA%40mail.gmail.com


Client tools
============

* [WIP] pg_dump placeholders for excluded table data

	https://www.postgresql.org/message-id/flat/CACLU5mTrtt2ocj_UhVC2_4tjXRi7oMCxK17WjoeX7khwRvZjxQ%40mail.gmail.com

* [NOT STARTED] A plugin interface for psql

* [NOT STARTED] Parallel dump and restore of independently restorable chunks of one large table

* [NOT STARTED] Custom pg_dump queries for filtering and transforming table data

	https://www.postgresql.org/message-id/flat/CACLU5mS07WGPpq6%3Dm8aC5tUMusNpL8FhBPnYem86iSawEgcavw%40mail.gmail.com