Skip to content

v1.6.0 — Reflection Hardening & SA 2.2 Compat

Choose a tag to compare

@yeongseon yeongseon released this 18 Jul 12:19
· 251 commits to main since this release

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-existent db_constraint system view (verified against CUBRID 10.1/11.2/11.4 official manuals — no such view exists). PK constraint names were always None in 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 via SHOW INDEXES as the primary path. DDL regex retained as fallback. Matches the proven get_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_type private API insulation: Added try/except AttributeError guard around element._clone(). Fallback constructs a fresh BindParameter if SA removes/renames _clone() in a future release.
  • SA 2.2 canary: CI job bumped to sqlalchemy>=2.2.0b1 with continue-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