| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Upgrade to release 1.4.3:
orm:
- Fixed a bug where python 2.7.5 (default on CentOS 7) wasn't able
to import sqlalchemy, because on this version of Python exec
"statement" and exec("statement") do not behave the same way.
The compatibility exec_() function was used instead.
- Fixed bug where ORM queries using a correlated subquery in
conjunction with column_property() would fail to correlate
correctly to an enclosing subquery or to a CTE when
Select.correlate_except() were used in the property to control
correlation, in cases where the subquery contained the same
selectables as ones within the correlated subquery that were
intended to not be correlated.
- Fixed bug where combinations of the new "relationship with
criteria" feature could fail in conjunction with features that
make use of the new “lambda SQL” feature, including loader
strategies such as selectinload and lazyload, for more
complicated scenarios such as polymorphic loading.
- Repaired support so that the ClauseElement.params() method can
work correctly with a Select object that includes joins across
ORM relationship structures, which is a new feature in 1.4.
- Fixed issue where a "removed in 2.0" warning were generated
internally by the relationship loader mechanics.
orm declarative:
- Fixed regression where the .metadata attribute on a per class
level would not be honored, breaking the use case of
per-class-hierarchy MetaData for abstract declarative classes
and mixins.
engine:
- Restored the ResultProxy name back to the sqlalchemy.engine
namespace. This name refers to the LegacyCursorResult object.
mypy:
- Added support for the Mypy extension to correctly interpret a
declarative base class that’s generated using the as_declarative()
function as well as the registry.as_declarative_base() method.
postgresql:
- Fixed reflection of identity columns in tables with mixed case
names in PostgreSQL.
sqlite:
- Added support for the aiosqlite database driver for use with the
SQLAlchemy asyncio extension.
- Repaired the pysqlcipher dialect to connect correctly which had
regressed in 1.4, and added test + CI support to maintain the
driver in working condition. The dialect now imports the
sqlcipher3 module for Python 3 by default before falling back to
pysqlcipher3 which is documented as now being unmaintained.
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>
|
|
|
Upgrade to release 1.4.2:
orm:
- Added support for the declared_attr object to work in the
context of dataclass fields.
- Fixed issue in new ORM dataclasses functionality where
dataclass fields on an abstract base or mixin that contained
column or other mapping constructs would not be mapped if they
also included a “default” key within the dataclasses.field()
object.
- Fixed regression where the Query.selectable accessor, which
is a synonym for Query.__clause_element__(), got removed, it's
now restored.
- Fixed regression where use of an unnamed SQL expression
such as a SQL function would raise a column targeting error if
the query itself were using joinedload for an entity and was
also being wrapped in a subquery by the joinedload eager
loading process.
- Fixed regression where the Query.filter_by() method would
fail to locate the correct source entity if the Query.join()
method had been used targeting an entity without any kind of
ON clause.
- Fixed regression where the SQL compilation of a Function would
not work correctly if the object had been "annotated", which is
an internal memoization process used mostly by the ORM. In
particular it could affect ORM lazy loads which make greater use
of this feature in 1.4.
- Fixed regression where the ConcreteBase would fail to map at all
when a mapped column name overlapped with the discriminator
column name, producing an assertion error. The use case here did
not function correctly in 1.3 as the polymorphic union would
produce a query that ignored the discriminator column entirely,
while emitting duplicate column warnings. As 1.4's architecture
cannot easily reproduce this essentially broken behavior of 1.3
at the select() level right now, the use case now raises an
informative error message instructing the user to use the
.ConcreteBase._concrete_discriminator_name attribute to resolve
the conflict. To assist with this configuration,
.ConcreteBase._concrete_discriminator_name may be placed on the
base class only where it will be automatically used by
subclasses; previously this was not the case.
engine:
- Restored top level import for sqlalchemy.engine.reflection. This
ensures that the base Inspector class is properly registered so
that inspect() works for third party dialects that don't
otherwise import this package.
sql:
- Fixed issue where using a func that includes dotted packagenames
would fail to be cacheable by the SQL caching system due to a
Python list of names that needed to be a tuple.
- Fixed regression in the case() construct, where the "dictionary"
form of argument specification failed to work correctly if it
were passed positionally, rather than as a "whens" keyword
argument.
mypy:
- Fixed issue in MyPy extension which crashed on detecting the
type of a Column if the type were given with a module prefix
like sa.Integer().
postgresql:
- Rename the column name used by a reflection query that used a
reserved word in some postgresql compatible databases.
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>
|