Released: August 17, 2020
[orm] [usecase] Adjusted the workings of the
accessor to represent the attributes in the order that they are located in
a deterministic way, assuming the use of Python 3.6 or higher which
maintains the sorting order of class attributes based on how they were
declared. This sorting is not guaranteed to match the declared order of
attributes in all cases however; see the method documentation for the exact
[declarative] [orm] [usecase] The name of the virtual column used when using the
_declarative.ConcreteBaseclasses can now be customized, to allow
for models that have a column that is actually named
request courtesy Jesse-Bakker.
[sql] [bug] Repaired an issue where the "ORDER BY" clause rendering a label name rather
than a complete expression, which is particularly important for SQL Server,
would fail to occur if the expression were enclosed in a parenthesized
grouping in some cases. This case has been added to test support. The
change additionally adjusts the "automatically add ORDER BY columns when
DISTINCT is present" behavior of ORM query, deprecated in 1.4, to more
accurately detect column expressions that are already present.
[sql] [bug] [datatypes] The
LookupErrormessage will now provide the user with up to four
possible values that a column is constrained to via the
Values longer than 11 characters will be truncated and replaced with
ellipses. Pull request courtesy Ramon Williams.
[sql] [bug] Fixed issue where the
feature would not take effect when the
function function for a
_schema.Sequencewere used in the
_schema.Column.server_defaultparameter and the create table
DDL were emitted.
[postgresql] [bug] Fixed issue where the return type for the various RANGE comparison
operators would itself be the same RANGE type rather than BOOLEAN, which
would cause an undesirable result in the case that a
TypeDecoratorthat defined result-processing behavior were in
use. Pull request courtesy Jim Bosch.
[mysql] [usecase] The MySQL dialect will render FROM DUAL for a SELECT statement that has no
FROM clause but has a WHERE clause. This allows things like "SELECT 1 WHERE
EXISTS (subquery)" kinds of queries to be used as well as other use cases.
[mysql] [bug] Fixed an issue where CREATE TABLE statements were not specifying the
COLLATE keyword correctly.
[mysql] [bug] Added MariaDB code 1927 to the list of "disconnect" codes, as recent
MariaDB versions apparently use this code when the database server was
[sqlite] [bug] [mssql] [reflection] Applied a sweep through all included dialects to ensure names that contain
single or double quotes are properly escaped when querying system tables,
Inspectormethods that accept object names as an argument
(e.g. table names, view names, etc). SQLite and MSSQL contained two
quoting issues that were repaired.
[mssql] [bug] [sql] Fixed bug where the mssql dialect incorrectly escaped object names that
contained ']' character(s).