| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Upgrade to release 1.4.7:
orm:
- Fixed regression where the subqueryload() loader strategy would
fail to correctly accommodate sub-options, such as a defer()
option on a column, if the “path” of the subqueryload were more
than one level deep.
- Fixed regression where the merge_frozen_result() function relied
upon by the dogpile.caching example was not included in tests
and began failing due to incorrect internal arguments.
- Fixed critical regression where the Session could fail to
"autobegin" a new transaction when a flush occurred without an
existing transaction in place, implicitly placing the Session
into legacy autocommit mode which commit the transaction. The
Session now has a check that will prevent this condition from
occurring, in addition to repairing the flush issue.
- Fixed regression where the ORM compilation scheme would assume
the function name of a hybrid property would be the same as the
attribute name in such a way that an AttributeError would be
raised, when it would attempt to determine the correct name for
each element in a result tuple.
- Fixed critical regression caused by the new feature added as
part of #1763, eager loaders are invoked on unexpire operations.
The new feature makes use of the "immediateload" eager loader
strategy as a substitute for a collection loading strategy,
which unlike the other “post-load” strategies was not
accommodating for recursive invocations between
mutually-dependent relationships, leading to recursion overflow
errors.
engine:
- Fixed up the behavior of the Row object when dictionary access
is used upon it, meaning converting to a dict via dict(row) or
accessing members using strings or other objects i.e.
row["some_key"] works as it would with a dictionary, rather than
raising TypeError as would be the case with a tuple, whether or
not the C extensions are in place
sql:
- Enhanced the "expanding" feature used for ColumnOperators.in_()
operations to infer the type of expression from the right hand
list of elements, if the left hand side does not have any
explicit type set up. This allows the expression to support
stringification among other things. In 1.3, "expanding" was not
automatically used for ColumnOperators.in_() expressions, so in
that sense this change fixes a behavioral regression.
- Fixed the "stringify" compiler to support a basic
stringification of a "multirow" INSERT statement, i.e. one with
multiple tuples following the VALUES keyword.
schema:
- Fixed regression where usage of a token in the
Connection.execution_options.schema_translate_map dictionary
which contained special characters such as braces would fail to
be substituted properly. Use of square bracket characters [] is
now explicitly disallowed as these are used as a delimiter
character in the current implementation.
mypy:
- Fixed issue in Mypy plugin where the plugin wasn't inferring the
correct type for columns of subclasses that don’t directly
descend from TypeEngine, in particular that of TypeDecorator and
UserDefinedType.
misc:
- Added a new flag to DefaultDialect called supports_schema; third
party dialects may set this flag to True to enable SQLAlchemy's
schema-level tests when running the test suite for a third party
dialect.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Trevor Gamblin <trevor.gamblin@windriver.com>
(cherry picked from commit bc55118cf6e176b19ccebb86de85c51ad711c217)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
|
|
|
Upgrade to release 1.4.6:
orm:
- Fixed regression where a deprecated form of Query.join() were
used, passing a series of entities to join from without any ON
clause in a single Query.join() call, would fail to function
correctly.
- Fixed critical regression where the Query.yield_per() method in
the ORM would set up the internal Result to yield chunks at a
time, however made use of the new Result.unique() method which
uniques across the entire result.
sql:
- Fixed further regressions in the same area as that of #6173
released in 1.4.5, where a “postcompile” parameter, again most
typically those used for LIMIT/OFFSET rendering in Oracle and
SQL Server, would fail to be processed correctly if the same
parameter rendered in multiple places in the statement.
- Executing a Subquery using Connection.execute() is deprecated
and will emit a deprecation warning; this use case was an
oversight that should have been removed from 1.4.
schema:
- The Table object now raises an informative error message if it
is instantiated without passing at least the Table.name and
Table.metadata arguments positionally. Previously, if these were
passed as keyword arguments, the object would silently fail to
initialize correctly.
mypy:
- Applied a series of refactorings and fixes to accommodate for
Mypy "incremental" mode across multiple files, which previously
was not taken into account. In this mode the Mypy plugin has to
accommodate Python datatypes expressed in other files coming in
with less information than they have on a direct run.
- Fixed issue where the Mypy plugin would fail to interpret the
"collection_class" of a relationship if it were a callable and
not a class. Also improved type matching and error reporting for
collection-oriented relationships.
asyncio:
- Added accessors .sqlstate and synonym .pgcode to the .orig
attribute of the SQLAlchemy exception class raised by the
asyncpg DBAPI adapter, that is, the intermediary exception
object that wraps on top of that raised by the asyncpg
library itself, but below the level of the SQLAlchemy dialect.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Trevor Gamblin <trevor.gamblin@windriver.com>
(cherry picked from commit b649e45ab1f87346c535ef77052343594391bd39)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
|