Releases: dventimisupabase/pg_flight_recorder
Release list
Release v2.29.2
Release v2.29.1
Highlights
📋 New single-file install bundle for the Supabase SQL editor. Two new release assets — pgfr_record-v2.29.1-bundle.sql and pgfr_analyze-v2.29.1-bundle.sql — are self-contained, copy-pasteable scripts with zero psql metacommands. Open the Supabase dashboard SQL editor, paste, run. No psql, no CLI, no extension registry needed. (#66)
🔍 XID, MultiXID, and xmin horizon monitoring. First-class wraparound observability for both transaction-ID counters and configurable warning/critical thresholds, plus point-in-time identification of the backend holding the cluster's xmin horizon. (#53, #54)
What's new
Features
- Single-file install bundle for SQL-editor channels (#66)
- xmin horizon monitoring (#53)
- MultiXID wraparound monitoring + configurable XID/MXID thresholds (#54)
Refactors
- Consolidate all pg_cron scheduling into
pgfr_record.enable()(#57, #58) — one canonical entry point, easier to reason about during incidents - Standardize pg_cron job naming on the
pgfr_underscore prefix (#59, #62)
Fixes
- Warn when
cron.log_runis on, since pgfr's job cadence makescron.job_run_detailsgrow unbounded (#63) - Drain
query_mapbefore the "empty initially" assertion to remove a pg_cron race intest_ring_buffer.sql(#65)
Docs
- README + explainer page consistency pass — split recorder self-check from database diagnostics, accurate Architecture flow, no more bogus "superuser required" requirement (#64)
- Apache 2.0 license + SPDX headers + license-aware bundling
Installation
# psql users
psql --single-transaction -f pgfr_record/install.sql
psql --single-transaction -f pgfr_analyze/install.sql
# Supabase dashboard / any SQL editor: download the *-bundle.sql assets
# from this release and paste them in.
# dbdev / CREATE EXTENSION users
select dbdev.install('dventimi-pgfr_record');
select dbdev.install('dventimi-pgfr_analyze');
create extension pgfr_record;
create extension pgfr_analyze;About v2.29.1
v2.29.1 is a build-pipeline retag of v2.29 with no code differences. v2.29's dbdev publish was rejected by the dbdev API for declaring requires = 'pgfr_record' in pgfr_analyze's control file. v2.29.1 strips that line inside the dbdev publish path only — the source control file keeps the declaration so direct CREATE EXTENSION pgfr_analyze users still get a clean dependency error if pgfr_record is absent. (#67)
Release v2.29
⚠️ Superseded by v2.29.1. v2.29.1 is a build-pipeline retag with no code differences; v2.29's dbdev publish failed. See v2.29.1 for the readable release announcement and a working dbdev publish.
- feat(build): add single-file install bundle for SQL-editor channel (#66) (0247725)
- fix(test): drain query_map before "empty initially" assertion (#65) (5e42651)
- docs: README + explainer page consistency pass (#64) (de00b20)
- (feat) add xmin horizon monitoring (#53) (f741d6f)
- Warn when cron.log_run leaves job_run_details unbounded (#63) (52448f5)
- chore: add SPDX headers, license-aware bundling, CONTRIBUTING (d6b9eca)
- chore: add Apache 2.0 license (7f3ac50)
- docs: align hero terminal mock with real health_check() output (73b56af)
- docs: remove remaining "high-frequency" claims from landing page (b4e3654)
- docs: correct architecture blurb on landing page (045430e)
- docs: refresh landing page stats to reflect current code (84f3811)
- docs: rename pg-flight-recorder -> pg_flight_recorder (578f348)
- Minor formatting improvements in PG_COMPAT.md (9fd8986)
- feat(pgfr): monitor MultiXID wraparound + configurable XID/MXID thresholds (#54) (c79456c)
- refactor(pgfr_record): standardize pg_cron job names on underscore prefix (#59) (b128a7f)
- refactor(pgfr_record): consolidate all pg_cron scheduling into enable() (#57) (3d0bdc2)
- fix(ci): deactivate pgfr_ cron jobs immediately after install (race with #46) (733ee67)
- fix(ci): tighten readiness probe with SELECT 1 instead of pg_isready (6b4197e)
- fix(pgfr_analyze): declare hard dependency on pgfr_record in control file (bf8a17c)
- docs(site): fix inaccurate claims in index.html explainer (ea48806)
- Minor formatting of tables (8dc0437)
- Minor formatting of tables (903439e)
- Minor formatting of tables (b6ac744)
- Killed the blog (85278f9)
- fix(pgfr_record): add statement_timeout to all maintenance cron jobs (#49) (1769333)
- docs: fix inaccurate claims in README.md and REFERENCE.md (2e52b1b)
- docs(REFERENCE): fix retention profile row — wrong key name and wrong troubleshooting value (fed4316)
- fix(ci): pin pg_cron/pgtap and make CI builds verbose (#44) (93c6ed5)
- fix(ci): make PostgreSQL 18 test matrix actually pass (f6d80ba)
- fix(pgfr_record): add DEFAULT partition to all range-partitioned tables (25481e2)
- fix(ci): clear lint errors on main (6aa78cb)
- fix(ci): inline \ir directives when publishing to dbdev (f96003f)
- refactor: switch install.sql to \ir relative include (e10058e)
- feat(ci): add PostgreSQL 18 to the test matrix (03b0670)
- docs: add blog post on stacked PRs in the AI age (cd2203d)
- refactor: move experimental pgfr_control to feature branch (7af4f46)
- refactor: rename _record/, _analyze/, _control/ to pgfr_record/, pgfr_analyze/, pgfr_control/ (17451ab)
- fix(record): lock collection works with snapshot_based = false (f7bd95b)
- fix(analyze): report() backend_type → backend_state for v2 wait_summary (852dda6)
- fix(analyze): use delta columns in storm/regression detection (d5e932c)
- fix(ring): truncate activity_samples on rotation (d9889fb)
- fix: PG13/PG15/PG18 compat, docker-compose, test fixes (c8f5832)
- chore: update install.sql entry points to source modular SQL files (a3818bf)
- refactor(_analyze) + feat: split into modules, add v2 reader functions (6a348d6)
- feat(phase3): daily-partitioned snapshot tables + migration script (889b76a)
- feat(phase2): N-partition TRUNCATE ring buffer (wait/activity/lock/query samples) (f948d80)
- feat(phase1): sparse collectors, partition infra, migration path (7970fde)
- refactor(_record): split monolithic install.sql into focused modules (8300152)
- chore: benchmark scripts, PG18 compat notes, Dockerfile (26c6dca)
- docs(blueprints): storage overhaul spec — zero-bloat partitioned design (bac1144)
- Let quickstart steps span full container width (bd9d650)
- Stack quickstart steps vertically to prevent horizontal overflow (65cbb7e)
- Use
instead of
for quickstart blocks to properly display multi-line content (5bd6401) - Add copy buttons to quickstart code blocks and clean up formatting (22c49d7)
- Add link to project website in README (4d1b297)
- Add GitHub Pages deployment workflow (67cde00)
- Add landing page with Supabase brand identity (c089234)
- Killed some pointless comments (2b97742)
Release v2.28.1
- mothball benchmark and .claude directories (9e77e65)
- fix REFERENCE.md schema version and statements_interval defaults (2865b4e)
- add missing COMMENT ON statements for 4 analyze functions (91e50c6)
- add missing COMMENT ON statements for 14 public functions (3b2a1ae)
- fix ring retention to use configured slots instead of hardcoded 120 (5544b0e)
- fix profile table defaults, enable() fallback, and stale comments (58166dc)
- fix remaining stale interval references across codebase (165b9bf)
- update stale interval/retention values to match 60s default (1f5da31)
- fix stale install notice and adjust retention warning thresholds (b57f222)
- change default snapshot and statement intervals to every minute (a121a53)
- change default sample interval from 3 minutes to 1 minute (423dc52)
- rename core schema from pgfr to pgfr_record for consistency (fde159e)
- move analysis functions from pgfr_record internals to pgfr_analyze (7fcef53)
- update docs to reflect renamed functions and enforce package boundaries (5511e5b)
- update _record/README.md to reference pgfr_analyze wrapper names (9537366)
- internalize analysis functions in pgfr_record, add user-facing API in pgfr_analyze (d607a2b)
- add delta columns and improve pg_stat_statements collection (544b66e)
- remove SQL_INDEX.json and its supporting infrastructure (20cb531)
- update REFERENCE.md: fix stale skip reason and add missing safety features (63e36fb)
- update top-level README safety table to reflect current features (f3bca6d)
- add outer statement_timeout to all pg_cron jobs (89def08)
- regenerate SQL_INDEX.json (7f994d4)
- remove backup detection from pre-flight checks (32705ca)
- Minor formatting changes (6513664)
- regenerate SQL_INDEX.json (7ea2a07)
- fix backup detection self-matching in _should_skip_collection() (4f4ad57)
- regenerate SQL_INDEX.json (7e1fe0c)
- remove broken/dead safety features: DDL lock check, load throttle, walsender false-positive, collection jitter, job deduplication, adaptive sampling, and auto-mode adjustment (45b926c)
- regenerate SQL_INDEX.json (76f299c)
- remove broken checkpoint detection from pre-flight checks (b558f47)
- regenerate SQL_INDEX.json (1e9ca2a)
- remove dead replica lag check from pre-flight safety gates (651e991)
Release v2.28
- drop individual file assets from release (archives are sufficient) (803426f)
- include _control in release assets and remove redundant flat copies (975b3d2)
- add supabase/ to .gitignore (3e61c5c)
- rewrite REFERENCE.md as exhaustive lookup reference (2fa2a3d)
- rewrite top-level README as project landing page (bd0b51a)
- make sub-package READMEs self-contained for dbdev publishing (8de16b1)
- use fully-qualified URL for top-level README link in _record/README.md (291cbc6)
Release v2.27
- regenerate SQL_INDEX.json (4337b7c)
- remove obsolete table of contents from _record/install.sql (2341df8)
- normalize markdown table formatting in README.md and REFERENCE.md (bcc55ec)
- update sql-index workflow to commit SQL_INDEX.json to main (ff2922f)
- track SQL_INDEX.json in main branch, regenerate for current structure (084d0a4)
- remove vestigial migrations directory (7119c24)
- update CLAUDE.md with per-extension compose file structure (0fcbca6)
- update REFERENCE.md for three-extension structure (f891456)
- decompose docker-compose.yml into per-extension compose files (2276250)
- update README.md with project structure table (3a464ac)
- update CLAUDE.md to reflect new project structure (01354f3)
- move control functions to pgfr_control schema, simplify uninstalls (4708c54)
- distribute tests among extension subdirectories (4a2d157)
- move uninstall files into subdirs, rename .control to extension.control (ba5dadf)
- move SQL files into their extension subdirectories (146ec5b)
- rename pg_flight_recorder → pgfr across all extensions and schemas (f647461)
Release v2.25
- remove blog/, tests/PATHOLOGY_TESTS.md, requirements.txt (51c17cb)
- Added the Resent deck (8bbaa82)
- remove pglite directory, was severely out of date (5f6d6c0)
- remove migrations directory, simplify upgrade path (565d861)
- remove tools/sql-find, query SQL_INDEX.json directly (bf2b9eb)
- fix sql-index to recover from per-statement parse errors (1bf4d65)
- bump schema_version to 2.25, add migration for reporting schema move (35ce340)
- move reporting functions to flight_recorder_reporting schema (df514b5)
- docs: clarify two install methods in README (3369e8d)
- move badges from README.md to REFERENCE.md for database.dev compatibility (06952fe)
- rename pg-flight-recorder to pg_flight_recorder for extension naming consistency (a0e7327)
- docs: update REFERENCE.md for core/reporting split (7002a35)
- docs: update install instructions for core/reporting split (3a4781b)
- feat: split reporting functions into separate file and two dbdev packages (423b264)
- fix(ci): use correct credentials.toml format for dbdev (9d92fc9)
- ci: extract publish-dbdev into standalone workflow (0ded618)
- fix(ci): use GitHub API to find dbdev CLI download URL (7691f48)
Release v2.19
- fix: remove psql-specific \set command for Supabase compatibility (5e37114)
v2.18 - Extension-Free Bloat Tracking
What's New
Features
- Extension-free table bloat tracking - Track table bloat without requiring pgstattuple extension
- Flight recorder skill - Added
/flight-recorderskill for database analysis
Improvements
- Major codebase simplification - Removed ~7000 lines of code while preserving functionality
- Config consolidation - Eliminated config duplication with single source of truth
- Documentation rewrite - Completely rewritten README.md and REFERENCE.md for clarity
Fixes
- Fixed test reliability by disabling adaptive_sampling during tests
Export Enhancements
- Added
snapshot_deltasexample for SQLite delta computation - Added
_schematable to exports to prevent AI query errors
Release v2.17
- docs: remove DIAGNOSTIC_PLAYBOOKS.md (0f0799c)
- docs: restore DIAGNOSTIC_PLAYBOOKS.md (47fb089)
- chore: remove outdated PATHOLOGY_WORK_IN_PROGRESS.md (400d3a0)
- chore: remove outdated documentation and archive directory (8249c08)
- feat: replace timing-based metrics with buffer-based metrics as default (1b420c4)
- docs: add comprehensive in-database documentation for AI analysis (cbdd1b1)
- feat: add SQLite export function for AI-driven analysis (a1de5c1)
- docs: add section on hierarchical presentation to balance "record everything" (1fc6e3f)
- docs: expand profile documentation with detailed settings tables (c06d1df)
- feat: expand configuration profiles with 77 of 112 parameters (85bf40d)
- docs: document all 112 configuration parameters (23727ce)
- feat: add new feature parameters to configuration profiles (bcf1710)
- docs: add Canary Queries documentation to REFERENCE.md (cd43346)
- fix: correct markdown link fragments in archived feature ideas (dbdf9e5)
- docs: archive completed feature ideas, add future directions (3563b36)
- ci: add version badge and automated release workflow (864fbbe)
- docs: update documentation for complete 9/9 pathology coverage (88da7c0)
- fix: correct column name in anomaly_report query (details -> description) (92dc5f5)
- feat: complete all 9 pathology generators (48 tests) (66017b5)
- docs: update documentation for 6 pathologies (33 tests) (cc0b24b)
- fix: make pathology tests more lenient for CI environment (ff0f821)
- feat: add Connection Exhaustion pathology using dblink + fix SQL error (c96f97d)
- feat: add 3 more pathology generators (High CPU, Slow Realtime, Slow Queries) (60d6333)
- docs: fix markdown lint errors in documentation files (94b7738)
- docs: add session memory for pathology generator work (f6b28ea)
- docs: add PR description for pathology generators (4802ad6)
- feat: add pathological data generators for diagnostic validation (3ecafb5)