mirror of
https://github.com/multica-ai/multica.git
synced 2026-07-27 04:56:20 +02:00
The 162_resource_labels down migration recreated issue_label_workspace_name_lower_idx with a plain CREATE UNIQUE INDEX, which takes a blocking lock on the existing issue_label table during a rollback to v0.3.43 and violates the online-migration rule that every CREATE INDEX must be CONCURRENTLY. CREATE INDEX CONCURRENTLY cannot run in a transaction or a multi-command migration, so the rebuild is split out of 162.down: - 171.down now rebuilds the legacy index as a single CREATE UNIQUE INDEX CONCURRENTLY (the natural inverse of 171.up, which drops it). - 174 (new, no-op up) deletes the agent/skill label rows in its down so they are gone before 171.down rebuilds the workspace-wide unique index. Down migrations apply high->low, so 174.down -> 171.down -> 162.down runs in the required order. - 162.down keeps only the transaction-safe structural teardown. Validated on an isolated Postgres: full up->down->up chain with a colliding issue/agent label pair; the concurrent rebuild succeeds after the rows are deleted, restores the valid pre-162 unique index, and a negative control (rebuild before the delete) fails on the exact collision. Co-authored-by: J <j@multica.ai> Co-authored-by: multica-agent <github@multica.ai>
9 lines
480 B
SQL
9 lines
480 B
SQL
-- Forward no-op. This migration exists only to sequence a rollback step:
|
|
-- its down removes the agent/skill rows from issue_label before 171.down
|
|
-- rebuilds the workspace-wide unique name index. Because down migrations
|
|
-- apply high->low, keeping this delete in the highest-numbered resource
|
|
-- label migration guarantees the non-issue rows are gone before both
|
|
-- 171.down (index rebuild) and 162.down (drops resource_type). There is
|
|
-- nothing to do on the way up.
|
|
SELECT 1;
|