github sqlalchemy/sqlalchemy rel_1_1_6


Released: February 28, 2017


  • [orm] [bug] Addressed some long unattended performance concerns within the joined
    eager loader query construction system that have accumulated since
    earlier versions as a result of increased abstraction. The use of ad-
    hoc AliasedClass objects per query, which produces lots of
    column lookup overhead each time, has been replaced with a cached
    approach that makes use of a small pool of AliasedClass
    objects that are reused between invocations of joined eager loading.
    Some mechanics involving eager join path construction have also been
    optimized. Callcounts for an end-to-end query construction + single
    row fetch test with a worst-case joined loader scenario have been
    reduced by about 60% vs. 1.1.5 and 42% vs. that of 0.8.6.

    References: #3915

  • [orm] [bug] Fixed a major inefficiency in the "eager_defaults" feature whereby
    an unnecessary SELECT would be emitted for column values where the
    ORM had explicitly inserted NULL, corresponding to attributes that
    were unset on the object but did not have any server default
    specified, as well as expired attributes on update that nevertheless
    had no server onupdate set up. As these columns are not part of the
    RETURNING that eager_defaults tries to use, they should not be
    post-SELECTed either.

    References: #3909

  • [orm] [bug] Fixed two closely related bugs involving the mapper eager_defaults
    flag in conjunction with single-table inheritance; one where the
    eager defaults logic would inadvertently try to access a column
    that's part of the mapper's "exclude_properties" list (used by
    Declarative with single table inheritance) during the eager defaults
    fetch, and the other where the full load of the row in order to
    fetch the defaults would fail to use the correct inheriting mapper.

    References: #3908

  • [orm] [bug] Fixed bug first introduced in 0.9.7 as a result of #3106
    which would cause an incorrect query in some forms of multi-level
    subqueryload against aliased entities, with an unnecessary extra
    FROM entity in the innermost subquery.

    References: #3893

orm declarative

  • [bug] [declarative] [orm] Fixed bug where the "automatic exclude" feature of declarative that
    ensures a column local to a single table inheritance subclass does
    not appear as an attribute on other derivations of the base would
    not take effect for multiple levels of subclassing from the base.

    References: #3895


  • [sql] [bug] Fixed bug whereby the DDLEvents.column_reflect() event would not
    allow a non-textual expression to be passed as the value of the
    "default" for the new column, such as a FetchedValue
    object to indicate a generic triggered default or a
    sql.expression.text() construct. Clarified the documentation
    in this regard as well.

    References: #3905


  • [postgresql] [bug] Added regular expressions for the "IMPORT FOREIGN SCHEMA",
    "REFRESH MATERIALIZED VIEW" PostgreSQL statements so that they
    autocommit when invoked via a connection or engine without
    an explicit transaction. Pull requests courtesy Frazer McLean
    and Paweł Stiasny.

    References: #3804

  • [postgresql] [bug] Fixed bug in PostgreSQL ExcludeConstraint where the
    "whereclause" and "using" parameters would not be copied during an
    operation like Table.tometadata().

    References: #3900


  • [mysql] [bug] Added new MySQL 8.0 reserved words to the MySQL dialect for proper
    quoting. Pull request courtesy Hanno Schlichting.


  • [mssql] [bug] Added a version check to the "get_isolation_level" feature, which is
    invoked upon first connect, so that it skips for SQL Server version
    2000, as the necessary system view is not available prior to SQL Server

    References: #3898


  • [bug] [ext] Fixed bug in new sqlalchemy.ext.indexable extension
    where setting of a property that itself refers to another property
    would fail.

    References: #3901

  • [ext] [feature] Added baked.Result.scalar() and baked.Result.count()
    to the "baked" query system.

    References: #3896

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