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 asNone
. 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 addedNCHAR
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 forURL
which
caused unexpected result when!=
was used in Python2, since there are no
implied relationships among the comparison operators in Python2.References: #4406