Skip to content

Commit 97a2dea

Browse files
committed
docs(ledger): add FK migration guide
1 parent e64623e commit 97a2dea

1 file changed

Lines changed: 30 additions & 0 deletions

File tree

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Ledger Internal Foreign Key Validation
2+
3+
This migration adds foreign keys for ledger-owned references in `ledger_customer_accounts` and `ledger_breakage_records`.
4+
5+
The migration creates these constraints as `NOT VALID`. New writes are checked immediately, but existing rows are not scanned during the migration. This keeps the migration job short and lets operators validate historical rows separately.
6+
7+
## Migration Steps
8+
9+
First, apply OpenMeter migrations as usual.
10+
11+
After the migration has been applied, validate the new constraints manually:
12+
13+
```sql
14+
SET lock_timeout = '5s';
15+
SET statement_timeout = '0';
16+
17+
ALTER TABLE ledger_breakage_records VALIDATE CONSTRAINT ledger_breakage_records_ledger_breakage_records_planned_release;
18+
ALTER TABLE ledger_breakage_records VALIDATE CONSTRAINT ledger_breakage_records_ledger_breakage_records_release_reopens;
19+
ALTER TABLE ledger_breakage_records VALIDATE CONSTRAINT ledger_breakage_records_ledger_entries_source_breakage_records;
20+
ALTER TABLE ledger_breakage_records VALIDATE CONSTRAINT ledger_breakage_records_ledger_sub_accounts_breakage_records;
21+
ALTER TABLE ledger_breakage_records VALIDATE CONSTRAINT ledger_breakage_records_ledger_sub_accounts_fbo_breakage_record;
22+
ALTER TABLE ledger_breakage_records VALIDATE CONSTRAINT ledger_breakage_records_ledger_transaction_groups_breakage_reco;
23+
ALTER TABLE ledger_breakage_records VALIDATE CONSTRAINT ledger_breakage_records_ledger_transaction_groups_source_breaka;
24+
ALTER TABLE ledger_breakage_records VALIDATE CONSTRAINT ledger_breakage_records_ledger_transactions_breakage_records;
25+
ALTER TABLE ledger_breakage_records VALIDATE CONSTRAINT ledger_breakage_records_ledger_transactions_source_breakage_rec;
26+
27+
ALTER TABLE ledger_customer_accounts VALIDATE CONSTRAINT ledger_customer_accounts_ledger_accounts_customer_accounts;
28+
```
29+
30+
For large databases, run these statements one at a time. If validation fails, the failed constraint identifies the relationship with orphaned historical rows. Fix those rows and rerun the failed validation statement.

0 commit comments

Comments
 (0)