Skip to content

1.4.36

Choose a tag to compare

@sqla-tester sqla-tester released this 26 Apr 21:11
· 3481 commits to main since this release

1.4.36

Released: April 26, 2022

orm

  • [orm] [bug] [regression] Fixed regression where the change made for #7861, released in
    version 1.4.33, that brought the Insert construct to be partially
    recognized as an ORM-enabled statement did not properly transfer the
    correct mapper / mapped table state to the Session, causing the
    Session.get_bind() method to fail for a Session that was
    bound to engines and/or connections using the Session.binds
    parameter.

    References: #7936

orm declarative

  • [orm] [declarative] [bug] Modified the DeclarativeMeta metaclass to pass cls.__dict__
    into the declarative scanning process to look for attributes, rather than
    the separate dictionary passed to the type's __init__() method. This
    allows user-defined base classes that add attributes within an
    __init_subclass__() to work as expected, as __init_subclass__() can
    only affect the cls.__dict__ itself and not the other dictionary. This
    is technically a regression from 1.3 where __dict__ was being used.

    References: #7900

engine

  • [engine] [bug] Fixed a memory leak in the C extensions which could occur when calling upon
    named members of Row when the member does not exist under Python
    3; in particular this could occur during NumPy transformations when it
    attempts to call members such as .__array__, but the issue was
    surrounding any AttributeError thrown by the Row object. This
    issue does not apply to version 2.0 which has already transitioned to
    Cython. Thanks much to Sebastian Berg for identifying the problem.

    References: #7875

  • [engine] [bug] Added a warning regarding a bug which exists in the Result.columns()
    method when passing 0 for the index in conjunction with a Result
    that will return a single ORM entity, which indicates that the current
    behavior of Result.columns() is broken in this case as the
    Result object will yield scalar values and not Row
    objects. The issue will be fixed in 2.0, which would be a
    backwards-incompatible change for code that relies on the current broken
    behavior. Code which wants to receive a collection of scalar values should
    use the Result.scalars() method, which will return a new
    ScalarResult object that yields non-row scalar objects.

    References: #7953

schema

  • [schema] [bug] Fixed bug where ForeignKeyConstraint naming conventions using the
    referred_column_0 naming convention key would not work if the foreign
    key constraint were set up as a ForeignKey object rather than an
    explicit ForeignKeyConstraint object. As this change makes use of
    a backport of some fixes from version 2.0, an additional little-known
    feature that has likely been broken for many years is also fixed which is
    that a ForeignKey object may refer to a referred table by name of
    the table alone without using a column name, if the name of the referent
    column is the same as that of the referred column.

    The referred_column_0 naming convention key was previously not tested
    with the ForeignKey object, only ForeignKeyConstraint,
    and this bug reveals that the feature has never worked correctly unless
    ForeignKeyConstraint is used for all FK constraints. This bug
    traces back to the original introduction of the feature introduced for
    #3989.

    References: #7958

asyncio

  • [asyncio] [bug] Repaired handling of contextvar.ContextVar objects inside of async
    adapted event handlers. Previously, values applied to a ContextVar
    would not be propagated in the specific case of calling upon awaitables
    inside of non-awaitable code.

    References: #7937

postgresql

  • [postgresql] [bug] Fixed bug in ARRAY datatype in combination with Enum on
    PostgreSQL where using the .any() or .all() methods to render SQL
    ANY() or ALL(), given members of the Python enumeration as arguments, would
    produce a type adaptation failure on all drivers.

    References: #6515

  • [postgresql] [bug] Implemented _postgresql.UUID.python_type attribute for the
    PostgreSQL _postgresql.UUID type object. The attribute will return
    either str or uuid.UUID based on the
    _postgresql.UUID.as_uuid parameter setting. Previously, this
    attribute was unimplemented. Pull request courtesy Alex Grönholm.

    References: #7943

  • [postgresql] [bug] Fixed an issue in the psycopg2 dialect when using the
    create_engine.pool_pre_ping parameter which would cause
    user-configured AUTOCOMMIT isolation level to be inadvertently reset by
    the "ping" handler.

    References: #7930

mysql

  • [mysql] [bug] [regression] Fixed a regression in the untested MySQL PyODBC dialect caused by the fix
    for #7518 in version 1.4.32 where an argument was being propagated
    incorrectly upon first connect, leading to a TypeError.

    References: #7871

tests

  • [tests] [bug] For third party dialects, repaired a missing requirement for the
    SimpleUpdateDeleteTest suite test which was not checking for a working
    "rowcount" function on the target dialect.

    References: #7919