github sqlalchemy/sqlalchemy rel_1_2_19


Released: April 15, 2019

  • [bug] [orm] Fixed a regression in 1.2 due to the introduction of baked queries for
    relationship lazy loaders, where a race condition is created during the
    generation of the "lazy clause" which occurs within a memoized attribute. If
    two threads initialize the memoized attribute concurrently, the baked query
    could be generated with bind parameter keys that are then replaced with new
    keys by the next run, leading to a lazy load query that specifies the
    related criteria as None. The fix establishes that the parameter names
    are fixed before the new clause and parameter objects are generated, so that
    the names are the same every time.

    References: #4507

  • [bug] [oracle] Added support for reflection of the NCHAR datatype to the Oracle
    dialect, and added NCHAR to the list of types exported by the
    Oracle dialect.

    References: #4506

  • [bug] [examples] Fixed bug in large_resultsets example case where a re-named "id" variable
    due to code reformatting caused the test to fail. Pull request courtesy
    Matt Schuchhardt.

    References: #4528

  • [bug] [mssql] A commit() is emitted after an isolation level change to SNAPSHOT, as both
    pyodbc and pymssql open an implicit transaction which blocks subsequent SQL
    from being emitted in the current transaction.

    References: #4536

  • [bug] [engine] Comparing two objects of URL using __eq__() did not take port
    number into consideration, two objects differing only by port number were
    considered equal. Port comparison is now added in __eq__() method of
    URL, objects differing by port number are now not equal.
    Additionally, __ne__() was not implemented for URL which
    caused unexpected result when != was used in Python2, since there are no
    implied relationships among the comparison operators in Python2.

    References: #4406

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