Skip to content

v1.48.0 — 유일 인덱스를 지원하고, 못 만들면 소리를 낸다

Choose a tag to compare

@CocoRoF CocoRoF released this 12 Sep 03:17
· 53 commits to main since this release
098272c

유일 인덱스 지원

get_indexes() 의 세 번째 원소가 True 면 CREATE UNIQUE INDEX 를 만듭니다.

def get_indexes(self):
    return [("uq_deploy_meta_workflow_id", "workflow_id", True)]

기존 2-튜플은 예전 그대로 동작합니다 — 기존 모델 무영향.

실패를 삼키지 않습니다

유일 인덱스 생성 실패는 ERROR 로 남기고 unenforced_unique_indexes() 에 테이블·컬럼·이유를 담습니다. 일반 인덱스 실패는 예전대로 warning 입니다 — 성능 장치와 불변 집행은 다르게 다룹니다.

유일 인덱스는 성능 장치가 아니라 불변의 집행입니다. 기존 데이터에 중복이 있어 못 만든 것을 warning 으로 넘기면 "있다고 믿는데 실제로는 없는 제약" 이 남고, 그건 제약이 아예 없는 것보다 나쁩니다.

왜

deploy_meta 는 "workflow_id 하나에 행 하나" 를 애플리케이션 코드로만 지키고 있었습니다. 그 규칙이 깨지자 같은 workflow_id 에 행이 둘 생겼고, 배포 여부를 읽는 곳들이 엉뚱한 행을 집어 살아 있는 배포가 403 이 됐습니다 (2026-09-09 운영 사고).

⚠ 소비자 주의

3-튜플은 1.48.0 이상에서만 읽힙니다. 1.47.0 이하는 for idx_name, columns in ... 로 언패킹하므로 ValueError 가 나고, 그 예외는 try 밖이라 테이블 생성 전체가 실패합니다. 3-튜플을 쓰는 모델을 올릴 때는 SDK 핀을 반드시 함께 올리세요.