github sqlalchemy/sqlalchemy rel_1_4_13
1.4.13

latest releases: rel_2_0_30, rel_2_0_29, rel_2_0_28...
3 years ago

1.4.13

Released: May 3, 2021

orm

  • [orm] [bug] [regression] Fixed regression in selectinload loader strategy that would cause it to
    cache its internal state incorrectly when handling relationships that join
    across more than one column, such as when using a composite foreign key.
    The invalid caching would then cause other unrelated loader operations to
    fail.

    References: #6410

  • [orm] [bug] [regression] Fixed regression where _orm.Query.filter_by() would not work if the
    lead entity were a SQL function or other expression derived from the
    primary entity in question, rather than a simple entity or column of that
    entity. Additionally, improved the behavior of
    _sql.Select.filter_by() overall to work with column expressions even
    in a non-ORM context.

    References: #6414

  • [orm] [bug] [regression] Fixed regression where using _orm.selectinload() and
    _orm.subqueryload() to load a two-level-deep path would lead to an
    attribute error.

    References: #6419

  • [orm] [bug] [regression] Fixed regression where using the _orm.noload() loader strategy in
    conjunction with a "dynamic" relationship would lead to an attribute error
    as the noload strategy would attempt to apply itself to the dynamic loader.

    References: #6420

engine

  • [engine] [bug] [regression] Restored a legacy transactional behavior that was inadvertently removed
    from the _engine.Connection as it was never tested as a known use
    case in previous versions, where calling upon the
    _engine.Connection.begin_nested() method, when no transaction is
    present, does not create a SAVEPOINT at all and instead starts an outer
    transaction, returning a RootTransaction object instead of a
    NestedTransaction object. This RootTransaction then
    will emit a real COMMIT on the database connection when committed.
    Previously, the 2.0 style behavior was present in all cases that would
    autobegin a transaction but not commit it, which is a behavioral change.

    When using a :term:2.0 style connection object, the behavior is unchanged
    from previous 1.4 versions; calling _future.Connection.begin_nested()
    will "autobegin" the outer transaction if not already present, and then as
    instructed emit a SAVEPOINT, returning the NestedTransaction
    object. The outer transaction is committed by calling upon
    _future.Connection.commit(), as is "commit-as-you-go" style usage.

    Unknown interpreted text role "term".

    In non-"future" mode, while the old behavior is restored, it also
    emits a 2.0 deprecation warning as this is a legacy behavior.

    References: #6408

asyncio

  • [asyncio] [bug] [regression] Fixed a regression introduced by #6337 that would create an
    asyncio.Lock which could be attached to the wrong loop when
    instantiating the async engine before any asyncio loop was started, leading
    to an asyncio error message when attempting to use the engine under certain
    circumstances.

    References: #6409

postgresql

  • [postgresql] [usecase] Add support for server side cursors in the pg8000 dialect for PostgreSQL.
    This allows use of the
    Connection.execution_options.stream_results option.

    References: #6198

Don't miss a new sqlalchemy release

NewReleases is sending notifications on new releases.