Subject: CVS commit: pkgsrc/databases
From: Adam Ciarcinski
Date: 2018-08-16 18:06:09
Message id: 20180816160609.7DCE3FBEC@cvs.NetBSD.org

Log Message:
mysql57: updated to 5.7.23

5.7.23:
Functionality Added or Changed

Previously, for the --ssl-mode=VERIFY_IDENTITY or --ssl-verify-server-cert \ 
option, the client checked whether the host name that it used for connecting \ 
matched the Common Name value in the certificate but not the Subject Alternative \ 
Name value. Now, if the client uses OpenSSL 1.0.2 or higher, the client checks \ 
whether the host name matches either the Subject Alternative Name value or the \ 
Common Name value in the server certificate. Thanks to Daniƫl van Eeden for a \ 
patch on which this change was based.

Bugs Fixed

Important Change; Partitioning: After creating partitioned InnoDB tables with \ 
very long names, the table_name columns in the corresponding entries in the \ 
mysql.innodb_index_stats and mysql.innodb_table_stats system tables were \ 
truncated. To fix this issue, the length of the table_name column in each of \ 
these tables has been increased from 64 to 199 characters. In both cases, this \ 
is now the same as the lengths of these columns in MySQL 8.0.

InnoDB: The ngram full-text search parser permitted comma and period characters \ 
to be tokenized as words, which caused an inconsistency between boolean and \ 
natural language mode search results. Comma and period characters are no longer \ 
tokenized.

InnoDB: An I/O error returned by an fsync() operation is now treated as a hard error.

InnoDB: A schema mismatch error reported during an import tablespace operation \ 
failed to print mismatched table flags in a readable format.

InnoDB: A DDL operation failed to wait for a FULLTEXT index optimization \ 
operation to finish.

InnoDB: An unnecessary check for read-only transactions was removed from the \ 
trx_set_rw_mode() function. Thanks to Sandeep Sethia for the patch.

InnoDB: A DDL operation that added a foreign key constraint raised an assertion \ 
when it accessed a stale memory object that belonged to the parent table.

InnoDB: A DDL operation on a table with a FULLTEXT index during full-text index \ 
cache synchronization caused an assertion failure.

InnoDB: A failing assertion occurred after initiating a memcached get operation.

InnoDB: A corrupt index ID encountered during a foreign key check raised an \ 
assertion.

InnoDB: An internal deadlock during a DDL operation resulted in a long semaphore \ 
wait followed by a server exit.

InnoDB: A DDL operation encountered a serious error due to an invalid lock upgrade.

InnoDB: On a Windows 64-bit system, invalid buffer pool configuration values \ 
caused the server to exit on startup.

Partitioning: For a partitioned table, partition update time could be incorrect \ 
after rebuilding the table or restarting the server.

Partitioning: An extraneous row lock was imposed by an update to a partitioned \ 
InnoDB table.

Replication: The log messages generated when a member fails to join the group \ 
have been improved, for example when group_replication_group_name on the member \ 
joining the group does not match the seed's group_replication_group_name this is \ 
now described in the log message.

Replication: The ER_GRP_RPL_SQL_SERVICE_FAILED_TO_RUN_SQL_QUERY error was being \ 
logged incorrectly.

Replication: The use of replication filters or binary log filters can cause \ 
issues when they are applied to tables that are updated with XA transactions. \ 
Filtering of tables could cause an XA transaction to be empty on a replication \ 
slave, and empty XA transactions are not supported. Also, with the settings \ 
master_info_repository=TABLE and relay_log_info_repository=TABLE on a \ 
replication slave, which became the defaults in MySQL 8.0, the internal state of \ 
the data engine transaction is changed following a filtered XA transaction, and \ 
can become inconsistent with the replication transaction context state.

Due to these issues, the use of replication filters or binary log filters in \ 
combination with XA transactions is not supported. This fix adds the new error \ 
ER_XA_REPLICATION_FILTERS, which is logged whenever an XA transaction is \ 
impacted by a replication filter, whether or not the transaction was empty as a \ 
result. If the transaction is not empty, the replication slave is able to \ 
continue running, but you should take steps to discontinue the use of \ 
replication filters with XA transactions in order to avoid potential issues. If \ 
the transaction is empty, the replication slave stops. In that event, the \ 
replication slave might be in an undetermined state in which the consistency of \ 
the replication process might be compromised. In particular, the gtid_executed \ 
set on a slave of the slave might be inconsistent with that on the master. To \ 
resolve this situation, isolate the master and stop all replication, then check \ 
GTID consistency across the replication topology. Undo the XA tran
saction that generated the error message, then restart replication.

