v1.6.0 — Reflection Hardening & SA 2.2 Compat
Summary
v1.6.0 ships reflection hardening and SQLAlchemy 2.2 forward-compatibility from Sprint 2.
Changes
Reflection Hardening (#120, PR #236)
- Fixed latent PK constraint name bug:
get_pk_constraint()queried the non-existentdb_constraintsystem view (verified against CUBRID 10.1/11.2/11.4 official manuals — no such view exists). PK constraint names were alwaysNonein production. Now targets_db_index(is_primary_key = 1), the authoritative system catalog. - Hardened UNIQUE constraint reflection:
get_unique_constraints()now queries_db_index(is_unique = 1, excluding PK/FK auto-indexes) and resolves column names viaSHOW INDEXESas the primary path. DDL regex retained as fallback. Matches the provenget_indexes()two-query pattern. - FK reflection: Extracted
_get_foreign_keys_from_ddl()as a standalone, testable helper. CUBRID system views expose no FK referenced-table/column metadata, so DDL parsing remains the sole FK reflection path.
SA 2.2 Compatibility (#231, PR #235)
bind_with_typeprivate API insulation: Addedtry/except AttributeErrorguard aroundelement._clone(). Fallback constructs a freshBindParameterif SA removes/renames_clone()in a future release.- SA 2.2 canary: CI job bumped to
sqlalchemy>=2.2.0b1withcontinue-on-error: true.
Oracle post-implementation review: PASS
Test Results
- 646 offline tests pass (was 641 before Sprint 2)
- 97% dialect.py coverage
- Integration tests pass across CUBRID 10.2–11.4 × Python 3.10–3.14
Ultraworked with Sisyphus