Skip to content

v1.4.0

Choose a tag to compare

@yeongseon yeongseon released this 20 Apr 04:16
· 312 commits to main since this release

[1.4.0] - 2026-04-20

Added

  • SQLAlchemy 2.2 compatibility shim — sqlalchemy_cubrid/_compat.py insulates compiler from SA private API changes (is_literal_value, bind_with_type, for_update_arg, limit_clause, offset_clause). bind_with_type now preserves expanding/literal_execute/isoutparam flags; is_literal_value handles visitors.Visitable instances (Oracle post-review fixes) (#142)
  • Alembic safety checklist + advisory CLI — docs/ALEMBIC.md adds Pre-Migration Checklist, Pre-Deploy Sequence, and Rollback Template; scripts/alembic_safety_check.py provides advisory detection for non-transactional DDL risks (#144)
  • Compiler benchmark baseline — scripts/bench_compile.py per-construct timing baseline. Baselines: SELECT+LIMIT ~178µs, INSERT ~129µs, INSERT ON DUPLICATE KEY UPDATE ~234µs (1.8× simple INSERT due to replacement_traverse overhead), SELECT FOR UPDATE ~153µs (#145)
  • QueuePool concurrency stress tests — 6 tests covering sync concurrent checkouts within pool_size, overflow burst absorption with barrier sync, pool_timeout exhaustion, pool_recycle aged-connection replacement, async gather within pool_size, async overflow burst

Fixed

  • pycubrid dependency pin — pycubrid>=1.2.0,<2.0 (was missing upper bound) (#143)
  • F401 lint regression — removed unused CubridDialect import in test/test_logging.py

Deferred

  • SA 2.2 compatibility — remains pinned to <2.2 per existing limitation; the compat shim prepares the codebase for the future bump but does not lift the pin