Log message:
py-sqlalchemy: updated to 2.0.34
2.0.34
orm
[orm] [bug]
Fixed regression caused by issue 11814 which broke support for certain flavors \
of PEP 593 Annotated in the type_annotation_map when builtin types such as list, \
dict were used without an element type. While this is an incomplete style of \
typing, these types nonetheless previously would be located in the \
type_annotation_map correctly.
sqlite
[sqlite] [bug]
Fixed regression in SQLite reflection caused by 11677 which interfered with \
reflection for CHECK constraints that were followed by other kinds of \
constraints within the same table definition. Pull request courtesy Harutaka \
Kawamura.
|
Log message:
py-sqlalchemy: updated to 2.0.31
2.0.31
Released: June 18, 2024
general
[general] [bug]
Set up full Python 3.13 support to the extent currently possible, repairing \
issues within internal language helpers as well as the serializer extension \
module.
orm
[orm] [usecase]
Added missing parameter with_polymorphic.name that allows specifying the name of \
returned AliasedClass.
[orm] [bug]
Fixed issue where a MetaData collection would not be serializable, if an Enum or \
Boolean datatype were present which had been adapted. This specific scenario in \
turn could occur when using the Enum or Boolean within ORM Annotated Declarative \
form where type objects frequently get copied.
[orm] [bug]
Fixed issue where the selectinload() and subqueryload() loader options would \
fail to take effect when made against an inherited subclass that itself included \
a subclass-specific Mapper.with_polymorphic setting.
[orm] [bug]
Fixed very old issue involving the joinedload.innerjoin parameter where making \
use of this parameter mixed into a query that also included joined eager loads \
along a self-referential or other cyclical relationship, along with complicating \
factors like inner joins added for secondary tables and such, would have the \
chance of splicing a particular inner join to the wrong part of the query. \
Additional state has been added to the internal method that does this splice to \
make a better decision as to where splicing should proceed.
[orm] [bug] [regression]
Fixed bug in ORM Declarative where the __table__ directive could not be declared \
as a class function with declared_attr() on a superclass, including an \
__abstract__ class as well as coming from the declarative base itself. This was \
a regression since 1.4 where this was working, and there were apparently no \
tests for this particular use case.
sql
[sql] [bug]
Fixed issue when serializing an over() clause with unbounded range or rows.
[sql] [bug]
Added missing methods FunctionFilter.within_group() and WithinGroup.filter()
[sql] [bug]
Fixed bug in FunctionFilter.filter() that would mutate the existing function \
in-place. It now behaves like the rest of the SQLAlchemy API, returning a new \
instance instead of mutating the original one.
schema
[schema] [usecase]
Added Column.insert_default as an alias of Column.default for compatibility with \
mapped_column().
mysql
[mysql] [usecase] [reflection]
Added missing foreign key reflection option SET DEFAULT in the MySQL and MariaDB \
dialects. Pull request courtesy of Quentin Roche.
|
Log message:
py-sqlalchemy: updated to 2.0.29
2.0.29
Released: March 23, 2024
orm
[orm] [usecase]
Added support for the PEP 695 TypeAliasType construct as well as the python 3.12 \
native type keyword to work with ORM Annotated Declarative form when using these \
constructs to link to a PEP 593 Annotated container, allowing the resolution of \
the Annotated to proceed when these constructs are used in a Mapped typing \
container.
[orm] [bug]
Fixed Declarative issue where typing a relationship using Relationship rather \
than Mapped would inadvertently pull in the “dynamic” relationship loader \
strategy for that attribute.
[orm] [bug]
Fixed issue in ORM annotated declarative where using mapped_column() with an \
mapped_column.index or mapped_column.unique setting of False would be overridden \
by an incoming Annotated element that featured that parameter set to True, even \
though the immediate mapped_column() element is more specific and should take \
precedence. The logic to reconcile the booleans has been enhanced to accommodate \
a local value of False as still taking precedence over an incoming True value \
from the annotated element.
[orm] [bug] [regression]
Fixed regression from version 2.0.28 caused by the fix for 11085 where the newer \
method of adjusting post-cache bound parameter values would interefere with the \
implementation for the subqueryload() loader option, which has some more legacy \
patterns in use internally, when the additional loader criteria feature were \
used with this loader option.
engine
[engine] [bug]
Fixed issue in “Insert Many Values” Behavior for INSERT statements feature \
where using a primary key column with an “inline execute” default generator \
such as an explicit Sequence with an explcit schema name, while at the same time \
using the Connection.execution_options.schema_translate_map feature would fail \
to render the sequence or the parameters properly, leading to errors.
[engine] [bug]
Made a change to the adjustment made in version 2.0.10 for 9618, which added the \
behavior of reconciling RETURNING rows from a bulk INSERT to the parameters that \
were passed to it. This behavior included a comparison of already-DB-converted \
bound parameter values against returned row values that was not always \
“symmetrical” for SQL column types such as UUIDs, depending on specifics of \
how different DBAPIs receive such values versus how they return them, \
necessitating the need for additional “sentinel value resolver” methods on \
these column types. Unfortunately this broke third party column types such as \
UUID/GUID types in libraries like SQLModel which did not implement this special \
method, raising an error “Can’t match sentinel values in result set to \
parameter sets”. Rather than attempt to further explain and document this \
implementation detail of the “insertmanyvalues” feature including a public \
version of the new method, the approach is intead revised to
no longer need this extra conversion step, and the logic that does the \
comparison now works on the pre-converted bound parameter value compared to the \
post-result-processed value, which should always be of a matching datatype. In \
the unusual case that a custom SQL column type that also happens to be used in a \
“sentinel” column for bulk INSERT is not receiving and returning the same \
value type, the “Can’t match” error will be raised, however the mitigation \
is straightforward in that the same Python datatype should be passed as that \
returned.
sql
[sql] [bug] [regression]
Fixed regression from the 1.4 series where the refactor of the \
TypeEngine.with_variant() method introduced at “with_variant()” clones the \
original TypeEngine rather than changing the type failed to accommodate for the \
.copy() method, which will lose the variant mappings that are set up. This \
becomes an issue for the very specific case of a “schema” type, which \
includes types such as Enum and ARRAY, when they are then used in the context of \
an ORM Declarative mapping with mixins where copying of types comes into play. \
The variant mapping is now copied as well.
typing
[typing] [bug]
Fixed typing issue allowing asyncio run_sync() methods to correctly type the \
parameters according to the callable that was passed, making use of PEP 612 \
ParamSpec variables. Pull request courtesy Francisco R. Del Roio.
postgresql
[postgresql] [usecase]
The PostgreSQL dialect now returns DOMAIN instances when reflecting a column \
that has a domain as type. Previously, the domain data type was returned \
instead. As part of this change, the domain reflection was improved to also \
return the collation of the text types. Pull request courtesy of Thomas \
Stephenson.
tests
[tests] [bug]
Backported to SQLAlchemy 2.0 an improvement to the test suite with regards to \
how asyncio related tests are run, now using the newer Python 3.11 \
asyncio.Runner or a backported equivalent, rather than relying on the previous \
implementation based on asyncio.get_running_loop(). This should hopefully \
prevent issues with large suite runs on CPU loaded hardware where the event loop \
seems to become corrupted, leading to cascading failures.
|