Replication: When a transaction larger than the binary log transaction cache \ 
size (binlog_cache_size) was flushed to a temporary file during processing, and \ 
the flush failed due to a lack of space in the temporary directory, the flush \ 
error was not handled correctly. No message was written to the error log, and \ 
the binary log cache was not cleared after the transaction was rolled back. Now, \ 
in this situation, the server takes an appropriate action based on the \ 
binlog_error_action setting (shut down the server or halt logging), and writes a \ 
message to the error log. When the transaction is rolled back, the server checks \ 
for flush errors and clears the binary log cache if any occurred.

Replication: Using an IP address or hostname in any Group Replication related \ 
configuration on macOS was failing.

Replication: When GTIDs are in use for replication, replicated transactions that \ 
are filtered out on the slave are persisted. If binary logging is enabled on the \ 
slave, the filtered-out transaction is written to the binary log as a \ 
Gtid_log_event followed by an empty transaction containing only BEGIN and COMMIT \ 
statements. If binary logging is disabled, the GTID of the filtered-out \ 
transaction is written to the mysql.gtid_executed table. This process ensures \ 
that there are no gaps in the set of executed GTIDs, and that the filtered-out \ 
transactions are not retrieved again if the slave reconnects to the master. \ 
Previously, this process was not done for CREATE DATABASE, ALTER DATABASE, and \ 
DROP DATABASE statements, but it is now carried out for those statements as well \ 
as for others.

Replication: On a multithreaded slave, when a STOP SLAVE statement is executed \ 
on the slave, followed by a START SLAVE statement, the error log can report a \ 
different position in the binary log for the slave SQL thread when exiting, \ 
compared to the position reported for the slave SQL thread at the subsequent \ 
initialization.

For a multithreaded slave, the position reported for the SQL thread on exit is a \ 
low water mark, up to which the replication stream is consistent and has no \ 
gaps. Transactions appearing before the position are guaranteed to have \ 
committed, but transactions after the position may have committed or not. \ 
However, this low water mark was being reported before the process to stop the \ 
worker threads was actually carried out, and the low water mark was subsequently \ 
updated by a checkpoint routine during that process. The timing of the log \ 
message has now been changed so that the final low water mark is reported as the \ 
position for the SQL thread on exit.

Replication: In certain situations, such as during distributed recovery \ 
procedure, the certification info garbage collection was purging more data than \ 
it should, resulting in conflicts not being detected. The garbage collection \ 
procedure has been improved to take this case in consideration.

Replication: When the group_replication_applier channel's applier thread \ 
encountered an error, the master_log_name and end_log_pos in the error message \ 
were incorrect. In Group Replication, the events of a transaction are replicated \ 
before they are written to the binary log of the member where the transaction \ 
originated. The result is that the final master_log_name and the end_log_pos of \ 
those events are unknown at the time they are applied on the replica by \ 
group_replication_applier channel's applier thread. To avoid confusion, now any \ 
such error messages encountered by a group_replication_applier channel do not \ 
contain the binary log name and the binary log position.

A heap overflow vulnerability in the MySQL client library was fixed.

For generated columns that used the INTERVAL() function, incorrect behavior \ 
could occur.

The exec_in_background command for mysqltest is now available in MySQL 5.7.

An unencrypted connection could result from a client connection attempt \ 
specifying that an encrypted connection was required, if the server was not \ 
configured to support SSL.

A BETWEEN clause comparing negative values could lead to erroneous results.

Audit log filter rules did not permit class names to be specified as an array of \ 
strings.

Files:
RevisionActionfile
1.12modifypkgsrc/databases/mysql57-client/Makefile.common
1.9modifypkgsrc/databases/mysql57-client/PLIST
1.22modifypkgsrc/databases/mysql57-client/distinfo
1.9modifypkgsrc/databases/mysql57-client/patches/patch-cmake_boost.cmake
1.9modifypkgsrc/databases/mysql57-server/PLIST