Data Corruption Bugs: Diagnosis and Lessons
summary
Shows concrete debugging sequences using amcheck and pageinspect to find reproducible corruption, with fixes now merged into core. Demonstrates an interval deduplication bug that returned wrong values, a missing PG_VERSION fsync during CREATE DATABASE/base backup, a btree delete half‑done that produced amcheck false positives, and a GRANT vs CREATE INDEX race that resurrects an index without its missed updates. Explains WAL bisection for narrowing the offending WAL record and lists test and tooling wish‑list items.
AI-written summary · about
chapters (13)
- 0:00Introduction
- 2:36amcheck btree walk-through
- 9:16pageinspect
- 12:13Defect case studies: pglogical internal
- 12:52interval deduplication
- 18:01PG_VERSION fsync
- 20:26CREATE DATABASE, base backup
- 23:13btree delete half-done
- 24:50regexp \s changed behavior
- 29:25GRANT, CREATE INDEX concurrency
- 38:17bisect WAL
- 39:13Wish list
- 41:57Questions & answers
related talks
32mDebugging Data Corruption in PostgreSQL: A Systematic Approach
20mDebugging Data Corruption in PostgreSQL
51mDatabase in Distress: Testing and Repairing Different Types of Database Corruption
47mMy Journey in PostgreSQL bug fixing
39mData Corruption: Stop the Evil Tribbles
37mDatabase in Distress: Testing and Repairing Different Types of Database Corruption
33mFinding and fixing a data-corruption bug...
42mMy Journey in PostgreSQL bug fixing
