Schemity's developer found SQLite's usual column-type rebuild deleted all three child rows because its PRAGMA ran inside the transaction. A safe version sets the foreign-key switch before BEGIN and checks the copied values before dropping the old table.
Reality
- Evidence72
- Adoption
- Insufficient
- Hype gap+10
- Incentives30
- Confidence66
Schemity's developer showed that a PostgreSQL role with only CONNECT and USAGE reads the full schema from pg_catalog while every table SELECT fails. Diagram tools built on information_schema show that same role an empty database.
Reality
- Evidence60
- Adoption
- Insufficient
- Hype gap+5
- Incentives50
- Confidence62
PostgreSQL 18.3 spent 10.4 seconds rewriting a 5-million-row table to add a gen_random_uuid() column, against 10 ms for a constant default. Values computed per row need a staged migration, with every statement run under lock_timeout.
Reality
- Evidence62
- Adoption
- Insufficient
- Hype gap0
- Incentives20
- Confidence65
PostgreSQL 18.3 accepts three kinds of ON DELETE SET NULL key at creation and rejects them only when a parent with children is deleted. A Schemity post that tested each case says to pick every key's action by what the child row means once its parent is gone.
Reality
- Evidence64
- Adoption
- Insufficient
- Hype gap0
- Incentives30
- Confidence62
Model Context Protocol's reference Postgres MCP server guards writes with a read-only transaction. One COMMIT; DROP TABLE query drops the table anyway. Only database permissions sit where the agent's SQL cannot reach.
Reality
- Evidence64
- Adoption
- Insufficient
- Hype gap+5
- Incentives70
- Confidence66
PostgreSQL 18 makes generated columns virtual unless the definition says STORED, and a virtual column cannot be indexed directly. Tests on 18.3 by the Schemity ERD tool's maker still favour them over triggers for same-row values, if indexed ones are written STORED.
Reality
- Evidence58
- Adoption
- Insufficient
- Hype gap0
- Incentives25
- Confidence60
The defect belongs to the graph, not to any one relationship, so diagram review and migration both pass it. It surfaces the first time somebody seeds an empty database.
Reality
- Evidence62
- Adoption
- Insufficient
- Hype gap+12
- Incentives68
- Confidence58
Rails' t.datetime and Prisma's DateTime both emit PostgreSQL's naive timestamp. The offending statements merged years ago, which is exactly why line-level tooling never sees them.
Reality
- Evidence64
- Adoption
- Insufficient
- Hype gap+18
- Incentives82
- Confidence52