Skip to content

지원 매트릭스 (한국어)

🌐 SUPPORT_MATRIX.md의 번역입니다. 영어 원문이 표준이며, 페이지 번역은 경고 수준의 동기화 규칙을 따릅니다.

sqlalchemy-cubrid 릴리스의 호환성과 기능 지원.


버전 호환성

SQLAlchemy

SQLAlchemy 버전 상태 비고
2.0.x ✅ 지원 최소 요구 버전
2.1.x ✅ 지원 GA까지 최신 테스트 프리릴리스
≥ 2.2 ❌ 미지원 코드가 SA 비공개 내부를 사용 (아래 참고)
< 2.0 ❌ 미지원 SA 1.x API 제거됨

<2.3인가? 방언이 예고 없이 변경될 수 있는 비공개 SQLAlchemy API에 접근합니다:

비공개 API 위치 용도
select._limit_clause compiler.py:104 LIMIT 절 컴파일
select._offset_clause compiler.py:105 OFFSET 절 컴파일
select._for_update_arg compiler.py:93 FOR UPDATE 절

리터럴 감지와 typed-bind 재생성은 이제 로컬 _compat.py 헬퍼를 거치므로, 직접적인 비공개 API 서피스는 이 세 속성으로 줄었습니다.

Python

Python 버전 상태
3.10 ✅ 지원
3.11 ✅ 지원
3.12 ✅ 지원
3.13 ✅ 지원
3.14 ✅ 지원
< 3.10 ❌ 미지원

CUBRID 서버

CUBRID 버전 상태 비고
11.4 ✅ 지원 최신 안정 버전
11.2 ✅ 지원
11.0 ✅ 지원
10.2 ✅ 지원 최소 테스트 버전
< 10.2 ❌ 미지원

드라이버

드라이버 설치 URL 스킴 상태
CUBRID-Python (CCI) pip install "sqlalchemy-cubrid[cubrid]" 또는 [cubriddb] cubrid:// / cubrid+cubriddb:// ✅ 지원 (레거시 C 확장)
pycubrid (순수 Python) pip install "sqlalchemy-cubrid[pycubrid]" cubrid+pycubrid:// ✅ 지원
pycubrid 비동기 pip install "sqlalchemy-cubrid[pycubrid]" cubrid+aiopycubrid:// ✅ 지원

기능 지원

SQLAlchemy Core

기능 상태 비고
create_engine() cubrid://, cubrid+cubrid://, cubrid+cubriddb://, cubrid+pycubrid:// 스킴
비동기 엔진 create_async_engine("cubrid+aiopycubrid://...")
SQL 컴파일 SELECT, INSERT, UPDATE, DELETE, JOIN, 서브쿼리
DDL 컴파일 CREATE TABLE, ALTER, DROP, AUTO_INCREMENT, COMMENT
타입 시스템 출하된 모든 CUBRID 타입 컴파일. 리플렉션 커버리지는 아래에 별도 표기
스키마 리플렉션 테이블, 컬럼, PK, FK, 인덱스, 유니크 제약, 코멘트
트랜잭션 관리 커밋, 롤백, 세이브포인트 (RELEASE SAVEPOINT 없음)
커넥션 풀링 pool_pre_ping, 연결 해제 감지를 갖춘 SA 풀
문장 캐싱 supports_statement_cache = True

SQLAlchemy ORM

기능 상태 비고
선언형 모델
릴레이션십
Session / Unit of Work
Query API
하이브리드 속성

Alembic

기능 상태 비고
자동 발견 alembic.ddl 엔트리 포인트
스키마 마이그레이션 CREATE, ALTER, DROP
Autogenerate 컬렉션 타입(SET, MULTISET, SEQUENCE) 포함
트랜잭션 DDL CUBRID는 DDL을 자동 커밋

DML 확장

