AddColumn with inline checkConstraint on an existing table double-applies the constraint (42710)
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 72/100
Direzione di ricerca
Read the planner, AddColumnOperation, and AddCheckConstraintOperation, then reproduce the existing-table migration using the declarative schema example in the issue. Done means the new column is applied successfully, its check constraint is present once, and rerunning the migration does not fail with PostgreSQL error 42710.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
What happened
DataProviderMigrate (postgres, additive phase) over a declarative schema where an existing table gains one new column that carries a checkConstraint:
- name: workspace_size
type: Text
checkConstraint: "workspace_size IS NULL OR workspace_size IN ('small','medium','large')"
Plan and outcome:
Phase: all — applying 2 of 2 operation(s):
AddColumnOperation
AddCheckConstraintOperation
Error: migration apply failed: 42710: constraint "agent_configs_workspace_size_chk" for relation "agent_configs" already exists
The whole apply rolls back, so the column never lands: information_schema.columns and pg_constraint both show nothing afterwards, and every re-run fails the same way.
Diagnosis
AddColumnOperation already emits the column-level CHECK (named <table>_<column>_chk), and the planner also schedules a separate AddCheckConstraintOperation for the same declaration with the same name. On a fresh CREATE TABLE this does not happen, which is why the same YAML pattern works for columns declared at table-creation time.
Expected
One of:
- the planner emits only
AddColumnOperation(with the inline check) when the column is new, or AddColumnOperationemits the bare column and leaves the check toAddCheckConstraintOperation.
Environment
- Postgres 17 (Supabase)
- Provider: postgres
- Consumer: Nimblesite/NimblesiteAgenticPlatform
migrations/schema.yaml, tableagent_configs
- Lingua principale
- C#
- Stelle
- 68
- Fork
- 4
- Merge medio
- 36m
- PR unite (30g)
- 9
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di Nimblesite/DataProvider
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
Nimblesite/DataProvider#72 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
Nimblesite/DataProvider#121 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 55/100
Nimblesite/DataProvider#108 ·
I maintainer di solito rispondono entro 1 giorno
-
A check constraint the schema cannot name can never be retired, and keeps enforcing the old ruleAperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
Nimblesite/DataProvider#107 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 55/100
Nimblesite/DataProvider#106 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di Nimblesite/DataProvider
Issue simili
-
Backend enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
I maintainer di solito rispondono entro 1 giorno
-
UI: money shows the minus sign next to the number, not before the currency (IL -3.0m, not -IL 3.0m)Apertaarea: sim area: unity enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
eyalgolan/statecraft-israel#1107 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
dimitar-radenkov/Pointframe#271 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
qew21/Genshin-Subtitles#45 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
HoffmanEngineering/3d-print-log-api#274 ·
I maintainer di solito rispondono entro 1 giorno