github sqlalchemy/sqlalchemy rel_1_3_17


Released: May 13, 2020


  • [orm] [bug] Fixed bug where using with_polymorphic() as the target of a join via
    RelationshipComparator.of_type() on a mapper that already has a
    subquery-based with_polymorphic setting that's equivalent to the one
    requested would not correctly alias the ON clause in the join.

    References: #5288

  • [orm] [bug] Fixed issue in the area of where loader options such as selectinload()
    interact with the baked query system, such that the caching of a query is
    not supposed to occur if the loader options themselves have elements such
    as with_polymorphic() objects in them that currently are not
    cache-compatible. The baked loader could sometimes not fully invalidate
    itself in these some of these scenarios leading to missed eager loads.

    References: #5303

  • [orm] [bug] Modified the internal "identity set" implementation, which is a set that
    hashes objects on their id() rather than their hash values, to not actually
    call the __hash__() method of the objects, which are typically
    user-mapped objects. Some methods were calling this method as a side
    effect of the implementation.

    References: #5304

  • [orm] [bug] An informative error message is raised when an ORM many-to-one comparison
    is attempted against an object that is not an actual mapped instance.
    Comparisons such as those to scalar subqueries aren't supported;
    generalized comparison with subqueries is better achieved using

    References: #5269

  • [orm] [usecase] Added an accessor ColumnProperty.Comparator.expressions which
    provides access to the group of columns mapped under a multi-column
    ColumnProperty attribute.

    References: #5262

  • [orm] [usecase] Introduce _orm.relationship.sync_backref flag in a relationship
    to control if the synchronization events that mutate the in-Python
    attributes are added. This supersedes the previous change #5149,
    which warned that viewonly=True relationship target of a
    back_populates or backref configuration would be disallowed.

    References: #5237


  • [engine] [bug] Fixed fairly critical issue where the DBAPI connection could be returned to
    the connection pool while still in an un-rolled-back state. The reset agent
    responsible for rolling back the connection could be corrupted in the case
    that the transaction was "closed" without being rolled back or committed,
    which can occur in some scenarios when using ORM sessions and emitting
    .close() in a certain pattern involving savepoints. The fix ensures that
    the reset agent is always active.

    References: #5326


  • [schema] Add comment attribute to _schema.Column __repr__ method.

    References: #4138

  • [schema] [bug] Fixed issue where an Index that is deferred in being associated
    with a table, such as as when it contains a Column that is not
    associated with any Table yet, would fail to attach correctly if
    it also contained a non table-oriented expession.

    References: #5298

  • [schema] [bug] A warning is emitted when making use of the MetaData.sorted_tables
    attribute as well as the _schema.sort_tables() function, and the
    given tables cannot be correctly sorted due to a cyclic dependency between
    foreign key constraints. In this case, the functions will no longer sort
    the involved tables by foreign key, and a warning will be emitted. Other
    tables that are not part of the cycle will still be returned in dependency
    order. Previously, the sorted_table routines would return a collection that
    would unconditionally omit all foreign keys when a cycle was detected, and
    no warning was emitted.

    References: #5316


  • [postgresql] [usecase] Added support for columns or type ARRAY of Enum,
    JSON or _postgresql.JSONB in PostgreSQL.
    Previously a workaround was required in these use cases.

    References: #5265

  • [postgresql] [usecase] Raise an explicit exc.CompileError when adding a table with a
    column of type ARRAY of Enum configured with
    Enum.native_enum set to False when
    Enum.create_constraint is not set to False

    References: #5266


  • [mssql] [bug] [reflection] Fix a regression introduced by the reflection of computed column in
    MSSQL when using the legacy TDS version 4.2. The dialect will try
    to detect the protocol version of first connect and run in compatibility
    mode if it cannot detect it.

    References: #5255

  • [mssql] [bug] [reflection] Fix a regression introduced by the reflection of computed column in
    MSSQL when using SQL server versions before 2012, which does not support
    the concat function.

    References: #5271


  • [oracle] [bug] Some modifications to how the cx_oracle dialect sets up per-column
    outputtype handlers for LOB and numeric datatypes to adjust for potential
    changes coming in cx_Oracle 8.

    References: #5246

  • [oracle] [bug] [performance] Changed the implementation of fetching CLOB and BLOB objects to use
    cx_Oracle's native implementation which fetches CLOB/BLOB objects inline
    with other result columns, rather than performing a separate fetch. As
    always, this can be disabled by setting auto_convert_lobs to False.

    As part of this change, the behavior of a CLOB that was given a blank
    string on INSERT now returns None on SELECT, which is now consistent with
    that of VARCHAR on Oracle.

    References: #5314


  • [firebird] [change] Adjusted dialect loading for firebird:// URIs so the external
    sqlalchemy-firebird dialect will be used if it has been installed,
    otherwise fall back to the (now deprecated) internal Firebird dialect.

    References: #5278

latest releases: rel_1_3_20, rel_1_3_19, rel_1_3_18...
5 months ago