기능 상태 비고
ON DUPLICATE KEY UPDATE sqlalchemy_cubrid.insert()를 통해
MERGE sqlalchemy_cubrid.merge()를 통해
REPLACE INTO sqlalchemy_cubrid.replace()를 통해
GROUP_CONCAT
TRUNCATE TABLE 오토커밋 감지
FOR UPDATE OF 절 포함
재귀 CTE WITH RECURSIVE (CUBRID 11.x+)
윈도우 함수 ROW_NUMBER, RANK, LAG, LEAD 등
인덱스 힌트 SA with_hint() / suffix_with()를 통해

알려진 한계

기능 상태 비고
JSON 타입 v1.2.0부터, CUBRID ≥ 10.2 필요
네이티브 Enum 네이티브 ENUM('a','b') DDL (10.2+ 검증)
Interval 타입 CUBRID 미지원
RETURNING 절 INSERT/UPDATE/DELETE ... RETURNING 미지원
BOOLEAN ⚠️ SMALLINT(0/1)로 매핑 — 네이티브 불리언 없음
시퀀스 CUBRID는 AUTO_INCREMENT만 사용
CHECK 제약 리플렉션 get_check_constraints()가 빈 리스트 반환
멀티 스키마 CUBRID는 단일 스키마 모델
RELEASE SAVEPOINT no-op (CUBRID 미지원)
Lateral 조인 CUBRID에 LATERAL 서브쿼리 지원 없음
전문 검색 MATCH … AGAINST 구문 없음
비동기 DBAPI pycubrid.aio 비동기 드라이버 경유(cubrid+aiopycubrid://), pycubrid >= 1.2.0,<2.0 필요

타입 매핑

선언/컴파일 타입과 리플렉트 타입은 동일하지 않습니다. REAL, MONETARY, OBJECT는 올바르게 컴파일되고 모델에 선언할 수 있지만 dialect.ischema_names에 없어서 리플렉션이 자동으로 매핑하지 않습니다.

CUBRID 타입 SQLAlchemy 타입 Python 타입 리플렉션
INTEGER sa.Integer int
BIGINT sa.BigInteger int
SMALLINT sa.SmallInteger int
FLOAT sa.Float float
REAL REAL float ❌ 선언/컴파일 전용
DOUBLE sa.Float float
NUMERIC / DECIMAL sa.Numeric decimal.Decimal
MONETARY MONETARY float ❌ 선언/컴파일 전용
CHAR sa.CHAR str
VARCHAR sa.String str
NCHAR NCHAR str
NVARCHAR NVARCHAR str
STRING STRING str
DATE sa.Date datetime.date
TIME sa.Time datetime.time
DATETIME sa.DateTime datetime.datetime
TIMESTAMP sa.TIMESTAMP datetime.datetime
BIT BIT bytes
BLOB sa.LargeBinary bytes
CLOB CLOB str
SET SET 컬렉션
MULTISET MULTISET 컬렉션
SEQUENCE SEQUENCE 컬렉션
OBJECT OBJECT OID 참조 ❌ 선언/컴파일 전용

CI 매트릭스

차원 PR / push 나이틀리 + 태그 + dispatch
오프라인 테스트 Python 3.10, 3.11, 3.12, 3.13, 3.14 동일
통합 테스트 Python {3.10, 3.14} × CUBRID {10.2, 11.0, 11.2, 11.4} = 8잡 Python {3.10, 3.11, 3.12, 3.13, 3.14} × CUBRID {10.2, 11.0, 11.2, 11.4} = 20잡

5 × 4 전체 통합 매트릭스는 .github/workflows/integration-full.yml이 나이틀리 일정, 태그 릴리스, workflow_dispatch 요청 시 실행합니다.

테스트 커버리지

지표
오프라인 테스트 619
통합 테스트 동기 35 + 비동기 16
라인 커버리지 오프라인 ~98.26%
커버리지 하한 95% (CI 강제)

참고: 연결 가이드 · 타입 시스템 · 기능 지원 · 드라이버 호환성 · 변경 이력