3.13.3
Allow arbitrary keyword arguments to be passed to DataSet constructor, which are then passed to the instrospector.
Allow scalar subqueries to be compared using numeric operands.
Fix bulk_create() when model being inserted uses FK identifiers.
Fix bulk_update() so that PK values are properly coerced to the right data-type (e.g. UUIDs to strings for Sqlite).
Allow array indices to be used as dict keys, e.g. for the purposes of updating a single array index value.
2.17.2:
[BUGFIX] Federation: Register federation metrics
[BUGFIX] PromQL: Fix panic in parser error handling
[BUGFIX] Rules: Fix reloads hanging when deleting a rule group that is being evaluated
[BUGFIX] TSDB: Fix a memory leak when prometheus starts with an empty TSDB WAL
[BUGFIX] TSDB: Make isolation more robust to panics in web handlers
I'm unable to find a useful changelog, so unfortunately if you want to see
what has changed since 6.4.0 then you'll need to head over to
https://www.elastic.co/guide/en/elasticsearch/reference/6.8/es-release-notes.html
and read each of the individual links for every single point release.
While here fix some build issues and pkglint warnings.
In previous commit, I imported the mariadb55-client files into the
mariadb55-server. This changes fixes that and brings the MariaDB 5.5.67
update I meant to commit.
This is an attempt to make a DataMapper for GObject. Mostly because I'm
sick of doing this by hand in C. It would be cool if it would work across
language boundries using GObject Introspection too.
1.4.2:
bug
[bug] [tests]
Fixed an issue that prevented the test suite from running with the recently released py.test 5.4.0.
[bug] [autogenerate] [mysql]
Fixed more false-positive failures produced by the new “compare type” logic first added in 605, particularly impacting MySQL string types regarding flags such as “charset” and “collation”.
[bug] [op directives] [oracle]
Fixed issue in Oracle backend where a table RENAME with a schema-qualified name would include the schema in the “to” portion, which is rejected by Oracle.
usecase
[usecase] [autogenerate]
Adjusted autogen comparison to accommodate for backends that support computed column reflection, dependent on SQLAlchemy version 1.3.16 or higher. This emits a warning if the SQL expression inside of a Computed value changes between the metadata and the database, as these expressions can’t be changed without dropping and recreating the column.
1.4.1
bug
[bug] [autogenerate]
Fixed regression caused by the new “type comparison” logic introduced in 1.4 as part of 605 where comparisons of MySQL “unsigned integer” datatypes would produce false positives, as the regular expression logic was not correctly parsing the “unsigned” token when MySQL’s default display width would be returned by the database. Pull request courtesy Paul Becotte.
[bug] [environment]
Error message for “path doesn’t exist” when loading up script environment now displays the absolute path. Pull request courtesy Rowan Hart.
[bug] [autogenerate]
Fixed regression in 1.4.0 due to 647 where unique constraint comparison with mixed case constraint names while not using a naming convention would produce false positives during autogenerate.
[bug] [environment]
The check for matched rowcount when the alembic_version table is updated or deleted from is now conditional based on whether or not the dialect supports the concept of “rowcount” for UPDATE or DELETE rows matched. Some third party dialects do not support this concept. Pull request courtesy Ke Zhu.
[bug] [operations]
Fixed long-standing bug where an inline column CHECK constraint would not be rendered within an “ADD COLUMN” operation. The DDL compiler is now consulted for inline constraints within the Operations.add_column() method as is done for regular CREATE TABLE operations.
1.3.16
orm
[orm] [bug]
Fixed bug in orm.selectinload() loading option where two or more loaders that represent different relationships with the same string key name as referenced from a single orm.with_polymorphic() construct with multiple subclass mappers would fail to invoke each subqueryload separately, instead making use of a single string-based slot that would prevent the other loaders from being invoked.
[orm] [bug]
Fixed issue where a lazyload that uses session-local “get” against a target many-to-one relationship where an object with the correct primary key is present, however it’s an instance of a sibling class, does not correctly return None as is the case when the lazy loader actually emits a load for that row.
[orm] [performance]
Modified the queries used by subqueryload and selectinload to no longer ORDER BY the primary key of the parent entity; this ordering was there to allow the rows as they come in to be copied into lists directly with a minimal level of Python-side collation. However, these ORDER BY clauses can negatively impact the performance of the query as in many scenarios these columns are derived from a subquery or are otherwise not actual primary key columns such that SQL planners cannot make use of indexes. The Python-side collation uses the native itertools.group_by() to collate the incoming rows, and has been modified to allow multiple row-groups-per-parent to be assembled together using list.extend(), which should still allow for relatively fast Python-side performance. There will still be an ORDER BY present for a relationship that includes an explicit order_by parameter, however this is the only ORDER BY that will be added to the query for both kinds of loading.
orm declarative
[bug] [declarative] [orm]
The string argument accepted as the first positional argument by the relationship() function when using the Declarative API is no longer interpreted using the Python eval() function; instead, the name is dot separated and the names are looked up directly in the name resolution dictionary without treating the value as a Python expression. However, passing a string argument to the other relationship() parameters that necessarily must accept Python expressions will still use eval(); the documentation has been clarified to ensure that there is no ambiguity that this is in use.
See also
Evaluation of relationship arguments - details on string evaluation
sql
[sql] [types]
Add ability to literal compile a DateTime, Date or :class:”Time” when using the string dialect for debugging purposes. This change does not impact real dialect implementation that retain their current behavior.
schema
[schema] [reflection]
Added support for reflection of “computed” columns, which are now returned as part of the structure returned by Inspector.get_columns(). When reflecting full Table objects, computed columns will be represented using the Computed construct.
postgresql
[postgresql] [bug]
Fixed issue where a “covering” index, e.g. those which have an INCLUDE clause, would be reflected including all the columns in INCLUDE clause as regular columns. A warning is now emitted if these additional columns are detected indicating that they are currently ignored. Note that full support for “covering” indexes is part of 4458. Pull request courtesy Marat Sharafutdinov.
mysql
[mysql] [bug]
Fixed issue in MySQL dialect when connecting to a psuedo-MySQL database such as that provided by ProxySQL, the up front check for isolation level when it returns no row will not prevent the dialect from continuing to connect. A warning is emitted that the isolation level could not be detected.
sqlite
[sqlite] [usecase]
Implemented AUTOCOMMIT isolation level for SQLite when using pysqlite.
mssql
[mssql] [usecase] [mysql] [oracle]
Added support for ColumnOperators.is_distinct_from() and ColumnOperators.isnot_distinct_from() to SQL Server, MySQL, and Oracle.
oracle
[oracle] [usecase]
Implemented AUTOCOMMIT isolation level for Oracle when using cx_Oracle. Also added a fixed default isolation level of READ COMMITTED for Oracle.
[oracle] [bug] [reflection]
Fixed regression / incorrect fix caused by fix for 5146 where the Oracle dialect reads from the “all_tab_comments” view to get table comments but fails to accommodate for the current owner of the table being requested, causing it to read the wrong comment if multiple tables of the same name exist in multiple schemas.
misc
[bug] [tests]
Fixed an issue that prevented the test suite from running with the recently released py.test 5.4.0.
[enum] [types]
The Enum type now supports the parameter Enum.length to specify the length of the VARCHAR column to create when using non native enums by setting Enum.native_enum to False
[installer]
Ensured that the “pyproject.toml” file is not included in builds, as the presence of this file indicates to pip that a pep-517 installation process should be used. As this mode of operation appears to be not well supported by current tools / distros, these problems are avoided within the scope of SQLAlchemy installation by omitting the file.
1.3.15
orm
[orm] [bug]
Adjusted the error message emitted by Query.join() when a left hand side can’t be located that the Query.select_from() method is the best way to resolve the issue. Also, within the 1.3 series, used a deterministic ordering when determining the FROM clause from a given column entity passed to Query so that the same expression is determined each time.
[orm] [bug]
Fixed regression in 1.3.14 due to 4849 where a sys.exc_info() call failed to be invoked correctly when a flush error would occur. Test coverage has been added for this exception case.
1.3.14
general
[general] [bug] [py3k]
Applied an explicit “cause” to most if not all internally raised exceptions that are raised from within an internal exception catch, to avoid misleading stacktraces that suggest an error within the handling of an exception. While it would be preferable to suppress the internally caught exception in the way that the __suppress_context__ attribute would, there does not as yet seem to be a way to do this without suppressing an enclosing user constructed context, so for now it exposes the internally caught exception as the cause so that full information about the context of the error is maintained.
orm
[orm] [usecase]
Added a new flag InstanceEvents.restore_load_context and SessionEvents.restore_load_context which apply to the InstanceEvents.load(), InstanceEvents.refresh(), and SessionEvents.loaded_as_persistent() events, which when set will restore the “load context” of the object after the event hook has been called. This ensures that the object remains within the “loader context” of the load operation that is already ongoing, rather than the object being transferred to a new load context due to refresh operations which may have occurred in the event. A warning is now emitted when this condition occurs, which recommends use of the flag to resolve this case. The flag is “opt-in” so that there is no risk introduced to existing applications.
The change additionally adds support for the raw=True flag to session lifecycle events.
[orm] [bug]
Fixed regression caused in 1.3.13 by 5056 where a refactor of the ORM path registry system made it such that a path could no longer be compared to an empty tuple, which can occur in a particular kind of joined eager loading path. The “empty tuple” use case has been resolved so that the path registry is compared to a path registry in all cases; the PathRegistry object itself now implements __eq__() and __ne__() methods which will take place for all equality comparisons and continue to succeed in the not anticipated case that a non- PathRegistry object is compared, while emitting a warning that this object should not be the subject of the comparison.
[orm] [bug]
Setting a relationship to viewonly=True which is also the target of a back_populates or backref configuration will now emit a warning and eventually be disallowed. back_populates refers specifically to mutation of an attribute or collection, which is disallowed when the attribute is subject to viewonly=True. The viewonly attribute is not subject to persistence behaviors which means it will not reflect correct results when it is locally mutated.
[orm] [bug]
Fixed an additional regression in the same area as that of 5080 introduced in 1.3.0b3 via 4468 where the ability to create a joined option across a with_polymorphic() into a relationship against the base class of that with_polymorphic, and then further into regular mapped relationships would fail as the base class component would not add itself to the load path in a way that could be located by the loader strategy. The changes applied in 5080 have been further refined to also accommodate this scenario.
engine
[engine] [bug]
Expanded the scope of cursor/connection cleanup when a statement is executed to include when the result object fails to be constructed, or an after_cursor_execute() event raises an error, or autocommit / autoclose fails. This allows the DBAPI cursor to be cleaned up on failure and for connectionless execution allows the connection to be closed out and returned to the connection pool, where previously it waiting until garbage collection would trigger a pool return.
sql
[sql] [bug] [postgresql]
Fixed bug where a CTE of an INSERT/UPDATE/DELETE that also uses RETURNING could then not be SELECTed from directly, as the internal state of the compiler would try to treat the outer SELECT as a DELETE statement itself and access nonexistent state.
postgresql
[postgresql] [bug]
Fixed issue where the “schema_translate_map” feature would not work with a PostgreSQL native enumeration type (i.e. Enum, postgresql.ENUM) in that while the “CREATE TYPE” statement would be emitted with the correct schema, the schema would not be rendered in the CREATE TABLE statement at the point at which the enumeration was referenced.
[postgresql] [bug] [reflection]
Fixed bug where PostgreSQL reflection of CHECK constraints would fail to parse the constraint if the SQL text contained newline characters. The regular expression has been adjusted to accommodate for this case. Pull request courtesy Eric Borczuk.
mysql
[mysql] [bug]
Fixed issue in MySQL mysql.Insert.on_duplicate_key_update() construct where using a SQL function or other composed expression for a column argument would not properly render the VALUES keyword surrounding the column itself.
mssql
[mssql] [bug]
Fixed issue where the mssql.DATETIMEOFFSET type would not accommodate for the None value, introduced as part of the series of fixes for this type first introduced in 4983, 5045. Additionally, added support for passing a backend-specific date formatted string through this type, as is typically allowed for date/time types on most other DBAPIs.
oracle
[oracle] [bug]
Fixed a reflection bug where table comments could only be retrieved for tables actually owned by the user but not for tables visible to the user but owned by someone else. Pull request courtesy Dave Hirschfeld.
misc
[usecase] [ext]
Added keyword arguments to the MutableList.sort() function so that a key function as well as the “reverse” keyword argument can be provided.
[bug] [performance]
Revised an internal change to the test system added as a result of 5085 where a testing-related module per dialect would be loaded unconditionally upon making use of that dialect, pulling in SQLAlchemy’s testing framework as well as the ORM into the module import space. This would only impact initial startup time and memory to a modest extent, however it’s best that these additional modules aren’t reverse-dependent on straight Core usage.
[bug] [installation]
Vendored the inspect.formatannotation function inside of sqlalchemy.util.compat, which is needed for the vendored version of inspect.formatargspec. The function is not documented in cPython and is not guaranteed to be available in future Python versions.
2.17.1:
[BUGFIX] TSDB: Fix query performance regression that increased memory and CPU usage
2.17.0:
[FEATURE] TSDB: Support isolation
[ENHANCEMENT] PromQL: Allow more keywords as metric names
[ENHANCEMENT] React UI: Add normalization of localhost URLs in targets page
[ENHANCEMENT] Remote read: Read from remote storage concurrently
[ENHANCEMENT] Rules: Mark deleted rule series as stale after a reload
[ENHANCEMENT] Scrape: Log scrape append failures as debug rather than warn
[ENHANCEMENT] TSDB: Improve query performance for queries that partially hit the head
[ENHANCEMENT] Consul SD: Expose service health as meta label
[ENHANCEMENT] EC2 SD: Expose EC2 instance lifecycle as meta label
[ENHANCEMENT] Kubernetes SD: Expose service type as meta label for K8s service role
[ENHANCEMENT] Kubernetes SD: Expose label_selector and field_selector
[ENHANCEMENT] Openstack SD: Expose hypervisor id as meta label
[BUGFIX] PromQL: Do not escape HTML-like chars in query log
[BUGFIX] React UI: Fix data table matrix values
[BUGFIX] React UI: Fix new targets page not loading when using non-ASCII characters
[BUGFIX] Remote read: Fix duplication of metrics read from remote storage with external labels
[BUGFIX] Remote write: Register WAL watcher and live reader metrics for all remotes, not just the first one
[BUGFIX] Scrape: Prevent removal of metric names upon relabeling
[BUGFIX] Scrape: Fix 'superfluous response.WriteHeader call' errors when scrape fails under some circonstances
[BUGFIX] Scrape: Fix crash when reloads are separated by two scrape intervals
4.9.5 (2020-03-20)
- issue [security] Fix SQL injection with certain usernames (PMASA-2020-2)
- issue [security] Fix SQL injection in particular search situations (PMASA-2020-3)
- issue [security] Fix SQL injection and XSS flaw (PMASA-2020-4)
- issue Deprecate "options" for the external transformation; options must now be hard-coded along with the program name directly in the file.
Several patches have been filed upstream. Note URLs, and
revise/expand comments. This is a comment-only change.
Thanks to Paul Ripke for filing issues upstream.
3.13.2
* Allow aggregate functions to support an `ORDER BY` clause, via the addition
of an `order_by()` method to the function (`fn`) instance.
* Fix `prefetch()` bug, where related "backref" instances were marked as dirty,
even though they had no changes.
* Support `LIMIT 0`. Previously a limit of 0 would be translated into
effectively an unlimited query on MySQL.
* Support indexing into arrays using expressions with Postgres array fields.
* Ensure postgres introspection methods return the columns for multi-column
indexes in the correct order.
* Add support for arrays of UUIDs to postgres introspection.
* Fix introspection of columns w/capitalized table names in postgres.
* Fix to ensure correct exception is raised in SqliteQueueDatabase when
iterating over cursor/result-set.
* Fix bug comparing subquery against a scalar value.
* Fix issue resolving composite primary-keys that include foreign-keys when
building the model-graph.
* Allow model-classes to be passed as arguments, e.g., to a table function.
* Ensure postgres `JSONField.concat()` accepts expressions as arguments.
4.2.5:
Unknown changes
4.2.4:
Issues fixed:
SERVER-44915: Extend $indexStats output to include full index options and shard name
SERVER-46121: mongos crashes with invariant error after changing taskExecutorPoolSize
SERVER-45137: Increasing memory allocation in Top::record with high rate of collection creates and drops
SERVER-44904: Startup recovery should not delete corrupt documents while rebuilding unfinished indexes
SERVER-44260: Transaction can conflict with previous transaction on the session if the all committed point is held back
SERVER-35050: Don’t abort collection clone due to negative document count
SERVER-39112: Primary drain mode can be unnecessarily slow
mongo-c-driver 1.16.2
libbson
No change since 1.16.1; released to keep pace with libmongoc's version.
libmongoc
It is my pleasure to announce the MongoDB C Driver 1.16.2.
Bug fixes:
Fix compilation with LibreSSL when configuring with -DENABLE_SSL=AUTO
Update ruby-pg to 1.2.3.
== v1.2.3 [2020-03-18] Michael Granger <ged@FaerieMUD.org>
Bugfixes:
- Fix possible segfault at `PG::Coder#encode`, `decode` or their implicit calls through
a typemap after GC.compact. #327
- Fix possible segfault in `PG::TypeMapByClass` after GC.compact. #328