fix(queue): migration 117에서 DO $$ BEGIN 제거 (BEGIN 검증 회피)
_validate_sql_content가 PL/pgSQL의 BEGIN을 트랜잭션 제어문으로 오탐. guard check를 제거하고 CREATE UNIQUE INDEX 자체의 중복 실패에 의존. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -7,30 +7,12 @@ WHERE a.document_id = b.document_id
|
||||
AND a.started_at < NOW() - INTERVAL '10 minutes'
|
||||
AND b.status = 'pending';
|
||||
|
||||
-- Step 2: guard check — 활성 중복이 남아있으면 migration 중단
|
||||
DO $$
|
||||
DECLARE
|
||||
dup_count INTEGER;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO dup_count
|
||||
FROM (
|
||||
SELECT document_id, stage
|
||||
FROM processing_queue
|
||||
WHERE status IN ('pending', 'processing')
|
||||
GROUP BY document_id, stage
|
||||
HAVING COUNT(*) > 1
|
||||
) sub;
|
||||
|
||||
IF dup_count > 0 THEN
|
||||
RAISE EXCEPTION 'migration 117 blocked: % active duplicate(s) remain. Run manual cleanup first.', dup_count;
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
-- Step 3: 기존 constraint 제거
|
||||
-- Step 2: 기존 constraint 제거
|
||||
ALTER TABLE processing_queue
|
||||
DROP CONSTRAINT processing_queue_document_id_stage_status_key;
|
||||
|
||||
-- Step 4: partial unique index (활성 행은 (document_id, stage)당 최대 1개)
|
||||
-- Step 3: partial unique index (활성 행은 (document_id, stage)당 최대 1개)
|
||||
-- 활성 중복이 남아있으면 여기서 자연스럽게 실패 → 수동 정리 후 재시도
|
||||
CREATE UNIQUE INDEX uq_queue_active
|
||||
ON processing_queue (document_id, stage)
|
||||
WHERE status IN ('pending', 'processing');
|
||||
|
||||
Reference in New Issue
Block a user