diff options
authorJochen Neumeister <joneum@FreeBSD.org>2023-02-14 06:15:44 +0000
committerJochen Neumeister <joneum@FreeBSD.org>2023-02-14 06:18:29 +0000
commitfea9d2e9a495fb6938d2f420bbc2d655c4a7e596 (patch)
parent77ed2a8a5a0908bc06e9258dda820bf656eb27a0 (diff)
databases/mysql80-*: Update to latest release 8.0.32
Bugs Fixed Important Change: The implementation of the max_join_size system variable, although documented as a maximum number of rows or disk seeks, did not check the number of rows or disk seeks directly, but instead treated max_join_size as the maximum estimated cost to permit. While cost and row count are correlated, they are not the same, and this could lead to unexpected results when some large queries were allowed to proceed. In this release, we change how max_join_size is used, so that it now actually limits the maximum number of row accesses in base tables. If the estimate indicates that a greater number of rows must be read from the base tables, an error is raised. This makes the actual behavior better reflect what is documented. (Bug #83885, Bug #25118903) InnoDB: Undetectable problems after upgrade from 8.0.28, crash and corruption. Any new row inserted after upgrade will have all columns added with ALGORITHM=INSTANT materialized and have version=0. In the new implementation, a column added with ALGORITHM=INSTANT will fail if the maximum possible size of a row exceeds the row size limit. So new rows with materialized ALGORITHM=INSTANT columns will always be within row size limit. (Bug #34558510) InnoDB: No more garbled UTF characters in SHOW ENGINE INNODB STATUS Thank you Iiwo Panowicz for reporting this bug. (Bug #34486877, Bug #108111) InnoDB: After a column added with ALGORITHM=INSTANT, an online rebuild DDL no longer crashes. Thank you Qingda Hu for reporting this bug. (Bug #33788578, Bug #106279) InnoDB: Several adaptive hash index (AHI) code optimizations and improvements were implemented, addressing various issues including potential race conditions. (Bug #33601434) Replication: When SOURCE_HEARTBEAT_PERIOD was set to a very small value (such as 1 microsecond) on the server using CHANGE REPLICATION SOURCE TO, and the mysqlbinlog client program was started with --read-from-remote-server and --stop-never=1, it was possible for the binary log dump thread to send an EOF packet to the client before all events had been sent. (Bug #34860923) Replication: Removed an assert from sql/rpl_group_replication.cc which triggered a false error in testing. (Bug #34619134) Replication: After MySQL was started with --server-id=0, trying to change the server ID by using SET PERSIST server_id=N (where N is an integer greater than zero) and restarting the server had the following results: SELECT @@server_id returned N. Any replication SQL statement such as START REPLICA was rejected with ER_SLAVE_CONFIGURATION. To fix this problem, we now ensure that such checks use the value of the server variable rather than the value passed to the startup option. (Bug #34412816) Replication: When replicating compressed binary log events generated by the NDB binary log injector, relay log positions were not updated in the multithreaded applier, thus causing replication to hang. (Bug #33889030) References: See also: Bug #33784241. Replication: Issuing STOP REPLICA SQL_THREAD while the SQL thread was handling a transaction caused replication to stop immediately, instead of waiting 60 seconds for the event group to complete before shutting down the SQL thread as expected. The root cause of this issue was due to the internal variable storing the last event start time not being reset after the SQL thread was restarted. We fix this by resetting the variable holding the last event start time whenever the SQL thread is started. (Bug #33646899) Replication: While their wording might imply otherwise, the log messages Setting super_read_only=ON (ER_GRP_RPL_SUPER_READ_ON) and Setting super_read_only=OFF (ER_GRP_RPL_SUPER_READ_OFF) were written only after the operations were attempted, and not beforehand, or while the operations were ongoing. This sometimes led to confusion when setting the variable was rejected, and this was logged prior to the set attempt itself being logged. To keep this from happening, these messages are now logged just prior to attempting the operation. (Bug #108843, Bug #34728079) Replication: The relay_log_space_limit system variable is a 64-bit value, but its valid maximum was specified internally as that of a 32-bit value. (Bug #106323, Bug #33799840) Replication: Eliminated an unnecessary update of the gtid_executed table which was performed when rotating the binary logs. (Bug #106116, Bug #33759477) Group Replication: The WRITE_CONSENSUS_SINGLE_LEADER_CAPABLE column of the MySQL Performance Schema's replication_group_communication_information table reflects the runtime value of a Paxos Single Leader setup in a group, letting users know what the value of group_replication_paxos_single_leader must be on joining members. A group that was bootstrapped with single-leader enabled but with its protocol version downgraded to one that did not support it reported WRITE_CONSENSUS_SINGLE_LEADER_CAPABLE equal to 0, as expected, but attempting to join an instance to the group using group_replication_paxos_single_leader = 0 was not possible. To solve this problem, we change the behaviour and make the value of group_replication_paxos_single_leader consistent with the communication version that the group is running. Since this variable was introduced in MySQL 8.0.27, it is not known or used in any previous version, and so we now enforce the following rules: When a node tries to join a group that is running MySQL 8.0.26 or earlier and we are version 8.0.27 or later, we reject the attempt with an error stating that group_replication_paxos_single_leader must be OFF before joining the group When we try to use group_replication_set_communication_protocol() to set a version less than 8.0.27 and we are of version 8.0.27 or later, we reject the function call if group_replication_paxos_single_leader is not OFF. In addition, we also change the value checked to determine whether changing the group leader is allowed after running group_replication_set_communication_protocol(). Previously, this was the runtime value of group_replication_paxos_single_leader, which takes effect only after a group reboot. Instead, when we run group_replication_set_communication_protocol(), we now use the value shown by the replication_group_communication_information table's WRITE_CONSENSUS_SINGLE_LEADER_CAPABLE column, described previously. (Bug #34555045, Bug #34828311) Full Changelog: https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-32.html Sponsored by: Netzkommune GmbH
4 files changed, 6 insertions, 107 deletions
diff --git a/databases/mysql80-server/Makefile b/databases/mysql80-server/Makefile
index d017bb3b7d98..e85c20172dd2 100644
--- a/databases/mysql80-server/Makefile
+++ b/databases/mysql80-server/Makefile
@@ -1,5 +1,5 @@
PORTNAME?= mysql
CATEGORIES= databases
diff --git a/databases/mysql80-server/distinfo b/databases/mysql80-server/distinfo
index b12ab6f48abe..8134c31693a6 100644
--- a/databases/mysql80-server/distinfo
+++ b/databases/mysql80-server/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1666982026
-SHA256 (mysql-boost-8.0.31.tar.gz) = 7867f3fd8ca423d283a6162c819c766863ecffbf9b59b4756dc7bb81184c1d6a
-SIZE (mysql-boost-8.0.31.tar.gz) = 334504577
+TIMESTAMP = 1676165343
+SHA256 (mysql-boost-8.0.32.tar.gz) = 1a83a2e1712a2d20b80369c45cecbfcc7be9178d4fc0e81ffba5c273ce947389
+SIZE (mysql-boost-8.0.32.tar.gz) = 436207624
diff --git a/databases/mysql80-server/files/patch-llvm15-fix b/databases/mysql80-server/files/patch-llvm15-fix
deleted file mode 100644
index 0d16a0d93f68..000000000000
--- a/databases/mysql80-server/files/patch-llvm15-fix
+++ /dev/null
@@ -1,103 +0,0 @@
-From 69fb953b55474f32d0e1e35b043599c34e516349 Mon Sep 17 00:00:00 2001
-From: Gabor Buella <gabor.buella@oracle.com>
-Date: Sat, 12 Nov 2022 01:05:54 +0100
-Subject: [PATCH] Bug #34638573 Compile MySQL with clang 15
-Fixing two compile errors, that are triggered when using libcxx from LLVM15
-std::unary_function is not available in libcxx under C++17, see:
-Boost uses std::unary_function, but it has a workaround for using
-Boost headers in C++17, triggered by the macro BOOST_NO_CXX98_FUNCTION_BASE
-A new assert in libcxx is triggered in include/varlen_sort.h
-std::iterator_traits<varlen_iterator>::reference should match the return type of varlen_iterator::operator*()
-include/c++/v1/__algorithm/iterator_operations.h:100:5: error: static assertion failed due to requirement 'is_same<varlen_element, varlen_element &>::value': It looks like your iterator's `iterator_traits<It>::reference` does not match the return type of dereferencing the iterator, i.e., calling `*it`. This is undefined behavior according to [input.iterators] and can lead to dangling reference issues at runtime, so we are flagging this.
-static_assert(is_same<__deref_t<_Iter>, typename iterator_traits<__remove_cvref_t<_Iter> >::reference>::value,
-^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Fix a few warnings:
-Remove some explicitly defined "=defau.t" constructors, destructors.
-warning: definition of implicit copy assignment operator for 'Row' is deprecated because it has a user-declared destructor [-Wdeprecated-copy-with-dtor]
-Mark a variable potentially unuses in tests (unuses when __aarch64__)
-Change-Id: Iad346bd0cdb1d25d958377b9c7a0dd5da7a45fad
- cmake/boost.cmake | 3 +++
- include/varlen_sort.h | 5 +++--
- storage/innobase/include/ddl0impl.h | 8 --------
- unittest/gunit/innodb/ut0new-t.cc | 2 --
- unittest/gunit/mysys_my_rdtsc-t.cc | 2 +-
- 5 files changed, 7 insertions(+), 13 deletions(-)
-diff --git a/cmake/boost.cmake b/cmake/boost.cmake
-index 64e5cd6a1950..e879484a9d9e 100644
---- cmake/boost.cmake
-+++ cmake/boost.cmake
-@@ -330,6 +330,9 @@ ELSE()
-+# Needed to use Boost header container_hash/hash.hpp in C++17
-diff --git a/include/varlen_sort.h b/include/varlen_sort.h
-index 433ab7e493b0..380274e418cf 100644
---- include/varlen_sort.h
-+++ include/varlen_sort.h
-@@ -184,8 +184,9 @@ namespace std {
- // Required for Iterator.
- template <>
--struct iterator_traits<varlen_iterator> : iterator_traits<varlen_element *> {};
-+struct iterator_traits<varlen_iterator> : iterator_traits<varlen_element *> {
-+ using reference = varlen_element;
- } // namespace std
- /*
-diff --git a/storage/innobase/include/ddl0impl.h b/storage/innobase/include/ddl0impl.h
-index 2276c8d2f40d..0e5d8e428997 100644
---- storage/innobase/include/ddl0impl.h
-+++ storage/innobase/include/ddl0impl.h
-@@ -119,13 +119,5 @@ struct Fetch_sequence : public Context::FTS::Sequence {
- /** Physical row context. */
- struct Row {
-- /** Constructor. */
-- Row() = default;
-- Row(const Row &) = default;
-- /** Destructor. */
-- ~Row() = default;
- /** Build a row from a raw record.
- @param[in,out] ctx DDL context.
- @param[in,out] index Index the record belongs to.
-diff --git a/unittest/gunit/mysys_my_rdtsc-t.cc b/unittest/gunit/mysys_my_rdtsc-t.cc
-index 6bec618475fe..e8d2fe1662b6 100644
---- unittest/gunit/mysys_my_rdtsc-t.cc
-+++ unittest/gunit/mysys_my_rdtsc-t.cc
-@@ -113,7 +113,7 @@ TEST_F(RDTimeStampCounter, TestCycle) {
- ulonglong t1 = my_timer_cycles();
- ulonglong t2;
- int i;
-- int backward = 0;
-+ int backward [[maybe_unused]] = 0;
- int nonzero = 0;
- for (i = 0; i < LOOP_COUNT; i++) {
diff --git a/databases/mysql80-server/pkg-plist b/databases/mysql80-server/pkg-plist
index 7ad6d6236cac..be1487f667f9 100644
--- a/databases/mysql80-server/pkg-plist
+++ b/databases/mysql80-server/pkg-plist
@@ -32,6 +32,7 @@ lib/mysql/libmysqlharness_tls.so.1
@@ -44,6 +45,7 @@ lib/mysql/libmysqlrouter_metadata_cache.so.1