|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Upgrade to release 1.3.20:
orm:
- An ArgumentError with more detail is now raised if the target
parameter for Query.join() is set to an unmapped object. Prior
to this change a less detailed AttributeError was raised.
- Fixed issue where using a loader option against a string
attribute name that is not actually a mapped attribute, such
as a plain Python descriptor, would raise an uninformative
AttributeError; a descriptive error is now raised.
engine:
- Fixed issue where a non-string object sent to SQLAlchemyError or
a subclass, as occurs with some third party dialects, would fail
to stringify correctly.
- Repaired a function-level import that was not using SQLAlchemy’s
standard late-import system within the sqlalchemy.exc module.
sql:
- Fixed issue where the pickle.dumps() operation against Over
construct would produce a recursion overflow.
- Fixed bug where an error was not raised in the case where a
column() were added to more than one table() at a time. This
raised correctly for the Column and Table objects. An
ArgumentError is now raised when this occurs.
postgresql:
- The psycopg2 dialect now support PostgreSQL multiple host
connections, by passing host/port combinations to the query
string.
- Adjusted the Comparator.any() and Comparator.all() methods to
implement a straight “NOT” operation for negation, rather than
negating the comparison operator.
- Fixed issue where the ENUM type would not consult the schema
translate map when emitting a CREATE TYPE or DROP TYPE during the
test to see if the type exists or not. Additionally, repaired an
issue where if the same enum were encountered multiple times in a
single DDL sequence, the “check” query would run repeatedly rather
than relying upon a cached value.
mysql:
- Adjusted the MySQL dialect to correctly parenthesize functional
index expressions as accepted by MySQL 8.
- The “skip_locked” keyword used with with_for_update() will emit a
warning when used on MariaDB backends, and will then be ignored.
This is a deprecated behavior that will raise in SQLAlchemy 1.4,
as an application that requests “skip locked” is looking for a
non-blocking operation which is not available on those backends.
- Fixed bug where an UPDATE statement against a JOIN using MySQL
multi-table format would fail to include the table prefix for the
target table if the statement had no WHERE clause, as only the
WHERE clause were scanned to detect a “multi table update” at
that particular point. The target is now also scanned if it’s a
JOIN to get the leftmost table as the primary table and the
additional entries as additional FROM entries.
- Add new MySQL reserved words: cube, lateral added in MySQL 8.0.1
and 8.0.14, respectively; this indicates that these terms will
be quoted if used as table or column identifier names.
mssql:
- Fixed issue where a SQLAlchemy connection URI for Azure DW with
authentication=ActiveDirectoryIntegrated (and no username+password)
was not constructing the ODBC connection string in a way that was
acceptable to the Azure DW instance.
misc:
- Fixed issue where the following pool parameters were not being
propagated to the new pool created when Engine.dispose() were
called: pre_ping, use_lifo. Additionally the recycle and
reset_on_return parameter is now propagated for the AssertionPool
class.
- An informative error is now raised when attempting to use an
association proxy element as a plain column expression to be
SELECTed from or used in a SQL function; this use case is not
currently supported.
- Fixed incompatibilities in the test suite when running against
Pytest 6.x.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Acked-by: Trevor Gamblin <trevor.gamblin@windriver.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
|
Upgrade to release 1.3.19:
- orm: Adjusted the workings of the Mapper.all_orm_descriptors()
accessor to represent the attributes in the order that they are
located in a deterministic way, assuming the use of Python 3.6
or higher which maintains the sorting order of class attributes
based on how they were declared. This sorting is not guaranteed
to match the declared order of attributes in all cases however;
see the method documentation for the exact scheme.
- orm: The name of the virtual column used when using the
AbstractConcreteBase and ConcreteBase classes can now be
customized, to allow for models that have a column that is
actually named type.
- sql: Repaired an issue where the "ORDER BY" clause rendering a
label name rather than a complete expression, which is
particularly important for SQL Server, would fail to occur if
the expression were enclosed in a parenthesized grouping in some
cases. This case has been added to test support. The change
additionally adjusts the "automatically add ORDER BY columns
when DISTINCT is present" behavior of ORM query, deprecated in
1.4, to more accurately detect column expressions that are
already present.
- mysql: The MySQL dialect will render FROM DUAL for a SELECT
statement that has no FROM clause but has a WHERE clause. This
allows things like "SELECT 1 WHERE EXISTS (subquery)" kinds of
queries to be used as well as other use cases.
- sqlite: Applied a sweep through all included dialects to ensure
names that contain single or double quotes are properly escaped
when querying system tables, for all Inspector methods that
accept object names as an argument (e.g. table names, view
names, etc). SQLite and MSSQL contained two quoting issues that
were repaired.
- mssql: Fixed bug where the mssql dialect incorrectly escaped
object names that contained ‘]’ character(s).
- Added a **kw argument to the DeclarativeMeta.__init__() method.
This allows a class to support the PEP 487 metaclass hook
__init_subclass__.
For more details have a look at the complete changelog:
https://docs.sqlalchemy.org/en/13/changelog/changelog_13.html
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Acked-by: Trevor Gamblin <trevor.gamblin@windriver.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|