Skip to content

Use NULLS NOT DISTINCT on unique constraints

Closes #1892 (closed)

⚠️ Merge only after we drop PostgreSQL 14 from all instances, or this could block deployments

  • Classification: 3 constraints merged into one, to require a unique MLClass per worker version and worker run
  • TranscriptionEntity: 3 constraints merged into one, to require unique transcription entities per transcription. ⚠️ This requires rebuilding a 100GB index in prod
  • Right: 2 constraints merged into one, to require a unique Right per user or group on each target
  • CorpusWorkerVersion: 4 constraints merged into one, to require unique worker version/model version/worker configuration combos per corpus
  • Worker: 2 constraints merged into one, to require unique slugs per repository
  • WorkerActivity: 4 constraints merged into one, to require unique worker version/model version/worker configuration combos per element
  • WorkerRun: 4 constraints merged into one, to require unique worker version/model version/worker configuration combos per process

If the migration crashes after 30 minutes, we cannot avoid this timeout, and the queries are probably still running on the database. We had that issue when we had migrated from integer IDs to UUIDs on TranscriptionEntity: https://redmine.teklia.com/issues/8169#note-11

Merge request reports

Loading