4.9.9 (2022-01-22)
- issue #17305 Fix syntax error for PHP 5
- issue #17307 Fix hide_connection_errors being undefined when a controluser is set
4.9.8 (2022-01-20)
- issue #14321 Display a correct error page when "$cfg['Servers'][$i]['SignonURL']" is empty for auth_type=signon
- issue #14321 [security] Remove leaked HTML on signon page redirect before login for auth_type=signon
- issue [security] Add configuration directive $cfg['Servers'][$i]['hide_connection_errors'] to allow hiding host names and other error details when login fails
- issue [security] Add configuration directive $cfg['URLQueryEncryption'] to allow encrypting senstive information in the URL
- issue [security] Fix a scenario where an authenticated user can disable two factor authentication
6.0.2 (2022-01-24)
==================
Bugfixes
--------
- Revert :issue:`644`, restore type annotations to as-of 5.2.0 version. (:issue:`688`)
6.0.1 (2022-01-23)
==================
Bugfixes
--------
- Restored back ``MultiDict``, ``CIMultiDict``, ``MultiDictProxy``, and
``CIMutiDictProxy`` generic type arguments; they are parameterized by value type, but the
key type is fixed by container class.
``MultiDict[int]`` means ``MutableMultiMapping[str, int]``. The key type of
``MultiDict`` is always ``str``, while all str-like keys are accepted by API and
converted to ``str`` internally.
The same is true for ``CIMultiDict[int]`` which means ``MutableMultiMapping[istr,
int]``. str-like keys are accepted but converted to ``istr`` internally. (:issue:`682`)
Version 4.1.2
Changes
🚀 New Features
Invalid OCSP certificates should raise ConnectionError on failed validation
Added retry mechanism on socket timeouts when connecting to the server
🐛 Bug Fixes
LMOVE, BLMOVE return incorrect responses
Fixing AttributeError in UnixDomainSocketConnection
Fixing TypeError in GraphCommands.explain
🧰 Maintenance
For tests, increasing wait time for the cluster
Increased pubsub's wait_for_messages timeout to prevent flaky tests
README code snippets formatted to highlight properly
Fix link in the main page
Documentation fixes: JSON Example, SSL Connection Examples, RTD version
Direct link to readthedocs
Features
--------
- Use ``METH_FASTCALL`` where it makes sense.
``MultiDict.add()`` is 2.2 times faster now, ``CIMultiDict.add()`` is 1.5 times faster.
The same boost is applied to ``get*()``, ``setdefault()``, and ``pop*()`` methods. (:issue:`681`)
Bugfixes
--------
- Fixed type annotations for keys of multidict mapping classes. (:issue:`644`)
- Support Multidict[int] for pure-python version.
``__class_getitem__`` is already provided by C Extension, making it work with the pure-extension too. (:issue:`678`)
Deprecations and Removals
-------------------------
- Dropped Python 3.6 support (:issue:`680`)
December 03 2021 - v5.2
This maintenance release fixes issues reported by users since the last six
months with some improvements and new features.
New options and features:
* Allow to pass multiple files when using --inplace. Thanks to mieszko4
for the patch.
* Add a button to copy formatted text to clipboard in the CGI interface.
Thanks to Yan Sheng for the feature request.
Here is the complete list of changes and acknowledgments:
- Fix bad formatting of materialized view ddl with parameters. Thanks to
Wilson Lin for the report.
- Fix/unicode and --inplace argument causing an error. Thanks to mieszko4
for the patch.
- Fix anonymizing disabled in last version. Thanks to Nikolas Poniros for
the report.
- Correctly format casts to quoted types. Thanks to Adam Vartanian for the
patch.
Changes in MySQL 5.7.37
Audit Log Notes
Previously, each event logged by MySQL Enterprise Audit included the SQL statement literal text. To provide an alternative (because it is possible that statements contain sensitive information), the audit log filtering language now supports logging a statement's digest rather than its literal text. For example, instead of logging this statement:
SELECT * FROM orders WHERE some_sensitive_column=1234567
The audit log plugin can log this digest:
SELECT * FROM `orders` WHERE `some_sensitive_column` = ?
This is similar to what is already logged for prepared statements, for which parameter markers appear rather than actual data values.
To perform digest logging, use audit filter definitions that replace the statement literal text by its corresponding digest, as discussed in Replacement of Event Field Values.
Because text replacement occurs at an early auditing stage (during filtering), the choice of whether to log statement literal text or digest values applies regardless of log format written later (that is, whether the audit log plugin produces XML or JSON output).
Compilation Notes
Binary packages that include curl rather than linking to the system curl library have been upgraded to use curl 7.80.0.
SQL Function and Operator Notes
Queries making use of the MBRContains() function did not employ all available spatial indexes.
The FORMAT() function returned a formatted number without showing the thousands separator and grouping between separators when either the es_ES or es_MX locale was specified.
Packaging Notes
The GnuPG build key used to sign MySQL downloadable packages has been updated. The previous GnuPG build key is set to expire on 2022-02-16. For information about verifying the integrity and authenticity of MySQL downloadable packages using GnuPG signature checking, or to obtain a copy of our public GnuPG build key, see Signature Checking Using GnuPG.
Due to the GnuPG key update, systems configured to use repo.mysql.com may report a signature verification error when upgrading to MySQL 5.7.37 and higher or to MySQL 8.0.28 and higher using apt or yum. Use one of the following methods to resolve this issue:
Manually reinstall the MySQL APT or YUM repository setup package from https://dev.mysql.com/downloads/.
Download the MySQL GnuPG public key and add it your system GPG keyring.
For MySQL APT repository instructions, see Appendix A: Adding and Configuring the MySQL APT Repository Manually.
For MySQL YUM repository instructions, see Upgrading MySQL with the MySQL Yum Repository.
Bugs Fixed
InnoDB: The buf_validate() function in the InnoDB sources was optimized, improving performance on debug builds.
Thanks to Hobert Lu for the contribution.
Partitioning: Creating a table with nondeterministic functions in generated column expressions should not be possible, but this was not enforced in all cases; a series of one or more ALTER TABLE statements could be employed to arrive at a partitioned table with one or more such generated columns. When attempting to execute the CREATE TABLE statement obtained by running SHOW CREATE TABLE against this table, MySQL rejected the statement with a misleading error message referring to the partitioning expression rather than to the problematic column, despite the fact that the partitioning expression itself was legal.
This was caused by the result of a check for any unsafe expressions defined for a generated column (in the internal variable thd->safe_to_cache_query), which was later checked again without being cleared while parsing the partition expression, leading to an error even when the partition expression did not refer to the problematic generated column expression. Now in such cases, we reset thd->safe_to_cache_query before parsing the partition function.
The issue of allowing the use of certain nondeterminstic functions (AES_ENCRYPT(), AES_DECRYPT(), RANDOM_BYTES()) in generated columns is handled separately.
Partitioning: A query using an index other than the primary key of a partitioned table sometimes resulted in excessive CPU load.
Replication: When the PAD_CHAR_TO_FULL_LENGTH SQL mode was enabled on a replica server, trailing spaces could be added to a replication channel’s name in the replication metadata repository tables, resulting in errors in replication operations that identified the channel using that data. The issue has now been fixed in MySQL 8.0 by using VARCHAR for character columns, and in MySQL 5.7 by disabling the SQL mode when reading from those tables. Thanks to Brian Yue for the contribution.
MySQL 5.7 did not handle the thread_stack variable in the same manner as MySQL 5.6 or MySQL 8.0.
It was possible in some cases to create a generated column of type SERIAL, which is not allowed.
See Numeric Data Type Syntax, and CREATE TABLE and Generated Columns, for more information
Statements which commit a transaction implicitly or explicitly are not allowed inside a trigger or a stored function. Both CREATE TRIGGER and CREATE FUNCTION should report an error (ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG) in this case, but did not correctly handle DROP TABLESPACE.
The MySQL session used for online keyring migration was not closed gracefully after the migration was complete, resulting in an “Aborted connection” note being printed to the error log.
SHOW PROCESSLIST could read freed memory when accessing the query string belonging to a connection that was in the process of deleting a prepared statement.
Privileges were not checked correctly for ALTER USER ... IDENTIFIED WITH ... BY.
OpenLDAP 2.6.1 Release (2022/01/20)
Fixed libldap to init client socket port
Fixed libldap with referrals
Added slapd config keyword for logfile format
Fixed slapd to allow objectClass edits with no net change
Fixed slapd configtable population
Fixed slapd to only set loglevel in server mode
Fixed slapd logfile-rotate use of uninitialized variable
Fixed slapd passwd scheme handling with slapd.conf
Fixed slapd postread support for modrdn
Fixed slapd syncrepl recreation of deleted entries
Fixed slapd syncrepl replication with ODSEE
Fixed slapd syncrepl to properly replicate glue entries
Fixed slapd syncrepl to reject REFRESH for precise resync
Fixed slapd syncrepl to avoid busy loop during refresh
Fixed slapd syncrepl when X-ORDERED is specified
Fixed slapd syncrepl to better handle out of order delete ops
Fixed slapd syncrepl to correctly close connections when config is deleted
Fixed slapd-mdb to update indices correctly on replace ops
Fixed slapd-wt to set correct flags
Fixed slapo-accesslog to fix assertion due to deprecated code
Fixed slapo-accesslog to fix inconsistently normalized minCSN
Fixed slapo-accesslog delete handling of multi-valued config attrs
Fixed slapo-autogroup to maintain values in insertion order
Fixed slapo-constraint to maintain values in insertion order
Fixed slapo-dyngroup to maintain values in insertion order
Fixed slapo-dynlist compare operation for static groups
Fixed slapo-dynlist static group filter with multiple members
Fixed slapo-ppolicy when not built modularly
Fixed slapo-refint to maintain values in insertion order
Fixed slapo-retcode to honor requested insert position
Fixed slapo-sock cn=config support
Fixed slapo-syncprov memory leak
Fixed slapo-syncprov to generate a more accurate accesslog query
Fixed slapo-syncprov to allow empty DB to host persistent syncrepl connections
Fixed slapo-syncprov to consider all deletes for sycnInfo messages
Fixed slapo-translucent to warn on invalid config
Fixed slapo-unique to warn on invalid config
Fixed slapo-valsort to maintain values in insertion order
Build Environment
Fix test022 to preserve DELAY search output
Fix slapd-watcher to allow startup when servers are down
Contrib
Fixed slapo-lastbind to work with 2.6 lastbind-precision configuration
Documentation
Fixed slapd.conf(5)/slapd-config(5) documentation on lastbind-precision
Fixed slapo-accesslog(5) to clarify logoldattr usage
Version 4.1.1
Changes
🚀 New Features
Add retries to connections in Sentinel Pools
OCSP Stapling Support
Define incr/decr as aliases of incrby/decrby
FT.CREATE - support MAXTEXTFIELDS, TEMPORARY, NOHL, NOFREQS, SKIPINITIALSCAN
🐛 Bug Fixes
Timeseries docs fix
get_connection: catch OSError too
Set keys var otherwise variable not created
Clusters should optionally require full slot coverage
🧰 Maintenance
Triple quote docstrings in client.py PEP 257
syncing requirements
Typo and typing in GraphCommands documentation
Allowing poetry and redis-py to install together
setup.py: Add project_urls for PyPI
Support test with redis unstable docker
Connection examples
Documentation cleanup
7.0.1 (2021-01-06)
* Change QueryMethods#in_order_of to drop records not listed in values.
in_order_of now filters down to the values provided, to match the
behavior of the Enumerable version.
Kevin Newton
* Allow named expression indexes to be revertible.
Previously, the following code would raise an error in a reversible
migration executed while rolling back, due to the index name not
being used in the index removal.
add_index(:settings, "(data->'property')", using: :gin, name: :index_settings_data_property)
Fixes#43331.
Oliver Günther
* Better error messages when association name is invalid in the
argument of ActiveRecord::QueryMethods::WhereChain#missing.
ykpythemind
* Fix ordered migrations for single db in multi db environment.
Himanshu
* Extract on update CURRENT_TIMESTAMP for mysql2 adapter.
Kazuhiro Masuda
* Fix incorrect argument in PostgreSQL structure dump tasks.
Updating the --no-comment argument added in Rails 7 to the correct
--no-comments argument.
Alex Dent
* Fix schema dumping column default SQL values for sqlite3.
fatkodima
* Correctly parse complex check constraint expressions for PostgreSQL.
fatkodima
* Fix timestamptz attributes on PostgreSQL handle blank inputs.
Alex Ghiculescu
Fix migration compatibility to create SQLite references/belongs_to
column as integer when migration version is 6.0.
Reference/belongs_to in migrations with version 6.0 were creating
columns as bigint instead of integer for the SQLite Adapter.
Marcelo Lauxen
* Fix joining through a polymorphic association.
Alexandre Ruban
* Fix QueryMethods#in_order_of to handle empty order list.
Post.in_order_of(:id, []).to_a Also more explicitly set the column
as secondary order, so that any other value is still ordered.
Jean Boussier
* Fix rails dbconsole for 3-tier config.
Eileen M. Uchitelle
* Fix quoting of column aliases generated by calculation methods.
Since the alias is derived from the table name, we can't assume the
result is a valid identifier.
class Test < ActiveRecord::Base
self.table_name = '1abc'
end
Test.group(:id).count
# syntax error at or near "1" (ActiveRecord::StatementInvalid)
# LINE 1: SELECT COUNT(*) AS count_all, "1abc"."id" AS 1abc_id FROM "1...
Jean Boussier
Add gdbm gem as ruby-gdbm-gem package version 2.1.0.
Note:
* Ruby 2.6 contains gdbm 2.0.0.
* Ruby 2.7 and Ruby 3.0 contains gdbm 2.1.0, but no conflict.
* Ruby 3.1 dose not contain gdbm.
GDBM
GNU dbm is a library for simple databases. A database is a file that stores
key-value pairs. Gdbm allows the user to store, retrieve, and delete data
by key. It furthermore allows a non-sorted traversal of all key-value
pairs. A gdbm database thus provides the same functionality as a hash. As
with objects of the Hash class, elements can be accessed with [].
Furthermore, GDBM mixes in the Enumerable module, thus providing convenient
methods such as #find, #collect, #map, etc.
A process is allowed to open several different databases at the same time.
A process can open a database as a "reader" or a "writer". Whereas a reader
has only read-access to the database, a writer has read- and write-access.
A database can be accessed either by any number of readers or by exactly one
writer at the same time.
Add dbm gem as ruby-dbm package version 1.1.0.
Note:
* Ruby 2.6 contains dbm 1.0.0.
* Ruby 2.7 and Ruby 3.0 contains dbm 1.1.0, but no conflict.
* Ruby 3.1 dose not contain dbm.
DBM
The DBM class provides a wrapper to a Unix-style dbm or Database Manager
library.
Dbm databases do not have tables or columns; they are simple key-value data
stores, like a Ruby Hash except not resident in RAM. Keys and values must
be strings.
The exact library used depends on how Ruby was compiled. It could be any of
the following:
* The original ndbm library is released in 4.3BSD. It is based on dbm
library in Unix Version 7 but has different API to support multiple
databases in a process.
* Berkeley DB versions 1 thru 5, also known as BDB and Sleepycat DB, now
owned by Oracle Corporation.
* Berkeley DB 1.x, still found in 4.4BSD derivatives (FreeBSD, OpenBSD,
etc).
* gdbm, the GNU implementation of dbm.
* qdbm, another open source reimplementation of dbm.
All of these dbm implementations have their own Ruby interfaces available,
which provide richer (but varying) APIs.
3.37.0-r1
Allow breaking of reference cycles between objects that contain a Connection or Cursor, and also use callbacks from that object (eg busy handler).
This is the last release supporting Python 2 and Python 3 before 3.7. If you still use those Python versions then you should pin to this APSW version. (More information).
Windows Python 3.10 binaries are available to download. The .exe format is no longer available with this Python version.
Fixed custom VFS extension loading failure could leave the error message unterminated.
Updated size of mutex array used by the fork checker
Connections are opened with SQLITE_OPEN_EXRESCODE so open errors will also include extended result codes.
Connection.changes() and Connection.totalchanges() use the new SQLite APIs that return 64 bit values (ie can now return values greater than 2 billion).
Added Connection.autovacuum_pages().
Added constants:
SQLITE_CONSTRAINT_DATATYPE, SQLITE_OPEN_EXRESCODE
Version 4.1.0
🚀 New Features
OCSP stapling support
Support for SELECT
Support for specifying error types with retry
Support for RESET command since Redis 6.2.0
Support CLIENT TRACKING
Support WRITE in CLIENT PAUSE
JSON set_file and set_path support
Allow ssl_ca_path with rediss:// urls
Support for password-encrypted SSL private keys
Support SYNC and PSYNC
🐛 Bug Fixes
Retry on error exception and timeout fixes
Fixing read race condition during pubsub
Fixing exception in listen
Fixed MovedError, and stopped iterating through startup nodes when slots are fully covered
Socket not closing after server disconnect
Single sourcing the package version
Ensure redis_connect_func is set on uds connection
🧰 Maintenance
SRTALGO - Skip for redis versions greater than 7.0.0
Documentation updates
Add CI action to install package from repository commit hash
Fix link in lmove docstring
Disabling JSON.DEBUG tests
Version 4.0.2
🐛 Bug Fixes
Restoring Sentinel commands to redis client
Better removal of hiredis warning
🧰 Maintenance
Adding links to redis documents in function calls
Version 4.0.1
🐛 Bug Fixes
Removing command on initial connections
Removing hiredis warning when not installed
Version 4.0.0
🚀 New Features
FT.EXPLAINCLI intentionally raising NotImplementedError
🐛 Bug Fixes
Restoring ZRANGE desc for Redis < 6.2.0
Response parsing occasionally fails to parse floats
Re-enabling read-the-docs
🧰 Maintenance
Call HSET after FT.CREATE to avoid keyspace scan
Unit tests fixes for compatibility
Improve documentation about Locks
Fixes to allow --redis-url to pass through all tests
Fix unit tests running against Redis 4.0.0
Search alias test fix
Adding RediSearch/RedisJSON tests
Updating codecov rules
Tests to validate custom JSON decoders
Added breaking icon to release drafter
Changes in version 3.37.2:
Fix a bug introduced in version 3.35.0 (2021-03-12) that can cause database corruption if a SAVEPOINT is rolled back while in PRAGMA temp_store=MEMORY mode, and other changes are made, and then the outer transaction commits. Check-in 73c2b50211d3ae26
Fix a long-standing problem with ON DELETE CASCADE and ON UPDATE CASCADE in which a cache of the bytecode used to implement the cascading change was not being reset following a local DDL change. Check-in 5232c9777fe4fb13.
Other minor fixes that should not impact production builds.