1.4.37
1.4.37
Released: May 31, 2022
orm
-
[orm] [bug] Fixed issue where using a
_orm.column_property()
construct containing
a subquery against an already-mapped column attribute would not correctly
apply ORM-compilation behaviors to the subquery, including that the "IN"
expression added for a single-table inherits expression would fail to be
included.References: #8064
-
[orm] [bug] Fixed issue where ORM results would apply incorrect key names to the
returnedRow
objects in the case where the set of columns to be
selected were changed, such as when using
Select.with_only_columns()
.References: #8001
-
[orm] [bug] [oracle] [postgresql] Fixed bug, likely a regression from 1.3, where usage of column names that
require bound parameter escaping, more concretely when using Oracle with
column names that require quoting such as those that start with an
underscore, or in less common cases with some PostgreSQL drivers when using
column names that contain percent signs, would cause the ORM versioning
feature to not work correctly if the versioning column itself had such a
name, as the ORM assumes certain bound parameter naming conventions that
were being interfered with via the quotes. This issue is related to
#8053 and essentially revises the approach towards fixing this,
revising the original issue #5653 that created the initial
implementation for generalized bound-parameter name quoting.References: #8056
engine
-
[engine] [bug] [tests] Fixed issue where support for logging "stacklevel" implemented in
#7612 required adjustment to work with recently released Python
3.11.0b1, also repairs the unit tests which tested this feature.References: #8019
sql
-
[sql] [bug] [postgresql] [sqlite] Fixed bug where the PostgreSQL
_postgresql.Insert.on_conflict_do_update()
method and the SQLite
_sqlite.Insert.on_conflict_do_update()
method would both fail to
correctly accommodate a column with a separate ".key" when specifying the
column using its key name in the dictionary passed to
_postgresql.Insert.on_conflict_do_update.set_
, as well as if
the_postgresql.Insert.excluded
collection were used as the
dictionary directly.References: #8014
-
[sql] [bug] An informative error is raised for the use case where
Insert.from_select()
is being passed a "compound select" object such
as a UNION, yet the INSERT statement needs to append additional columns to
support Python-side or explicit SQL defaults from the table metadata. In
this case a subquery of the compound object should be passed.References: #8073
-
[sql] [bug] Fixed an issue where using
bindparam()
with no explicit data or type
given could be coerced into the incorrect type when used in expressions
such as when usingARRAY.Comparator.any()
and
ARRAY.Comparator.all()
.References: #7979
-
[sql] [bug] An informative error is raised if two individual
BindParameter
objects share the same name, yet one is used within an "expanding" context
(typically an IN expression) and the other is not; mixing the same name in
these two different styles of usage is not supported and typically the
expanding=True
parameter should be set on the parameters that are to
receive list values outside of IN expressions (whereexpanding
is set
by default).References: #8018
mysql
-
[mysql] [bug] Further adjustments to the MySQL PyODBC dialect to allow for complete
connectivity, which was previously still not working despite fixes in
#7871.References: #7966
-
[mysql] [bug] Added disconnect code for MySQL error 4031, introduced in MySQL >= 8.0.24,
indicating connection idle timeout exceeded. In particular this repairs an
issue where pre-ping could not reconnect on a timed-out connection. Pull
request courtesy valievkarim.References: #8036
mssql
-
[mssql] [bug] Fix issue where a password with a leading "{" would result in login failure.
References: #8062
-
[mssql] [bug] [reflection] Explicitly specify the collation when reflecting table columns using
MSSQL to prevent "collation conflict" errors.References: #8035
oracle
-
[oracle] [usecase] Added two new error codes for Oracle disconnect handling to support early
testing of the new "python-oracledb" driver released by Oracle.References: #8066
-
[oracle] [bug] Fixed SQL compiler issue where the "bind processing" function for a bound
parameter would not be correctly applied to a bound value if the bound
parameter's name were "escaped". Concretely, this applies, among other
cases, to Oracle when aColumn
has a name that itself requires
quoting, such that the quoting-required name is then used for the bound
parameters generated within DML statements, and the datatype in use
requires bind processing, such as theEnum
datatype.References: #8053