summaryrefslogtreecommitdiff
path: root/databases/mysql57-client/patches
AgeCommit message (Collapse)AuthorFilesLines
2021-11-10mysql57-client: Support OpenSSL 3.jperkin1-3/+49
2021-07-25mysql57: updated to 5.7.35adam1-4/+4
Changes in MySQL 5.7.35 (2021-07-20, General Availability) Audit Log Notes Deprecation and Removal Notes Packaging Notes Bugs Fixed Audit Log Notes For MySQL Enterprise Audit, the new audit_log_format_unix_timestamp system variable enables inclusion of a time field in each audit record. The field value is an integer that represents the UNIX timestamp value indicating the date and time when the audit event was generated. The time field is supported only for JSON-format log files. Deprecation and Removal Notes The TLSv1 and TLSv1.1 connection protocols now are deprecated and support for them is subject to removal in a future MySQL version. (For background, refer to the IETF memo Deprecating TLSv1.0 and TLSv1.1.) It is recommended that connections be made using the more-secure TLSv1.2 and TLSv1.3 protocols. TLSv1.3 requires that both the MySQL server and the client application be compiled with OpenSSL 1.1.1 or higher. On the server side, this deprecation has the following effects: If the tls_version system variable is assigned a value containing a deprecated TLS protocol during server startup, the server writes a warning for each deprecated protocol to the error log. If a client successfully connects using a deprecated TLS protocol, the server writes a warning to the error log. On the client side, the deprecation has no visible effect. Clients do not issue a warning if configured to permit a deprecated TLS protocol. This includes: Client programs that support a --tls-version option for specifying TLS protocols for connections to the MySQL server. Statements that enable replicas to specify TLS protocols for connections to the source server. (CHANGE MASTER TO has a MASTER_TLS_VERSION option.) Packaging Notes Binary packages that include curl rather than linking to the system curl library have been upgraded to use curl 7.77.0. The bundled lz4 library was upgraded to version 1.9.3. Bugs Fixed InnoDB: A deadlock between a user thread and purge thread involving a undo log page and rollback segment page occurred after an undo tablespace truncate operation was initiated. The deadlock caused a long semaphore wait and an eventual failure. InnoDB: An integer underflow issue was addressed in the InnoDB mecached plugin sources. InnoDB: An index with a key prefix length greater than 767 bytes was permitted on a table defined with the REDUNDANT row format, exceeding the index key prefix length limit for that row format. The ALTER TABLE operation that added the index validated the index key prefix length for the row format defined by the innodb_default_row_format variable instead of the actual row format of the table. The fix ensures that index key prefix length is validated for the correct row format. InnoDB: An online buffer pool resizing operation freed the previous buffer pool page hash, conflicting with a concurrent buffer pool lookup that required the previous page hash. InnoDB: Numerous system temporary table pages at the tail of the buffer pool flush list caused a performance degradation. The flush_list_mutex was held while the flush list scan traversed over system temporary table pages. The flush list scan now excludes system temporary table pages. InnoDB: A binary log rotation deadlock occurred on a system using statement-based replication where there was high number of concurrent update operations and low innodb_thread_concurrency setting. Replication: When the system variable replication_optimize_for_static_plugin_config was set, the plugins for Group Replication and semi-synchronous replication could not be uninstalled cleanly on server shutdown. Replication: A deadlock could occur when START GROUP_REPLICATION and STOP GROUP_REPLICATION statements were issued at the same time that a view change was taking place for the group. Replication: A deadlock could occur if a STOP GROUP_REPLICATION statement was issued when a replication channel on a group member was attempting to commit a transaction. The server now rolls back the transaction immediately if it cannot acquire the relevant lock, rather than waiting for the lock and the commit to complete and causing the deadlock. Replication: On a multithreaded replica, the reference to the active event was sometimes managed incorrectly when retrying a transaction. Replication: Replica servers now check and validate the transaction ID part of a GTID before applying and committing the transaction associated with it. Replication: Replication could stop on a multithreaded replica if a unique secondary key was omitted from the writeset hashes used to compute transaction dependencies, leading to errors when executing the transactions on the multithreaded replica. Write set hashes now always include unique secondary keys even if they are not included in the read set and write set. JSON: Passing NULL to a stored procedure expecting a JSON parameter led to an assertion failure in debug builds. Replication could fail if a DML statement was executed immediately after an XA transaction was rejected or forced to rollback due to a deadlock. The mysql_change_user() C API function did not properly parse the COM_CHANGE_USER packet, which could result in silent failure to process optional query attributes that may have been supplied prior to the mysql_change_user() call. Thanks for René Cannaò for the contribution. Repreparation of a prepared statement at the beginning of an implicit transaction could cause an ER_GTID_NEXT_TYPE_UNDEFINED_GROUP error. An out-of-memory error occurred when loading large amounts of data into tables with full-text search indexes. Not all of the memory allocated to the full-text search cache was accounted for when inserting data into the full-text search auxiliary tables. A secondary index over a virtual column became corrupted when the index was built online. For UPDATE statements, we fix this as follows: If the virtual column value of the index record is set to NULL, then we generate this value from the cluster index record. Boolean system variables could be assigned a negative value.
2021-04-29mysql57: fix building with GCCadam1-0/+24
2021-04-21mysql57: updated to 5.7.34adam2-15/+12
Changes in MySQL 5.7.34 (2021-04-20, General Availability) Configuration Notes The CMAKE_BUILD_TYPE CMake option now supports a Release build type, which is like the RelWithDebInfo build type but omits debugging information to reduce the build size. Packaging Notes The bundled libedit library was upgraded to version 20190324-3.1. Binary packages that include curl rather than linking to the system curl library have been upgraded to use curl 7.74.0. Security Notes The linked OpenSSL library for MySQL Server has been updated to version 1.1.1k. Issues fixed in the new OpenSSL version are described at https://www.openssl.org/news/cl111.txt and https://www.openssl.org/news/vulnerabilities.html. Functionality Added or Changed Microsoft Windows: The named_pipe_full_access_group system variable now defaults to an empty string (''), making named pipe connections secure. Previously, '*everyone*' was the default value. A valid Windows local group name may be substituted. Bugs Fixed InnoDB: The introduction of sharded rw_lock_stats counters in MySQL 5.7 caused a regression in CPU cache efficiency. To address this issue in MySQL 5.7, the sharding method was changed. For optimal performance, the rw_lock_stats counter is removed in MySQL 8.0. InnoDB: A delete operation on a parent table that initiated a cascading update on a child table with an indexed virtual column and indexed foreign key constraint column caused a virtual column corruption. InnoDB: An adaptive hash index (AHI) latch was held in shared mode by a thread truncating a large table, causing mutex waits for other threads. The AHI latch was not required and has been removed. InnoDB: The open and close sequence for table share instances (m_share objects) and dictionary table instances was modified to prevent accessing old m_share objects that could point to stale dictionary indexes. Thanks to Yuxiang Jiang for the contribution. InnoDB: An online ALTER TABLE operation failed with an “Incorrect key file for table” error due to an unnecessary encryption status check that was performed when reading online DDL row logs. Replication: If all previous binary log files were purged at startup because their retention period had expired, the new binary log file contained an empty Previous_gtids event, which could cause errors in replication. The order of initialization has now been changed so that previous binary log files are only purged after the previous GTID set has been written to the new binary log file that is created at startup. Replication: An assertion was raised in debug builds relating to lost GTIDs if binary log files were removed at startup because their retention period had expired. Replication: A deadlock could occur if the binary log file was rotated while system variables were being updated and read by different clients. Replication: The output of a SHOW PROCESSLIST statement for a replica’s SQL thread sometimes showed the last query as currently being applied when the replica was actually caught up. A query string was displayed before it had been rewritten. For builds compiled using the libedit library, if the mysql client was invoked with the --default-character-set=utf8 option, libedit rejected input of multibyte characters. On Windows, large result sets could cause the mysql client to exit unexpectedly. Improper locking on an internal queue could cause mysqlpump to exit unexpectedly. It is now possible to use START REPLICA SQL_THREAD and STOP REPLICA SQL_THREAD statements for the group_replication_applier channel when Group Replication is stopped. This enables an operator to apply any remaining unapplied transactions on a server that left the group, without having to rejoin the server to the group. When the mysql client was used in batch mode, its parser could be confused by USE followed by DROP DATABASE when the USE database name was quoted. While optimizing the ORDER BY clause of a subquery there was a possibility of cleaning up a subquery tree referenced in the outer SELECT, which could lead to a premature exit. A malformed name in the mysql.func system table could cause unexpected server behavior. Sessions could disable their own auditing. Mishandling of stored program local variables could lead to unexpected server behavior. Uninstalling a plugin could affect subsequent execution of prepared statements.
2021-02-04mysql57: updated to 5.7.33adam1-0/+19
Changes in MySQL 5.7.33 Optimizer Notes MySQL attempts to use an ordered index for any ORDER BY or GROUP BY query that has a LIMIT clause, overriding any other choices made by the optimizer, whenever it determines that this would result in faster execution. Because the algorithm for making this determination makes certain assumptions about data distribution and other conditions, it may not always be completely correct, and it is possible in some cases that choosing a different optimization for such queries can provide better performance. To handle such occurrences, it is now possible to disable this optimization by setting the optimizer_switch system variable's prefer_ordering_index flag to off. For more information about this flag and examples of its use, see Switchable Optimizations, and LIMIT Query Optimization. Our thanks to Jeremy Cole for the contribution. Security Notes The linked OpenSSL library for MySQL Server has been updated to version 1.1.1i. Issues fixed in the new OpenSSL version are described at https://www.openssl.org/news/cl111.txt and https://www.openssl.org/news/vulnerabilities.html. Functionality Added or Changed When invoked with the --all-databases option, mysqldump now dumps the mysql database first, so that when the dump file is reloaded, any accounts named in the DEFINER clause of other objects will already have been created. Bugs Fixed InnoDB: The full-text search synchronization thread attempted to read a previously-freed word from the index cache. InnoDB: Calls to numa_all_nodes_ptr were replaced by the numa_get_mems_allowed() function. Thanks to Daniel Black for the contribution. Replication: When the system variable transaction_write_set_extraction=XXHASH64 is set, which is the default in MySQL 8.0 and a requirement for Group Replication, the collection of writes for a transaction previously had no upper size limit. Now, for standard source to replica replication, the numeric limit on write sets specified by binlog_transaction_dependency_history_size is applied, after which the write set information is discarded but the transaction continues to execute. Because the write set information is then unavailable for the dependency calculation, the transaction is marked as non-concurrent, and is processed sequentially on the replica. For Group Replication, the process of extracting the writes from a transaction is required for conflict detection and certification on all group members, so the write set information cannot be discarded if the transaction is to complete. The byte limit set by group_replication_transaction_size_limit is applied instead of the numeric limit, and if the limit is exceeded, the transaction fails to execute. Replication: As the number of replicas replicating from a semisynchronous source server increased, locking contention could result in a performance degradation. The locking mechanisms used by the plugins have been changed to use shared locks where possible, avoid unnecessary lock acquisitions, and limit callbacks. The new behaviors can be implemented by enabling the following system variables: replication_sender_observe_commit_only=1 limits callbacks. replication_optimize_for_static_plugin_config=1 adds shared locks and avoids unnecessary lock acquisitions. This system variable must be disabled if you want to uninstall the plugin. Both system variables can be enabled before or after installing the semisynchronous replication plugin, and can be enabled while replication is running. Semisynchronous replication source servers can also get performance benefits from enabling these system variables, because they use the same locking mechanisms as the replicas. Replication: On a multi-threaded replica where the commit order is preserved, worker threads must wait for all transactions that occur earlier in the relay log to commit before committing their own transactions. If a deadlock occurs because a thread waiting to commit a transaction later in the commit order has locked rows needed by a transaction earlier in the commit order, a deadlock detection algorithm signals the waiting thread to roll back its transaction. Previously, if transaction retries were not available, the worker thread that rolled back its transaction would exit immediately without signalling other worker threads in the commit order, which could stall replication. A worker thread in this situation now waits for its turn to call the rollback function, which means it signals the other threads correctly. Replication: GTIDs are only available on a server instance up to the number of non-negative values for a signed 64-bit integer (2 to the power of 63 minus 1). If you set the value of gtid_purged to a number that approaches this limit, subsequent commits can cause the server to run out of GTIDs and take the action specified by binlog_error_action. From MySQL 8.0.23, a warning message is issued when the server instance is approaching the limit. Microsoft Windows: On Windows, running the MySQL server as a service caused shared-memory connections to fail. The server did not handle all cases of the WHERE_CONDITION optimization correctly. For the engines which support primary key extension, when the total key length exceeded MAX_KEY_LENGTH or the number of key parts exceeded MAX_REF_PARTS, key parts of primary keys which did not fit within these limits were not added to the secondary key, but key parts of primary keys were unconditionally marked as part of secondary keys. This led to a situation in which the secondary key was treated as a covering index, which meant sometimes the wrong access method was chosen. This is fixed by modifying the way in which key parts of primary keys are added to secondary keys so that those which do not fit within which do not fit within the limits mentioned previously mentioned are cleared. Privileges for some INFORMATION_SCHEMA tables were checked incorrectly. In certain cases, the server did not handle multiply-nested subqueries correctly. Certain accounts could cause server startup failure if the skip_name_resolve system variable was enabled. Client programs could unexpectedly exit if communication packets contained bad data. A buffer overflow in the client library was fixed. mysql_config_editor incorrectly treated # in password values as a comment character.
2020-08-05mysql57: updated to 5.7.31adam1-24/+0
Changes in MySQL 5.7.31 Configuration Notes tcmalloc is no longer a permitted value for the mysqld_safe --malloc-lib option. Packaging Notes The libevent library bundled with MySQL was upgraded to version 2.1.11. In addition, for the WITH_LIBEVENT CMake option, the following two changes were made: yes is no longer permitted as a synonym for system. Use system instead. If system is specified but no system libevent is found, the bundled version is no longer used in place of the missing system library, and an error occurs instead. Security Notes Incompatible Change: Access to the INFORMATION_SCHEMA.FILES table now requires the PROCESS privilege. This change affects users of the mysqldump command, which accesses tablespace information in the FILES table, and thus now requires the PROCESS privilege as well. Users who do not need to dump tablespace information can work around this requirement by invoking mysqldump with the --no-tablespaces option. The linked OpenSSL library for MySQL Server has been updated to version 1.1.1g. Issues fixed in the new OpenSSL version are described at https://www.openssl.org/news/cl111.txt and https://www.openssl.org/news/vulnerabilities.html. Bugs Fixed InnoDB: The INNODB_METRICS table AVG_COUNT_RESET value for a counter defined as a module owner reported NULL. The METRIC_AVG_VALUE_RESET field was incorrectly marked as NULL. InnoDB: Purge thread activity was excessive when the history list length approached zero, wasting CPU resource and causing mutex contention. InnoDB: The server failed intermittently with an “ibuf cursor restoration fails” error. InnoDB: A fatal “page still fixed or dirty” error occurred during shutdown. Partitioning: A query against a partitioned table, which used an ORDER BY, returned unordered results under the following conditions: The table had a composite index with a prefix on one of the columns. The query's WHERE clause contained an equality condition on the prefixed column. The column with the prefix was the leftmost column in the index. The column used in the ORDER BY was the rightmost column in the index. The index was used for handling the ORDER BY. Our thanks to Quanan Han for the contribution. Replication: When a replication source server shuts down and restarts, its MEMORY tables become empty. To replicate this effect to replicas, the first time that the source uses a given MEMORY table after startup, it notifies replicas that the table must be emptied by writing a DELETE statement for that table to the binary log. Previously, the generated DELETE statement was written to the binary log statement cache for the current session, which could result in it being logged together with other statements under the same GTID, or logged without BEGIN and COMMIT statements. Also, in some situations, the generated DELETE statement could consume the GTID intended for the transaction that triggered it. The generated DELETE statement is now logged with accompanying BEGIN and COMMIT statements, and the resulting transaction is flushed to the binary log immediately after it is written to the statement cache, so that it always receives its own GTID and is kept separate from other transactions. Replication: Internal queries from Group Replication to the Performance Schema for statistics on local group members failed if they occurred simultaneously with changes to the group's membership. Locking for the internal queries has been improved to fix the issue. Replication: A fix made in MySQL 8.0.14 and MySQL 5.7.25 for a deadlock scenario involving the system variables binlog_transaction_dependency_tracking and binlog_transaction_dependency_history_size had the side effect of leaving the writeset history used for transaction dependency tracking unprotected from concurrent update. The writeset history and tracking mode are now locked correctly whenever they are accessed. Configuring with -DWITH_EDITLINE=system resulted in compilation failures for older library versions. The upgrade of the bundled libedit library in the previous MySQL distribution caused a problem for builds using that library such that CTRL+C (SIGINT) in the mysql client required a following Enter to take effect in some circumstances. Assigning CONCAT('') or CONCAT_WS('') to a variable set the variable to NULL, not the empty string. The gen_range() user-defined function could mishandle its arguments, causing a server exit. During UPDATE processing, conversion of an internal in-memory table to InnoDB could result in a key-length error. It is possible to define a column named * (single asterisk character), but SELECT `*` was treated identically to SELECT *, making it impossible to select only this column in a query; in other words, the asterisk character was expanded to a list of all table columns even when it was surrounded by backticks. An internal packet-length function returned values of the wrong integer type. Calculations by mysqldump for the length of INSERT statements did not take into account the _binary character set introducer used for VARBINARY strings. mysql_store_result() could fail to detect invalid data packets. In a multiple-table UPDATE that updated the key of the first table, if a temporary table strategy was used, duplicate entries could be written to the temporary table, followed by occurrence of a Can't find record error. The optimizer could attempt to access a pseudo table as a table, resulting in unexpected server behavior. The server sometimes mistakenly removed a subquery with a GROUP BY when optimizing a query, even in some cases when this subquery was used by an outer select. This could occur when the subquery also used an aggregate function. Coercibility of the NAME_CONST() function was assessed incorrectly. Incorrect results could occur when the optimizer chose an index on a generated column to fetch values.
2020-05-07mysql57: updated to 5.7.30adam7-61/+88
Changes in MySQL 5.7.30: JSON Notes The rapidjson library included with MySQL has been upgraded to the GitHub snapshot of 16 January 2020. A fix for a compiler error encountered when building from the snapshot on Mac OS X has been added. Packaging Notes Binary packages that include curl rather than linking to the system curl library have been upgraded to use curl 7.69.0. The bundled libedit library was upgraded to version 3.1. Bugs Fixed InnoDB: The row_upd_clust_rec_by_insert function, which marks a clustered index record as deleted and inserts an updated version of the record into the clustered index, passed an incorrect n_ext value (the total number of external fields) to lower level functions, causing an assertion failure. InnoDB: An operation performed with the innodb_buffer_pool_evict debug variable set to uncompressed caused an assertion failure. InnoDB: An add column operation caused an assertion failure. The failure was due to a dangling pointer. InnoDB: Updating certain InnoDB system variables that take string values raised invalid read errors during Valgrind testing. InnoDB: An insert statement on a table with a spatial index raised a record type mismatch assertion due to a tuple corruption. InnoDB: A function that calculates undo log record size could calculate an incorrect length value in the case of a corrupted undo log record, resulting in a malloc failure. Assertion code was added to detect incorrect calculations. Replication: While an SQL statement was in the process of being rewritten for the binary log so that sensitive information did not appear in plain text, if a SHOW PROCESSLIST statement was used to inspect the query, the query could become corrupted when it was written to the binary log, causing replication to stop. The process of rewriting the query is now kept private, and the query thread is updated only when rewriting is complete. Replication: When a GRANT or REVOKE statement is only partially executed, an incident event is logged in the binary log, which makes the replication slave's applier thread stop so that the slave can be reconciled manually with the master. Previously, if a failed GRANT or REVOKE statement was the first statement executed in the session, no GTID was applied to the incident event (because the cache manager did not yet exist for the session), causing an error on the replication slave. Also, no incident event was logged in the situation where a GRANT statement created a user but then failed because the privileges had been specified incorrectly, again causing an error on the replication slave. Both these issues have now been fixed. Replication: When a replication slave has a generated column that the master does not have in that table, with a secondary index on the generated column, the generated expression should be evaluated and the value stored by the storage engine in the secondary index. When row-based binary logging is in use, the replication slave assigns default values to any fields that are not in the master's definition of the table. In the case of a generated column, which does not have a default value, the slave was previously assigning a null or a zero value to the column. This value was then stored by the storage engine in the secondary index, causing both the table and the index to become corrupted. To fix this issue, generated columns in a table on a replication slave are now re-evaluated before the values are sent to the storage engine. Replication: In the event of an unplanned disconnection of a replication slave from the master, the reference to the master's dump thread might not be removed from the list of registered slaves, in which case statements that accessed the list of slaves would fail. The issue has now been fixed. Replication: With the settings binlog_format=MIXED, tx_isolation=READ-COMMITTED, and binlog_row_image=FULL, an INSERT ... SELECT query involving a transactional storage engine omitted any columns with a null value from the row image written to the binary log. This happened because when processing INSERT ... SELECT statements, the columns were marked for inserts before the binary logging format was selected. The issue has now been fixed. The -libs-compat RPM package is now built with system zlib to avoid problems with unrestricted export of symbols in libmysqlclient.so.18. The Event Scheduler had a memory leak. Under certain circumstances, a memcached command could result in reading an uninitialized memory buffer, causing a failure. Using ALTER USER to reset an account MAX_USER_CONNECTIONS value did not take effect until all current account connections terminated, if there were any. A materialized subquery including a condition in which a column value was used as input to a nondeterministic function produced incorrect results. CONCAT() and CONCAT_WS() could produce incorrect results in rare cases due to incorrect substring handling. Scheduling of events could be disturbed by removing events. Client programs could load authentication plugins from outside the plugin library. The server did not handle correctly a UNION in which one of the queries contained a subquery that used ORDER BY. A query with a WHERE clause whose predicate contained a numeric value in scientific notation was not handled correctly. In addition, attempting to insert a particular integer specified as a string caused a server exit when the string-to-integer conversion was not successful. Previously, mysqlpump read the [mysql_dump] and [client] groups from option files. mysqlpump now additionally reads the [mysqlpump] group. The [mysql_dump] group is still accepted but is deprecated. A multi-table UPDATE statement which updated a table joined to a derived table that joined two other tables was not optimized properly as it had been in MySQL 5.6, instead being treated as if STRAIGHT_JOIN had been used with the subquery creating the derived table.
2020-03-17mysql57: updated to 5.7.29adam1-5/+5
Changes in MySQL 5.7.29: Audit Log Notes ANALYZE TABLE statements now produce read audit events. Packaging Notes Binary packages that include curl rather than linking to the system curl library have been upgraded to use curl 7.66.0. Bugs Fixed InnoDB: os_file_get_parent_dir warnings were encountered when compiling MySQL with GCC 9.2.0. InnoDB: An internal function (btr_push_update_extern_fields()) used to fetch newly added externally stored fields and update them during a pessimistic update or when going back to a previous version of a record was no longer required. Newly added externally stored fields are updated by a different function. Also, the method used to determine the number of externally stored fields was corrected. InnoDB: A comparison function found two records to be equal when attempting to merge non-leaf pages of a spatial index. The function was unable to handle this unexpected condition, which resulted in a long semaphore wait and an eventual assertion failure. InnoDB: A tablespace import operation that failed due to the source and destination tables being defined with different DATA DIRECTORY clauses reported an insufficiently descriptive schema mismatch error. Moreover, if a .cfg file was not present, the same operation would raise an assertion failure. A more informative error message is now reported in both cases before the import operation is terminated due to the data directory mismatch. InnoDB: Criteria used by the btr_cur_will_modify_tree() function, which detects whether a modifying record needs a modifying tree structure, was insufficient. InnoDB: An ALTER TABLE ... DISCARD TABLESPACE operation caused a hang condition. InnoDB: A code regression was addressed by prohibiting unnecessary implicit to explicit secondary index lock conversions for session temporary tables. InnoDB: A tablespace import operation raised an assertion when the cursor was positioned on a corrupted page while purging delete-marked records. Instead of asserting when encountering a corrupted page, the import operation is now terminated and an error is reported. Replication: When a member is joining or rejoining a replication group, if Group Replication detects an error in the distributed recovery process (during which the joining member receives state transfer from an existing online member), it automatically switches over to a new donor, and retries the state transfer. The number of times the joining member retries before giving up is set by the group_replication_recovery_retry_count system variable. The Performance Schema table replication_applier_status_by_worker displays the error that caused the last retry. Previously, this error was only shown if the group member was configured with parallel replication applier threads (as set by the slave_parallel_workers system variable). If the group member was configured with a single applier thread, the error was cleared after each retry by an internal RESET SLAVE operation, so it could not be viewed. This was also the case for the output of the SHOW SLAVE STATUS command whether there were single or multiple applier threads. The RESET SLAVE operation is now no longer carried out after retrying distributed recovery, so the error that caused the last retry can always be viewed. Replication: A memory leak could occur when a failed replication group member tried to rejoin a minority group and was disallowed from doing so. Replication: If a replication slave was set up using a CHANGE MASTER TO statement that did not specify the master log file name and master log position, then shut down before START SLAVE was issued, then restarted with the option --relay-log-recovery set, replication did not start. This happened because the receiver thread had not been started before relay log recovery was attempted, so no log rotation event was available in the relay log to provide the master log file name and master log position. In this situation, the slave now skips relay log recovery and logs a warning, then proceeds to start replication. Replication: When GTIDs are enabled on a replication master and slave, and the slave connects to the master with the MASTER_AUTO_POSITION=1 option set, the master must send the slave all the transactions that the slave has not already received, committed, or both. If any of the transactions that should be sent by the master have been already purged from the master's binary log, the master sends the error ER_MASTER_HAS_PURGED_REQUIRED_GTIDS (1789) to the slave, and replication does not start. The message provided for the error ER_MASTER_HAS_PURGED_REQUIRED_GTIDS has been changed to provide advice on the correct action in this situation, which is for the slave to replicate the missing transactions from another source, or for the slave to be replaced by a new slave created from a more recent backup. The message advises that the master's binary log expiration period can be revised to avoid the situation in future. In addition, the master now identifies the GTIDs of the purged transactions and supplies them in its error log in the warning message ER_FOUND_MISSING_GTIDS (11809), so that you do not need to calculate the missing GTIDs manually. macOS: On macOS, configuring MySQL with -DWITH_SSL=system caused mysql_config output to incorrectly include internal CMake names for the static SSL libraries. There could be a mismatch between the version of OpenSSL used to build the server and the version used for other parts of MySQL such as libraries or plugins. This could cause certain features not to work, such as the LDAP authentication plugins. Now the same version of OpenSSL is used for building everything. Docker packages were missing the LDAP authentication plugins. The original table name for a field in a derived table was not always displayed correctly. MySQL Installer was unable to uninstall MySQL 5.7 on Windows Server 2012. With multiple sessions executing concurrent INSERT ... ON DUPLICATE KEY UPDATE statements into a table with an AUTO_INCREMENT column but not specifying the AUTO_INCREMENT value, inserts could fail with a unique index violation. With lower_case_table_names=2, SHOW TABLES could fail to display tables with uppercase names. With keyring_encrypted_file_password set on the command line at server startup, the password value could be visible to system utilities. With a LOCK TABLES statement in effect, a metadata change for the locked table could cause Performance Schema or SHOW queries for session variables to hang in the opening_tables state. A SELECT using a WHERE condition of the form A AND (B OR C [OR ...]) resulting in an impossible range led to an unplanned exit of the server. For JSON-format audit logging, the id field now may contain values larger than 65535. Previously, with heaving logging activity, more than 65536 queries per second could be executed, exceeding the 16 bits permitted for id values. An incomplete connection packet could cause clients not to properly initialize the authentication plugin name. Client programs that used the libmysqlclient C client library could exit upon receipt of an OK packet containing malformed session-tracking information. Under certain conditions, enabling the read_only or super_read_only system variable did not block concurrent DDL statements executed by users without the SUPER privilege. mysqlpump exits rather than dumping databases that contain an invalid view, by design, but it also failed if an invalid view existed but was not in any of the databases to be dumped.
2019-12-06mysql57-client: Limit SunPro fix to SunPro.jperkin1-2/+9
2019-11-14mysql57-client: add a patch for cmake/ssl.cmake taken from mysql56-clientadam1-0/+27
2019-10-31mysql57: Disable HAVE_SOLARIS_LARGE_PAGES.jperkin1-4/+14
The current code uses functions that are only available in newer releases of Oracle Solaris, so disable for now to fix illumos and others. This could be improved with proper feature tests.
2019-10-14mysql57: updated to 5.7.28adam4-32/+33
Changes in MySQL 5.7.28 Configuration Notes It is now possible to compile MySQL 5.7 using OpenSSL 1.1.1, enabling compilation support for MySQL 5.7 against OpenSSL even when OpenSSL 1.0.2 reaches End of Life status at the end of 2019. All MySQL 5.7 builds now use OpenSSL. MySQL no longer supports using yaSSL as the SSL library, and source distributions no longer include yaSSL. The WITH_SSL CMake option no longer permits bundled (use yaSSL) as a valid value, and the default option value has changed from bundled to system (use the version of OpenSSL installed on the host system). sys Schema Notes The sys.schema_unused_indexes view now filters out unique indexes. The sys.ps_is_consumer_enabled() function now produces an error rather than returning NULL if the argument is an unknown non-NULL consumer name. Previously, sys schema sources were maintained in a separate Git repository. sys schema sources now are included with and maintained within MySQL source distributions (under scripts/sys_schema). The sys.version view is deprecated and will be removed in a future MySQL version. Affected applications should be adjusted to use an alternative instead. For example, use the VERSION() function to retrieve the MySQL server version. Bugs Fixed InnoDB: An ALTER TABLE ... ENCRYPTION = 'Y' operation on a MyISAM table failed to raise an error indicating that the storage engine does not support encryption. The INPLACE algorithm did not check encryption support before updating metadata in the .frm file. To address this issue, an encryption support flag was added. The ALTER TABLE ... ENCRYPTION = 'Y' operation now checks the flag and reports an error if the storage engine does not support encryption. InnoDB: Delete marked rows were able to acquire an external read lock before a partial rollback was completed. The external read lock prevented conversion of an implicit lock to an explicit lock during the partial rollback, causing an assertion failure. InnoDB: A long running ALTER TABLE ... ADD INDEX operation with concurrent inserts caused semaphore waits. Replication: A deadlock involving three threads could occur if a START SLAVE statement was issued to start the SQL thread on a slave while the SQL thread was still in the process of being stopped, and a request for the slave status was made at the same time. The issue has now been fixed by releasing a lock earlier while the SQL thread is being stopped. Replication: A locking issue in the WAIT_FOR_EXECUTED_GTID_SET() function could cause the server to hang in certain circumstances. The issue has now been corrected. Replication: On a multi-threaded slave with GTIDs in use and MASTER_AUTO_POSITION set to ON, following an unexpected halt the slave would attempt relay log recovery, which failed if relay logs had been lost, preventing replication from starting. However, this step was unnecessary as GTID auto-positioning can be used to restore any missing transactions. In a recovery situation, the slave now checks first whether MASTER_AUTO_POSITION is set to ON, and if it is, skips relay log recovery. When generating C source from SQL scripts, Some utf8-encoded characters were split across lines. Thanks to Przemysław Skibiński for the patch. For Solaris, mysqld.cc contained a prototype for memcntl() that is no longer needed. The prototype has been removed. For Solaris, -DWITH_SSL=system did not work when compiling with GCC. MySQL builds configured with -DWITHOUT_SERVER=1 failed. For the keyring_aws plugin, some valid region values for the keyring_aws_region system variable were rejected. For debug builds, an assertion could be raised during UNION queries when computing the combined data type of a GEOMETRY column and SELECT * FROM (SELECT NULL). For authentication using an LDAP authentication plugin, if the user DN portion was empty and group mapping was configured, authentication assigned an incorrect user DN and skipped the user search. mysqlpump produced an error when run against a server older than MySQL 5.7. A possible integer overflow due to unsigned integer type casting could lead to later buffer overflow due to arbitrary size memory allocation. Attempted use of a freed object during MeCab plugin initialization caused a segmentation fault. For MySQL installed using RPM packages, an initialization script that tested server connectivity misbehaved if the client account authenticated using an LDAP authentication plugin. Improper locking during storage engine initialization could cause a server exit. On a GTID-enabled server, concurrent execution of DROP USER and a prepared statement that accessed a view could deadlock. A query with a WHERE clause whose predicate contained a numeric value in scientific notation was not handled correctly. VS2019 produced compilation errors with debug compilation selected due to use of the /ZI flag. Now /Z7 is used instead. The client library could dereference a null pointer while fetching result set metadata from the server. In READ UNCOMMITTED isolation level, a segmentation fault occurred under heavy load from memcached clients. An externally stored BLOB column that was being updated by one transaction was read by another transaction as having a NULL value and a non-zero data length. Arguments for the TIMESTAMPADD() function could be reversed for prepared statements. With the thread_pool plugin enabled, the sys.processlist and sys.session views displayed a thread name rather than the actual user name. The delete_latency column in the sys.schema_index_statistics view incorrectly referred to the SUM_TIMER_INSERT column of the Performance Schema table_io_waits_summary_by_index_usage table rather than the SUM_TIMER_DELETE column. In output from the sys.diagnostics() procedure, the latency column for the user_summary_by_file_io_type view was incorrectly displayed in raw picoseconds rather than as a formatted value. MySQL Enterprise Encryption functions could apply Diffie-Hellman (DH) methods to non-DH keys, resulting in unpredictable results or server exit. Password masking was incomplete for SHOW PROCESSLIST and some INFORMATION_SCHEMA and Performance Schema tables. The -DWITH_EXAMPLE_STORAGE_ENGINE=1 CMake option was ignored but should not have been. If -DWITH_EXAMPLE_STORAGE_ENGINE=0 is given, the EXAMPLE storage engine is built as a plugin.
2019-07-01mysql57-client: allow newer Boost; fixes building with boost-1.70.0adam1-41/+12
2019-05-02mysql57-client: remove unused patchadam1-22/+0
2019-04-25mysql57: updated to 5.7.26adam2-7/+7
mysql-5.7.26: Unknown changes
2019-01-20mysql57-client: change the default configuration to avoid informationmaya3-4/+51
disclosure to a malicious server. Backport of upstream commit: https://github.com/mysql/mysql-server/commit/98ed3d8bc8ad724686d26c7bf98dced3bd1777be Exploit method described here: https://gwillem.gitlab.io/2019/01/17/adminer-4.6.2-file-disclosure-vulnerability/
2018-12-13revbump for boost 1.69.0adam1-7/+7
2018-11-22mysql57: added missing patchadam1-0/+14
2018-11-22mysql57: updated to 5.7.24adam2-11/+9
Changes in MySQL 5.7.24 Deprecation and Removal Notes * InnoDB; Partitioning: Support for placing table partitions in shared tablespaces is deprecated and will be removed in a future version of MySQL. Shared tablespaces include the system tablespace and general tablespaces. For information about identifying partitions in shared tablespaces and moving them to file-per-table tablespaces, see Preparing Your Installation for Upgrade. * InnoDB: Support for TABLESPACE = innodb_file_per_table and TABLESPACE = innodb_temporary clauses with CREATE TEMPORARY TABLE is deprecated and will be removed in a future MySQL version. Functionality Added or Changed Replication: Use the group_replication_exit_state_action option to configure how Group Replication behaves when a member leaves the group involuntarily, for example when it is expelled from the group due to an unstable network connection. When group_replication_exit_state_action is set to ABORT_SERVER, upon exiting the group unintentionally, the instance shuts MySQL down, and when group_replication_exit_state_action is set to READ_ONLY the instance sets MySQL to super read only mode instead and its state is set to ERROR. Previously, file I/O performed in the I/O cache in the mysys library was not instrumented, affecting in particular file I/O statistics reported by the Performance Schema about the binary log index file. Now, this I/O is instrumented and Performance Schema statistics are accurate. Thanks to Yura Sorokin for the contribution. The zlib library version bundled with MySQL was raised from version 1.2.3 to version 1.2.11. MySQL implements compression with the help of the zlib library. The zlib compressBound() function in zlib 1.2.11 returns a slightly higher estimate of the buffer size required to compress a given length of bytes than it did in zlib version 1.2.3. The compressBound() function is called by InnoDB functions that determine the maximum row size permitted when creating compressed InnoDB tables or inserting rows into compressed InnoDB tables. As a result, CREATE TABLE ... ROW_FORMAT=COMPRESSED or INSERT operations with row sizes very close to the maximum row size that were successful in earlier releases could now fail. Bugs Fixed * InnoDB: An ALTER TABLE operation that added a primary key produced a segmentation fault. * InnoDB: A query that scanned the primary key of a table did not return the expected result. * InnoDB: A query interruption during a lock wait caused an error. * InnoDB: An index record was not found when updating a secondary index defined on a generated column. * InnoDB: The update log applied as part of an online ALTER TABLE operation did not take into account the computed value of the generated column in the old row while updating the secondary index. * InnoDB: An unsupported DDL operation involving a foreign key constraint raised an assertion. * InnoDB: An attempted foreign key check on a discarded table caused a segmentation fault. * InnoDB: An assertion was raised during an OPTIMIZE TABLE operation. * InnoDB: A foreign key constraint name was duplicated during a rename table operation, causing a failure during later query execution. * InnoDB: In a function called before the execution of a statement in a stored procedure, a read and write operation on trx->lock.start_stmt was not protected by a mutex. * InnoDB: An error occurred during a DDL operation due to a mismatch in a REDUNDANT row format calculation that determines the length of the online log. * InnoDB: The location of the Innodb Merge Temp File that reported by the wait/io/file/innodb/innodb_temp_file Performance Schema instrument was incorrect. * Partitioning: When a CREATE TABLE ... PARTITION BY ... statement failed due to an invalid partition definition, the server did not remove any partition files which might have been created prior to encountering the invalid PARTITION clause. * Partitioning: It was possible to perform FLUSH TABLES FOR EXPORT on a partitioned table created with innodb_file_per_table=1 after discarding its tablespace. Attempting to do so now raises ER_TABLESPACE_DISCARDED. * Replication: When the binlog_group_commit_sync_delay system variable is set to a wait time to delay synchronization of transactions to disk, and the binlog_group_commit_sync_no_delay_count system variable is also set to a number of transactions, the MySQL server exits the wait procedure if the specified number of transactions is reached before the specified wait time is reached. The server manages this process by checking on the transaction count after a delta of one tenth of the time specified by binlog_group_commit_sync_delay has elapsed, then subtracting that interval from the remaining wait time. more...
2018-11-13mysql57-client: tweak patch to work on modern linuxmarkd1-3/+8
copy tirpc handling from the else clause for linux systems that no longer have sun rpc in glibc.
2018-10-01Unbreak build on DragonFly BSD.sevan2-0/+40
Add OpenBSD to the exclusion list in chartype.h as with upstream version.
2018-08-16mysql57: get rid of unused patchesadam4-220/+0
2018-08-16mysql57: updated to 5.7.23adam1-7/+7
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 transaction 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.
2018-07-08databases/mysql57-client: fix build problem of mysql57-servertaca1-6/+16
Fix build problem of mysql57-server on prior to OpenSSL 1.1 systems.
2018-06-14mysql57-client: Restore patch deleted in last update.jperkin1-0/+11
Fixes, again, the build on SmartOS. It would be nice if people would stop removing patches for issues I've already spent time fixing.
2018-04-29mysql57: updated to 5.7.22adam4-30/+16
Changes in MySQL 5.7.22: Deprecation and Removal Notes These compatibility SQL modes are now deprecated and will be removed in MySQL 8.0: DB2, MAXDB, MSSQL, MYSQL323, MYSQL40, ORACLE, POSTGRESQL, NO_FIELD_OPTIONS, NO_KEY_OPTIONS, NO_TABLE_OPTIONS. These deprecations have two implications: Assigning a deprecated mode to the sql_mode system variable produces a warning. With the MAXDB SQL mode enabled, using CREATE TABLE or ALTER TABLE to add a TIMESTAMP column to a table produces a warning. Statements that use these deprecated SQL modes may fail when replicated from a MySQL 5.7 master to a MySQL 8.0 slave, or may have different effects on master and slave. To avoid such problems, applications that use the modes deprecated in MySQL 5.7 should be revised not to use them. Test Suite Notes Reduction of compiler and platform differences in GIS handling of floating-point results enables simplification of related test cases that no longer need rounding to avoid spurious test failures. X Plugin Notes X Plugin connection attempts using the X Protocol did not return an error when the default database specified in the connection options was invalid, and the connection was allowed with a null default database. Connection attempts using the classic MySQL protocol did return an error and disallowed the connection. X Protocol connection attempts now also disallow the connection if an invalid schema is specified. Functionality Added or Changed Replication: Changes introduced in version 8 which enable XCom to identify members using the concept of an incarnation have been merged in to version 5.7. These underlying changes add a UUID to members each time they join a group and this information can be used to distinguish among different member incarnations. Replication: It is now possible to specify whether information written into the binary log enables replication slaves to parallelize based on commit timestamps, or on transaction write sets. JSON: The JSON_MERGE() function is renamed to JSON_MERGE_PRESERVE(). JSON: Added the JSON utility function JSON_PRETTY(), which prints an existing JSON value, or any string that can successfully be parsed as a JSON document, in a format that can be easily read by humans. Each JSON object member or array value is displayed on a separate line of the output; each child object or array is intended 2 spaces with respect to its parent. Bugs Fixed
2018-02-25mysql57-{client,server}: support openssl 1.1markd4-0/+210
2018-01-16mysql57: updated to 5.7.21adam4-49/+31
MySQL 5.7.21 Audit Log Notes * MySQL Enterprise Audit now supports compression and encryption of audit log files. Encryption is based on a user-defined password. To use this feature, the MySQL keyring must be enabled because audit logging uses it for password storage. MySQL Enterprise Audit also now supports logging in JSON format, in addition to the existing XML formats. For JSON format, functions are available that provide runtime log reading capabilities. For additional information, see MySQL Enterprise Audit. Configuration Notes * For RHEL, SLES, and Fedora RPMs, the default plugin directory for debug builds has been changed from /usr/lib64/mysql/plugin to /usr/lib64/mysql/plugin/debug. * The installation scripts for MySQL Enterprise Audit and MySQL Enterprise Firewall now create their associated tables in the mysql system database as InnoDB rather than MyISAM tables. * The hardcoded memory page size of 8KB for the memory-mapped transaction coordinator was too small for platforms such as ARM64 and PowerPC where the page size is much larger. The server now invokes a system call to get the page size of the current platform rather than using a hardcoded value. A consequence for the --log-tc-size option is that the minimum and default values are now 6 times the page size. Also, the value must be a multiple of the page size. Thanks to Alexey Kopytov for the patch. Performance Schema Notes * The Performance Schema setup_timers table is now deprecated, to be removed in MySQL 8.0, as is the TICK row in the performance_timers table. Pluggable Authentication * For the LDAP authentication plugins, handling of the group search attribute indicated by the authentication_ldap_sasl_group_search_attr and authentication_ldap_simple_group_search_attr system variables is more flexible. If the group search attribute is isMemberOf, LDAP authentication directly retrieves the user attribute isMemberOf value and assign it as group information. If the group search attribute is not isMemberOf, LDAP authentication searches for all groups where the user is a member. (The latter is the default behavior.) This behavior is based on how LDAP group information can be stored two ways: 1) A group entry can have an attribute named memberUid or member with a value that is a user name; 2) A user entry can have an attribute named isMemberOf with values that are group names. * The LDAP authentication plugins now permit the authentication string that provides user DN information to begin with a + character. In the absence of this character, the authentication string value is treated as is without modification, as it has been previously. If the authentication string begins with +, the plugin constructs the full user DN value from the account user name as the cn attribute value, together with the authentication string (with the + removed). The authentication string is stored as given in the mysql.user system table, with the full user DN constructed on the fly before authentication. * For the LDAP authentication plugins, the group search attribute was fixed and not configurable. Two new system variables now enable using custom group filters: authentication_ldap_sasl_group_search_filter and authentication_ldap_simple_group_search_filter. Security Notes * Incompatible Change: Passwords are now restricted to a maximum of 256 characters for the sha256_password authentication plugin, and for the PASSWORD() function when old_passwords=2. Also, the number of password hashing rounds is capped to limit CPU time used. * The linked OpenSSL library for the MySQL Commercial Server has been updated to version 1.0.2n. Issues fixed in the new OpenSSL version are described at http://www.openssl.org/news/vulnerabilities.html. * This change does not affect the Oracle-produced MySQL Community build of MySQL Server, which uses the yaSSL library instead. * MySQL now supports key migration between underlying keyring keystores. This enables DBAs to switch a MySQL installation from one keyring plugin to another. See Migrating Keys Between Keyring Keystores. * MySQL Enterprise Edition now includes a keyring plugin, keyring_encrypted_file, that is similar to the keyring_file plugin in its use of a local data file for key storage, but that also encrypts the file based on a user-defined password. See Using the keyring_encrypted_file Keyring Plugin.
2018-01-01Revbump after boost updateadam1-20/+7
2017-10-22mysql57: update to 5.7.20adam1-3/+3
Changes in MySQL 5.7.20: Audit Log Notes Event-matching filter rules for the audit_log plugin now support an abort element, which can be used to prevent qualifying events from executing. For more information, see Audit Log Filtering. This capability can be used, for example, to augment the capabilities of MySQL Enterprise Firewall, which blocks SQL statements on a per-user basis, by writing audit filtering rules that match statements and block them based on characteristics of the statements themselves. Deprecation and Removal Notes Previously, the --transaction-isolation and --transaction-read-only server startup options corresponded to the tx_isolation and tx_read_only system variables. For better name correspondence between startup option and system variable names, transaction_isolation and transaction_read_only have been created as aliases for tx_isolation and tx_read_only. The tx_isolation and tx_read_only variables are now deprecated and will be removed in MySQL 8.0. Applications should be adjusted to use transaction_isolation and transaction_read_only instead. The query cache is now deprecated and is removed in MySQL 8.0. Deprecation includes these items: * The FLUSH QUERY CACHE and RESET QUERY CACHE statements. * The SQL_CACHE and SQL_NO_CACHE SELECT modifiers. * These system variables: have_query_cache, ndb_cache_check_time, query_cache_limit, query_cache_min_res_unit, query_cache_size, query_cache_type, query_cache_wlock_invalidate. * These status variables: Qcache_free_blocks, Qcache_free_memory, Qcache_hits, Qcache_inserts, Qcache_lowmem_prunes, Qcache_not_cached, Qcache_queries_in_cache, Qcache_total_blocks. The mysql client by default strips comments in statements sent to the server, and this behavior is controlled using --skip-comments (strip comments), and --comments (preserve comments). Comment stripping is now deprecated. This feature and the options to control it will be removed in a future MySQL release. These syntax constructs for table and column references are now deprecated and will be removed in a future version of MySQL. Instances of these constructs should be changed to remove the leading period. * .col_name * .tbl_name * .tbl_name.col_name Security Notes Certificates automatically generated by mysqld and mysql_ssl_rsa_setup now use X509 v3 rather than v1. The keyring_okv plugin now supports password-protecting the key file used for secure connections. See Using the keyring_okv KMIP Plugin. Bugs Fixed
2017-09-13boost: update to 1.65.1adam2-7/+25
Fixes in 1.65.1 Config: * Version macro changes for CUDA. * Update last known MSVC version. * MSVC 14.11 supports structured bindings. Context: * Return a continuation from functions executed by resume_with. Fiber: * Return a continuation from functions executed by resume_with. Smart Pointers: * Fix Visual C++ version checks. * Fix compilation for NVCC with host compiler clang. Stacktrace: * Update build testing file to detail with a MinGW issue. * Change preprocessor file extensions to work with the installation system. * Support FreeBSD and other OSs that do not define _GNU_SOURCE but have _Unwind_Backtrace function. Thread: * Fix bug in boost::condition_variable on Windows
2017-09-01Fix build for boost 1.65.0. Build fix so ride previous PKGREVISION bumpabs1-10/+10
2017-07-20Security Notesadam2-4/+41
* Security Fix: The linked OpenSSL library for the MySQL Commercial Server has been updated to version 1.0.2l. Issues fixed in the new OpenSSL version are described at http://www.openssl.org/news/vulnerabilities.html. This change does not affect the Oracle-produced MySQL Community build of MySQL Server, which uses the yaSSL library instead. Platform-Specific Notes * Linux: The generic Linux build for MySQL 5.6 is now built on Oracle Linux 6 using glibc 2.12. Systems that use the build need to have glibc 2.12 or later installed on them. Functionality Added or Changed * For Windows, MSI installer packages now include a check for the required Visual Studio redistributable package, and produce a message asking the user to install it if it is missing. * The mysql client now supports a --binary-as-hex option that causes display of binary data using hexadecimal notation (0xvalue). Thanks to Daniël van Eeden for the patch. * mysqlaccess now looks for its configuration file only in the SYSCONFDIR directory and /etc. Bugs Fixed * InnoDB: The server allocated memory unnecessarily for an operation that rebuilt the table. * InnoDB: When using an index merge optimizer switch, a SELECT COUNT(*) operation sometimes returned 0. Partitioning code incorrectly performed a memcpy instead of a column copy of columns read by the index, causing the wrong records to be copied. * Replication: A USE statement that followed a SET GTID_NEXT statement sometimes had no effect. * Replication: If the binary log on a master server was rotated and a full disk condition occurred on the partition where the binary log file was being stored, the server could stop unexpectedly. The fix adds a check for the existence of the binary log when the dump thread switches to next binary log file. If the binary log is disabled, all binary logs up to the current active log are transmitted to slave and an error is returned to the receiver thread. * Replication: If a relay log index file named relay log files that did not exist, RESET SLAVE ALL sometimes did not fully clean up properly. * Replication: mysqlbinlog, if invoked with the --raw option, does not flush the output file until the process terminates. But if also invoked with the --stop-never option, the process never terminates, thus nothing is ever written to the output file. Now the output is flushed after each event. * Replication: A memory leak in mysqlbinlog was fixed. The leak happened when processing fake rotate events, or when using --raw and the destination log file could not be created. The leak only occurred when processing events from a remote server. Thanks to Laurynas Biveinis for his contribution to fixing this bug. * Replication: Multi-threaded slaves could not be configured with small queue sizes using slave_pending_jobs_size_max if they ever needed to process transactions larger than that size. Any packet larger than slave_pending_jobs_size_max was rejected with the error ER_MTS_EVENT_BIGGER_PENDING_JOBS_SIZE_MAX, even if the packet was smaller than the limit set by slave_max_allowed_packet. * With this fix, slave_pending_jobs_size_max becomes a soft limit rather than a hard limit. If the size of a packet exceeds slave_pending_jobs_size_max but is less than slave_max_allowed_packet, the transaction is held until all the slave workers have empty queues, and then processed. All subsequent transactions are held until the large transaction has been completed. The queue size for slave workers can therefore be limited while still allowing occasional larger transactions. * mysqldump could write database names in USE statements incorrectly. * If the mysql_stmt_close() C API function was called, it freed memory that later could be accessed if mysql_stmt_error(), mysql_stmt_errno(), or mysql_stmt_sqlstate() was called. To obtain error information after a call to mysql_stmt_close(), call mysql_error(), mysql_errno(), or mysql_sqlstate() instead. * Queries could be cached incorrectly, leading to incorrect query results, under these circumstances: InnoDB table; rows are being inserted but have not yet been committed; a query uses the table as a base table in a derived table; the optimizer chooses to materialize the derived table. * Man pages for a few utilities were missing from Debian/Ubuntu packages. * The field-t unit test failed to run with AddressSanitizer enabled. Thanks to Laurynas Biveinis for the patch. * Debian client packages were missing information about conflicts with native packages. * The Perl path in #! lines at the beginning of Perl scripts has been adjusted to /usr/local/bin/perl for FreeBSD 11. * The server exited abnormally attempting to access invalid memory. * A race condition could occur for CREATE TABLE statements with DATA DIRECTORY or INDEX DIRECTORY clauses. * MySQL compilation in different directories produced different builds to leakage of absolute paths into debug information and __FILE__. * mysqld_failed to start the server if the --datadir option was specified with a relative path name. * With read_only enabled, creation of non-TEMPORARY tables by non-SUPER users was permitted under certain conditions. *Certain stored functions, if used in a query WHERE clause, could be handled using Index Condition Pushdown (which should not happen), resulting in a server exit. * On x86 machines, the uint3korr() macro read 4 bytes of data instead of the intended 3 bytes. * An assertion was raised during a fetch operation by the memcached plugin. * Queries that contained UNION in a subquery and GROUP BY could return incorrect results. * LOAD XML INFILE performance became noticeably slower when the XML file being read contained a great many spaces, such as those introduced by indenting or pretty-printing. Now all leading whitespace is trimmed from each such value before reading it into memory.
2017-04-30Sync with boost 1.64.0adam1-9/+9
2017-04-11Changes 5.7.18:adam3-22/+17
* Windows builds now use the default runtime libraries (builds use the /MD flag). * CMake support was added for compiling with Developer Studio 12.6. * MySQL failed to compile if -DENABLE_DEBUG_SYNC=OFF AND -DWITH_DEBUG=ON were both given. The ENABLE_DEBUG_SYNC option has been removed and enabling WITH_DEBUG enables Debug Sync. * The --temp-pool server option is deprecated and will be removed in MySQL 8.0. * Support for DTrace is deprecated and is removed in MySQL 8.0. * Changes in RPM package structure require a larger set of packages to be removed to install MySQL Server cleanly. * To avoid potential race conditions, Debian packages now use the GNU install utility rather than a combination of mkdir, touch, and chown. * The my-default.cnf.sh file (used to produce a default my-default.cnf or my-default.ini file) is no longer included in source distributions and my-default.cnf and my-default.ini are no longer included in or installed by distribution packages. * Reminder: MySQL 5.7 requires the Microsoft Visual C++ 2013 Redistributable Package to run on Windows platforms. Users should make sure the package has been installed on the system before starting the server. The package is available at the Microsoft Download Center. * PROCEDURE ANALYSE() syntax is now deprecated and is removed in MySQL 8.0. * The use of \N as a synonym for NULL in SQL statements is deprecated and is removed in MySQL 8.0. Use NULL instead. * The linked OpenSSL library for the MySQL Commercial Server has been updated to version 1.0.2k.
2017-03-21Amend comment to patch.maya1-2/+2
explain it's for a netbsd-specific error.
2017-03-16mysql57-server: fix compilation on NetBSD. fix -fpermissive error.maya3-0/+66
netbsd xdrproc_t takes 2 arguments, most others are variadic, os x is 3. ifdef __NetBSD__ to match the signature. PR pkg/52062
2017-01-12Don't depend on rpcgen, just use the pre-generated headers. Fixes buildjperkin1-0/+15
on SmartOS.
2017-01-03Do not attempt to detect ISA, it conflicts with wrappers. Fixes SunOS.jperkin1-0/+22
2017-01-01Revbump after boost updateadam1-9/+9
2016-10-14Changes 5.7.16:adam1-9/+9
Security Notes -------------- * Incompatible Change: For STANDALONE and WIN builds, the default secure_file_priv value has changed from the empty string to NULL. This is a secure-by-default setting because it disables import and export operations. To permit those operations, set secure_file_priv to the path name of the directory to use for those operations. * The linked OpenSSL library for the MySQL Commercial Server has been updated to version 1.0.1u. For a description of issues fixed in this version, see http://www.openssl.org/news/vulnerabilities.html. This change does not affect the Oracle-produced MySQL Community build of MySQL Server, which uses the yaSSL library instead. Functionality Added or Changed ------------------------------ * yaSSL was upgraded to version 2.4.2. This upgrade corrects issues with: Potential AES side channel leaks; DSA padding for unusual sizes; the SSL_CTX_load_verify_locations() OpenSSL compatibility function failing to handle long path directory names.
2016-09-27Add thread ID support on NetBSD. Fixes build.fhajny1-0/+35
2016-09-16MySQL is a SQL (Structured Query Language) database server. SQL is the mostadam34-0/+846
popular database language in the world. MySQL is a client-server implementation that consists of a server daemon `mysqld' and many different client programs/libraries. The main goals of MySQL are speed and robustness. The base upon which MySQL is built is a set of routines that have been used in a highly demanding production environment for many years. While MySQL is still in development it already offers a rich and highly useful function set.