github sqlalchemy/sqlalchemy rel_1_3_13
1.3.13

1.3.13

Released: January 22, 2020

orm

  • [orm] [bug] [engine] Added test support and repaired a wide variety of unnecessary reference
    cycles created for short-lived objects, mostly in the area of ORM queries.
    Thanks much to Carson Ip for the help on this.

    References: #5050, #5056, #5071

  • [orm] [bug] Fixed regression in loader options introduced in 1.3.0b3 via #4468
    where the ability to create a loader option using
    PropComparator.of_type() targeting an aliased entity that is an
    inheriting subclass of the entity which the preceding relationship refers
    to would fail to produce a matching path. See also #5082 fixed
    in this same release which involves a similar kind of issue.

    References: #5107

  • [orm] [bug] Fixed regression in joined eager loading introduced in 1.3.0b3 via
    #4468 where the ability to create a joined option across a
    with_polymorphic() into a polymorphic subclass using
    RelationshipProperty.of_type() and then further along regular mapped
    relationships would fail as the polymorphic subclass would not add itself
    to the load path in a way that could be located by the loader strategy. A
    tweak has been made to resolve this scenario.

    References: #5082

  • [orm] [performance] Identified a performance issue in the system by which a join is constructed
    based on a mapped relationship. The clause adaption system would be used
    for the majority of join expressions including in the common case where no
    adaptation is needed. The conditions under which this adaptation occur
    have been refined so that average non-aliased joins along a simple
    relationship without a "secondary" table use about 70% less function calls.

  • [orm] [bug] Repaired a warning in the ORM flush process that was not covered by test
    coverage when deleting objects that use the "version_id" feature. This
    warning is generally unreachable unless using a dialect that sets the
    "supports_sane_rowcount" flag to False, which is not typically the case
    however is possible for some MySQL configurations as well as older Firebird
    drivers, and likely some third party dialects.

    References: #5068

  • [orm] [bug] Fixed bug where usage of joined eager loading would not properly wrap the
    query inside of a subquery when Query.group_by() were used against
    the query. When any kind of result-limiting approach is used, such as
    DISTINCT, LIMIT, OFFSET, joined eager loading embeds the row-limited query
    inside of a subquery so that the collection results are not impacted. For
    some reason, the presence of GROUP BY was never included in this criterion,
    even though it has a similar effect as using DISTINCT. Additionally, the
    bug would prevent using GROUP BY at all for a joined eager load query for
    most database platforms which forbid non-aggregated, non-grouped columns
    from being in the query, as the additional columns for the joined eager
    load would not be accepted by the database.

    References: #5065

engine

  • [engine] [bug] Fixed issue where the collection of value processors on a
    Compiled object would be mutated when "expanding IN" parameters
    were used with a datatype that has bind value processors; in particular,
    this would mean that when using statement caching and/or baked queries, the
    same compiled._bind_processors collection would be mutated concurrently.
    Since these processors are the same function for a given bind parameter
    namespace every time, there was no actual negative effect of this issue,
    however, the execution of a Compiled object should never be
    causing any changes in its state, especially given that they are intended
    to be thread-safe and reusable once fully constructed.

    References: #5048

sql

  • [sql] [usecase] A function created using GenericFunction can now specify that the
    name of the function should be rendered with or without quotes by assigning
    the quoted_name construct to the .name element of the object.
    Prior to 1.3.4, quoting was never applied to function names, and some
    quoting was introduced in #4467 but no means to force quoting for
    a mixed case name was available. Additionally, the quoted_name
    construct when used as the name will properly register its lowercase name
    in the function registry so that the name continues to be available via the
    func. registry.

    References: #5079

postgresql

  • [postgresql] [bug] Fixed issue where the PostgreSQL dialect would fail to parse a reflected
    CHECK constraint that was a boolean-valued function (as opposed to a
    boolean-valued expression).

    References: #5039

  • [postgresql] [tests] Improved detection of two phase transactions requirement for the PostgreSQL
    database by testing that max_prepared_transactions is set to a value
    greater than 0. Pull request courtesy Federico Caselli.

    References: #5057

  • [postgresql] [usecase] Added support for prefixes to the CTE construct, to allow
    support for Postgresql 12 "MATERIALIZED" and "NOT MATERIALIZED" phrases.
    Pull request courtesy Marat Sharafutdinov.

    References: #5040

mssql

  • [mssql] [bug] Fixed issue where a timezone-aware datetime value being converted to
    string for use as a parameter value of a mssql.DATETIMEOFFSET
    column was omitting the fractional seconds.

    References: #5045

misc

  • [bug] [ext] Fixed bug in sqlalchemy.ext.serializer where a unique
    BindParameter object could conflict with itself if it were
    present in the mapping itself, as well as the filter condition of the
    query, as one side would be used against the non-deserialized version and
    the other side would use the deserialized version. Logic is added to
    BindParameter similar to its "clone" method which will uniquify
    the parameter name upon deserialize so that it doesn't conflict with its
    original.

    References: #5086

  • [bug] [tests] Fixed a few test failures which would occur on Windows due to SQLite file
    locking issues, as well as some timing issues in connection pool related
    tests; pull request courtesy Federico Caselli.

    References: #4946

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