Skip to content

2.0.25

Compare
Choose a tag to compare
@sqla-tester sqla-tester released this 03 Jan 02:22
· 331 commits to main since this release

2.0.25

Released: January 2, 2024

orm

  • [orm] [usecase] Added preliminary support for Python 3.12 pep-695 type alias structures,
    when resolving custom type maps for ORM Annotated Declarative mappings.

    References: #10807

  • [orm] [bug] Fixed issue where when making use of the
    _orm.relationship.post_update feature at the same time as using
    a mapper version_id_col could lead to a situation where the second UPDATE
    statement emitted by the post-update feature would fail to make use of the
    correct version identifier, assuming an UPDATE was already emitted in that
    flush which had already bumped the version counter.

    References: #10800

  • [orm] [bug] Fixed issue where ORM Annotated Declarative would mis-interpret the left
    hand side of a relationship without any collection specified as
    uselist=True if the left type were given as a class and not a string,
    without using future-style annotations.

    References: #10815

sql

  • [sql] [bug] Improved compilation of _sql.any_() / _sql.all_() in the
    context of a negation of boolean comparison, will now render NOT (expr)
    rather than reversing the equality operator to not equals, allowing
    finer-grained control of negations for these non-typical operators.

    References: #10817

typing

  • [typing] [bug] Fixed regressions caused by typing added to the sqlalchemy.sql.functions
    module in version 2.0.24, as part of #6810:

    -   Further enhancements to pep-484 typing to allow SQL functions from
        `_sql.func` derived elements to work more effectively with ORM-mapped
        attributes ([#10801](https://www.sqlalchemy.org/trac/ticket/10801))
    
    -   Fixed the argument types passed to functions so that literal expressions
        like strings and ints are again interpreted correctly ([#10818](https://www.sqlalchemy.org/trac/ticket/10818))
    

    References: #10801, #10818

asyncio

  • [asyncio] [bug] Fixed critical issue in asyncio version of the connection pool where
    calling _asyncio.AsyncEngine.dispose() would produce a new connection
    pool that did not fully re-establish the use of asyncio-compatible mutexes,
    leading to the use of a plain threading.Lock() which would then cause
    deadlocks in an asyncio context when using concurrency features like
    asyncio.gather().

    This change is also backported to: 1.4.51

    References: #10813

oracle

  • [oracle] [asyncio] Added support for oracledb in asyncio mode, using the newly released
    version of the oracledb DBAPI that includes asyncio support. For the
    2.0 series, this is a preview release, where the current implementation
    does not yet have include support for
    _asyncio.AsyncConnection.stream(). Improved support is planned for
    the 2.1 release of SQLAlchemy.

    References: #10679