Sourced from sqlalchemy's releases.
2.0.35
Released: September 16, 2024
orm
[orm] [bug] [typing] Fixed issue where it was not possible to use
typing.Literal
withMapped[]
on Python 3.8 and 3.9. Pull request courtesy Frazer McLean.References: #11820
[orm] [bug] Fixed issue in ORM evaluator where two datatypes being evaluated with the SQL concatenator operator would not be checked for
UnevaluatableError
based on their datatype; this missed the case of_postgresql.JSONB
values being used in a concatenate operation which is supported by PostgreSQL as well as how SQLAlchemy renders the SQL for this operation, but does not work at the Python level. By implementingUnevaluatableError
for this combination, ORM update statements will now fall back to "expire" when a concatenated JSON value used in a SET clause is to be synchronized to a Python object.References: #11849
[orm] [bug] An warning is emitted if
_orm.joinedload()
or_orm.subqueryload()
are used as a top level option against a statement that is not a SELECT statement, such as with aninsert().returning()
. There are no JOINs in INSERT statements nor is there a "subquery" that can be repurposed for subquery eager loading, and for UPDATE/DELETE joinedload does not support these either, so it is never appropriate for this use to pass silently.References: #11853
[orm] [bug] Fixed issue where using loader options such as
_orm.selectinload()
with additional criteria in combination with ORM DML such as_sql.insert()
with RETURNING would not correctly set up internal contexts required for caching to work correctly, leading to incorrect results.References: #11855
mysql
- [mysql] [bug] Fixed issue in mariadbconnector dialect where query string arguments that weren't checked integer or boolean arguments would be ignored, such as string arguments like
unix_socket
, etc. As part of this change, the argument parsing for particular elements such asclient_flags
,compress
,local_infile
has been made more consistent across all
... (truncated)