Path to this page:
Subject: CVS commit: pkgsrc/databases/py-sqlalchemy
From: Adam Ciarcinski
Date: 2020-02-04 17:57:21
Message id: 20200204165721.29FFEFBF4@cvs.NetBSD.org
Log Message:
py-sqlalchemy: updated to 1.3.13
1.3.13
[orm] [bug] [engine]
Added test support and repaired a wide variety of unnecessary reference cycles \
created for short-lived objects, mostly in the area of ORM queries. Thanks much \
to Carson Ip for the help on this.
[orm] [bug]
Fixed regression in loader options introduced in 1.3.0b3 via 4468 where the \
ability to create a loader option using PropComparator.of_type() targeting an \
aliased entity that is an inheriting subclass of the entity which the preceding \
relationship refers to would fail to produce a matching path. See also 5082 \
fixed in this same release which involves a similar kind of issue.
[orm] [bug]
Fixed regression in joined eager loading introduced in 1.3.0b3 via 4468 where \
the ability to create a joined option across a with_polymorphic() into a \
polymorphic subclass using RelationshipProperty.of_type() and then further along \
regular mapped relationships would fail as the polymorphic subclass would not \
add itself to the load path in a way that could be located by the loader \
strategy. A tweak has been made to resolve this scenario.
[orm] [bug]
Repaired a warning in the ORM flush process that was not covered by test \
coverage when deleting objects that use the “version_id” feature. This \
warning is generally unreachable unless using a dialect that sets the \
“supports_sane_rowcount” flag to False, which is not typically the case \
however is possible for some MySQL configurations as well as older Firebird \
drivers, and likely some third party dialects.
[orm] [bug]
Fixed bug where usage of joined eager loading would not properly wrap the query \
inside of a subquery when Query.group_by() were used against the query. When any \
kind of result-limiting approach is used, such as DISTINCT, LIMIT, OFFSET, \
joined eager loading embeds the row-limited query inside of a subquery so that \
the collection results are not impacted. For some reason, the presence of GROUP \
BY was never included in this criterion, even though it has a similar effect as \
using DISTINCT. Additionally, the bug would prevent using GROUP BY at all for a \
joined eager load query for most database platforms which forbid non-aggregated, \
non-grouped columns from being in the query, as the additional columns for the \
joined eager load would not be accepted by the database.
[orm] [performance]
Identified a performance issue in the system by which a join is constructed \
based on a mapped relationship. The clause adaption system would be used for the \
majority of join expressions including in the common case where no adaptation is \
needed. The conditions under which this adaptation occur have been refined so \
that average non-aliased joins along a simple relationship without a \
“secondary” table use about 70% less function calls.
[engine] [bug]
Fixed issue where the collection of value processors on a Compiled object would \
be mutated when “expanding IN” parameters were used with a datatype that has \
bind value processors; in particular, this would mean that when using statement \
caching and/or baked queries, the same compiled._bind_processors collection \
would be mutated concurrently. Since these processors are the same function for \
a given bind parameter namespace every time, there was no actual negative effect \
of this issue, however, the execution of a Compiled object should never be \
causing any changes in its state, especially given that they are intended to be \
thread-safe and reusable once fully constructed.
[sql] [usecase]
A function created using GenericFunction can now specify that the name of the \
function should be rendered with or without quotes by assigning the quoted_name \
construct to the .name element of the object. Prior to 1.3.4, quoting was never \
applied to function names, and some quoting was introduced in 4467 but no means \
to force quoting for a mixed case name was available. Additionally, the \
quoted_name construct when used as the name will properly register its lowercase \
name in the function registry so that the name continues to be available via the \
func. registry.
[postgresql] [usecase]
Added support for prefixes to the CTE construct, to allow support for Postgresql \
12 “MATERIALIZED” and “NOT MATERIALIZED” phrases. Pull request courtesy \
Marat Sharafutdinov.
[postgresql] [bug]
Fixed issue where the PostgreSQL dialect would fail to parse a reflected CHECK \
constraint that was a boolean-valued function (as opposed to a boolean-valued \
expression).
[postgresql] [tests]
Improved detection of two phase transactions requirement for the PostgreSQL \
database by testing that max_prepared_transactions is set to a value greater \
than 0. Pull request courtesy Federico Caselli.
[mssql] [bug]
Fixed issue where a timezone-aware datetime value being converted to string for \
use as a parameter value of a mssql.DATETIMEOFFSET column was omitting the \
fractional seconds.
[bug] [ext]
Fixed bug in sqlalchemy.ext.serializer where a unique BindParameter object could \
conflict with itself if it were present in the mapping itself, as well as the \
filter condition of the query, as one side would be used against the \
non-deserialized version and the other side would use the deserialized version. \
Logic is added to BindParameter similar to its “clone” method which will \
uniquify the parameter name upon deserialize so that it doesn’t conflict with \
its original.
[bug] [tests]
Fixed a few test failures which would occur on Windows due to SQLite file \
locking issues, as well as some timing issues in connection pool related tests; \
pull request courtesy Federico Caselli.
1.3.12
[orm] [bug]
Fixed issue involving lazy="raise" strategy where an ORM delete of an \
object would raise for a simple “use-get” style many-to-one relationship \
that had lazy=”raise” configured. This is inconsistent vs. the change \
introduced in 1.3 as part of 4353, where it was established that a history \
operation that does not expect emit SQL should bypass the lazy="raise" \
check, and instead effectively treat it as lazy="raise_on_sql" for \
this case. The fix adjusts the lazy loader strategy to not raise for the case \
where the lazy load was instructed that it should not emit SQL if the object \
were not present.
[orm] [bug]
Fixed regression introduced in 1.3.0 related to the association proxy refactor \
in 4351 that prevented composite() attributes from working in terms of an \
association proxy that references them.
[orm] [bug]
Setting persistence-related flags on relationship() while also setting \
viewonly=True will now emit a regular warning, as these flags do not make sense \
for a viewonly=True relationship. In particular, the “cascade” settings have \
their own warning that is generated based on the individual values, such as \
“delete, delete-orphan”, that should not apply to a viewonly relationship. \
Note however that in the case of “cascade”, these settings are still \
erroneously taking effect even though the relationship is set up as \
“viewonly”. In 1.4, all persistence-related cascade settings will be \
disallowed on a viewonly=True relationship in order to resolve this issue.
[orm] [bug] [py3k]
Fixed issue where when assigning a collection to itself as a slice, the mutation \
operation would fail as it would first erase the assigned collection \
inadvertently. As an assignment that does not change the contents should not \
generate events, the operation is now a no-op. Note that the fix only applies to \
Python 3; in Python 2, the __setitem__ hook isn’t called in this case; \
__setslice__ is used instead which recreates the list item-by-item in all cases.
[orm] [bug]
Fixed issue where by if the “begin” of a transaction failed at the Core \
engine/connection level, such as due to network error or database is locked for \
some transactional recipes, within the context of the Session procuring that \
connection from the conneciton pool and then immediately returning it, the ORM \
Session would not close the connection despite this connection not being stored \
within the state of that Session. This would lead to the connection being \
cleaned out by the connection pool weakref handler within garbage collection \
which is an unpreferred codepath that in some special configurations can emit \
errors in standard error.
[sql] [bug]
Fixed bug where “distinct” keyword passed to select() would not treat a \
string value as a “label reference” in the same way that the \
select.distinct() does; it would instead raise unconditionally. This keyword \
argument and the others passed to select() will ultimately be deprecated for \
SQLAlchemy 2.0.
[sql] [bug]
Changed the text of the exception for “Can’t resolve label reference” to \
include other kinds of label coercions, namely that “DISTINCT” is also in \
this category under the PostgreSQL dialect.
[sqlite] [bug]
Fixed issue to workaround SQLite’s behavior of assigning “numeric” \
affinity to JSON datatypes, first described at Support for SQLite JSON Added, \
which returns scalar numeric JSON values as a number and not as a string that \
can be JSON deserialized. The SQLite-specific JSON deserializer now gracefully \
degrades for this case as an exception and bypasses deserialization for single \
numeric values, as from a JSON perspective they are already deserialized.
[mssql] [bug]
Repaired support for the mssql.DATETIMEOFFSET datatype on PyODBC, by adding \
PyODBC-level result handlers as it does not include native support for this \
datatype. This includes usage of the Python 3 “timezone” tzinfo subclass in \
order to set up a timezone, which on Python 2 makes use of a minimal backport of \
“timezone” in sqlalchemy.util.
Files: