[arch-commits] Commit in percona-server/trunk (PKGBUILD gcc-11.patch)

Massimiliano Torromeo mtorromeo at archlinux.org
Tue May 18 22:41:57 UTC 2021


    Date: Tuesday, May 18, 2021 @ 22:41:56
  Author: mtorromeo
Revision: 936328

upgpkg: percona-server 8.0.23_14-4

Added:
  percona-server/trunk/gcc-11.patch
Modified:
  percona-server/trunk/PKGBUILD

--------------+
 PKGBUILD     |   28 ++--
 gcc-11.patch |  390 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 409 insertions(+), 9 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2021-05-18 21:52:46 UTC (rev 936327)
+++ PKGBUILD	2021-05-18 22:41:56 UTC (rev 936328)
@@ -2,13 +2,14 @@
 
 pkgbase=percona-server
 pkgname=('libperconaserverclient' 'percona-server-clients' 'percona-server')
-pkgver=8.0.22_13
+pkgver=8.0.23_14
 _boost_ver=1.73.0
 _pkgver=${pkgver/_/-}
 _myver=${pkgver/_rel*}
 pkgrel=4
 arch=('x86_64')
-makedepends=('cmake' 'zlib' 'lz4' 'zstd' 'libaio' 'systemd-tools' 'pam' 'numactl' 'jemalloc' 'openssl' 'rpcsvc-proto' 'doxygen' 'graphviz') # 'boost'
+makedepends=('cmake' 'zlib' 'lz4' 'zstd' 'libaio' 'systemd-tools' 'pam' 'numactl' 'jemalloc' 'openssl'
+             'rpcsvc-proto' 'doxygen' 'graphviz' 'libevent' 'protobuf') # 'boost'
 license=('GPL')
 url="https://www.percona.com/software/mysql-database/percona-server"
 source=("https://www.percona.com/downloads/Percona-Server-${pkgver%.*_*}/Percona-Server-$_pkgver/source/tarball/percona-server-$_pkgver.tar.gz"
@@ -19,8 +20,9 @@
         'icu68.patch'
         'build-hostname.patch'
         'no-werror.patch'
-        'rocksdb-make.patch')
-sha256sums=('614249dc7790e82cabf22fdb20492be7ec5b8e98550f662204a17e0e8797cc9a'
+        'rocksdb-make.patch'
+        'gcc-11.patch')
+sha256sums=('613b8c110ede5cf67a7ac32e16556f4c67d8ad35263f4f8d6457ae0789074048'
             '9995e192e68528793755692917f9eb6422f3052a53c5e13ba278a228af6c7acf'
             'b467b04d6d06152b2abc33f2a6de63fef0fc922dd5119d2ee1d07d3c1a489731'
             '5d7710fe88ec6d298175a309c0b776142397b119c468830b2865980292ed5da6'
@@ -28,7 +30,8 @@
             '80189c3d1c171eea06567aa9c66e10675d7f43721d0475fa2fca5d1e6ae03ea8'
             '1537fdbb92dd1c135c1eb9f4d10c44fd02e652db66c933d731990a1196f1397c'
             '2343a191c452b91caa458b03b0c1ef3f5afb0e7031816c68467af5c6a6ffe253'
-            '2ff495d271f99c4d0dba89e8ccde7e6b9789a4ea6b55034de9b9217b47e32c03')
+            '2ff495d271f99c4d0dba89e8ccde7e6b9789a4ea6b55034de9b9217b47e32c03'
+            '94d5e76a211af079e132a5d8377e7033acbccdba3c2b8535871b51059f61d1a4')
 
 prepare() {
 	cd $pkgbase-$_pkgver
@@ -38,6 +41,7 @@
 	patch -p1 -i "$srcdir"/build-hostname.patch
 	patch -p1 -i "$srcdir"/no-werror.patch
 	patch -p1 -i "$srcdir"/rocksdb-make.patch
+	patch -p1 -i "$srcdir"/gcc-11.patch
 
 	sed -r -e s@/var/run/mysqlrouter@/run/mysqlrouter@ \
 	       -e s at lib64/mysql at lib/mysql@ \
@@ -58,10 +62,12 @@
 	cd build
 
 	cmake ../$pkgbase-$_pkgver \
+		-DCMAKE_C_FLAGS_RELWITHDEBINFO="${CFLAGS} -DNDEBUG" \
+		-DCMAKE_CXX_FLAGS_RELWITHDEBINFO="${CXXFLAGS} -DNDEBUG" \
 		-Wno-dev \
-		-DCMAKE_BUILD_TYPE=Release \
+		-DCMAKE_BUILD_TYPE=RelWithDebInfo \
+		-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
 		-DBUILD_CONFIG=mysql_release \
-		-DFEATURE_SET=community \
 		-DREPRODUCIBLE_BUILD=ON \
 		-DCMAKE_INSTALL_PREFIX=/usr \
 		-DSYSCONFDIR=/etc/mysql \
@@ -68,7 +74,8 @@
 		-DMYSQL_DATADIR=/var/lib/mysql \
 		-DMYSQL_UNIX_ADDR=/run/mysqld/mysqld.sock \
 		-DDEFAULT_CHARSET=utf8mb4 \
-		-DDEFAULT_COLLATION=utf8mb4_general_ci \
+		-DDEFAULT_COLLATION=utf8mb4_0900_ai_ci \
+		-DWITH_EXTRA_CHARSETS=all \
 		-DENABLED_LOCAL_INFILE=ON \
 		-DINSTALL_LAYOUT=RPM \
 		-DINSTALL_SBINDIR=bin \
@@ -87,6 +94,8 @@
 		-DWITH_ZSTD=system \
 		-DWITH_SSL=system \
 		-DWITH_ICU=system \
+		-DWITH_LIBEVENT=system \
+		-DWITH_PROTOBUF=system \
 		-DWITH_LIBWRAP=OFF \
 		-DWITH_MECAB=OFF \
 		-DWITH_PAM=ON \
@@ -157,7 +166,8 @@
 package_percona-server() {
 	pkgdesc='Drop-in replacement for MySQL that provides improved performance, diagnostics, instrumentation and MyRocks storage engine'
 	backup=('etc/mysql/my.cnf' 'etc/mysqlrouter/mysqlrouter.conf')
-	depends=('libaio' 'systemd-tools' 'pam' 'jemalloc' 'numactl' 'lz4' 'zstd' 'openssl' 'libtirpc' 'curl') # 'boost-libs'
+	depends=('libaio' 'systemd-tools' 'pam' 'jemalloc' 'numactl' 'lz4' 'zstd' 'openssl' 'libtirpc' 'curl'
+	         'libevent' 'protobuf' 'icu') # 'boost-libs'
 	optdepends=('perl-dbd-mysql')
 	conflicts=('mysql')
 	provides=("mysql=$_myver" "mariadb=$_myver")

Added: gcc-11.patch
===================================================================
--- gcc-11.patch	                        (rev 0)
+++ gcc-11.patch	2021-05-18 22:41:56 UTC (rev 936328)
@@ -0,0 +1,390 @@
+diff --git a/components/mysqlbackup/backup_page_tracker.h b/components/mysqlbackup/backup_page_tracker.h
+index a0898a251f84..1d072a5104d3 100644
+--- a/components/mysqlbackup/backup_page_tracker.h
++++ b/components/mysqlbackup/backup_page_tracker.h
+@@ -28,6 +28,7 @@
+ 
+ #include <mysql/components/services/page_track_service.h>
+ 
++#include <stddef.h>  // size_t
+ #include <list>
+ 
+ #include "mysqlbackup.h"
+diff --git a/extra/robin-hood-hashing/robin_hood.h b/extra/robin-hood-hashing/robin_hood.h
+index 34ba81bf8736..596f123beb98 100644
+--- a/extra/robin-hood-hashing/robin_hood.h
++++ b/extra/robin-hood-hashing/robin_hood.h
+@@ -43,6 +43,7 @@
+ #include <cstdlib>
+ #include <cstring>
+ #include <functional>
++#include <limits>  // std::numeric_limits
+ #include <memory> // only to support hash of smart pointers
+ #include <stdexcept>
+ #include <string>
+diff --git a/include/my_alloc.h b/include/my_alloc.h
+index a1bd1f278abb..942f3cf0786f 100644
+--- a/include/my_alloc.h
++++ b/include/my_alloc.h
+@@ -32,6 +32,7 @@
+ 
+ #include <string.h>
+ 
++#include <cstdint>  // std::uintptr_t
+ #include <memory>
+ #include <new>
+ #include <type_traits>
+diff --git a/include/mysql/components/services/page_track_service.h b/include/mysql/components/services/page_track_service.h
+index 103b51351868..3090daa332cc 100644
+--- a/include/mysql/components/services/page_track_service.h
++++ b/include/mysql/components/services/page_track_service.h
+@@ -27,6 +27,7 @@
+ #include <mysql/components/service.h>
+ #include <functional>
+ 
++#include <stddef.h>  // size_t
+ #include <stdint.h>
+ 
+ #ifdef __cplusplus
+diff --git a/mysys/thr_lock.cc b/mysys/thr_lock.cc
+index 404e32024ed3..662f34086d68 100644
+--- a/mysys/thr_lock.cc
++++ b/mysys/thr_lock.cc
+@@ -1198,6 +1198,7 @@ static void *test_thread(void *arg) {
+   THR_LOCK_DATA *multi_locks[MAX_LOCK_COUNT];
+   my_thread_id id;
+   mysql_cond_t COND_thr_lock;
++  memset(&COND_thr_lock, 0, sizeof(COND_thr_lock));
+ 
+   id = param + 1; /* Main thread uses value 0. */
+   mysql_cond_init(0, &COND_thr_lock);
+diff --git a/router/src/harness/src/stdx/filesystem.cc b/router/src/harness/src/stdx/filesystem.cc
+index d800d4635379..d1f352a6f210 100644
+--- a/router/src/harness/src/stdx/filesystem.cc
++++ b/router/src/harness/src/stdx/filesystem.cc
+@@ -92,7 +92,7 @@ stdx::expected<std::string, std::error_code> getcwd() {
+     return stdx::make_unexpected(last_posix_error_code());
+   }
+ #else
+-  std::array<char, PATH_MAX> cwd;
++  std::array<char, PATH_MAX> cwd{};
+   if (nullptr == ::getcwd(cwd.data(), cwd.size())) {
+     return stdx::make_unexpected(last_error_code());
+   }
+diff --git a/router/src/harness/tests/plugins/lifecycle.cc b/router/src/harness/tests/plugins/lifecycle.cc
+index 115b05804ecc..d2760d4c3422 100644
+--- a/router/src/harness/tests/plugins/lifecycle.cc
++++ b/router/src/harness/tests/plugins/lifecycle.cc
+@@ -195,7 +195,7 @@ void init_exit_strategies(const mysql_harness::ConfigSection *section) {
+   // clang-format on
+ 
+   // process configuration
+-  for (const std::string &func : {"init", "start", "stop", "deinit"}) {
++  for (const std::string func : {"init", "start", "stop", "deinit"}) {
+     if (section->has(func)) {
+       const std::string &line = section->get(func);
+ 
+@@ -449,7 +449,7 @@ LIFECYCLE_API void lifecycle_init(int flags) {
+     std::lock_guard<std::mutex> lock(g_strategies_mtx);
+     g_strategies.clear();
+ 
+-    for (const std::string &key : {"instance1", "instance2", "instance3"}) {
++    for (const std::string key : {"instance1", "instance2", "instance3"}) {
+       g_strategies[key].strategy_set = false;  // optimisation,
+     }                                          // doesn't affect behavior
+   }
+diff --git a/router/src/harness/tests/test_net_ts_impl_resolver.cc b/router/src/harness/tests/test_net_ts_impl_resolver.cc
+index 3f28f2688e43..e5007b21671e 100644
+--- a/router/src/harness/tests/test_net_ts_impl_resolver.cc
++++ b/router/src/harness/tests/test_net_ts_impl_resolver.cc
+@@ -80,15 +80,15 @@ TEST(NetTS_impl_resolver, gethostname_buffer_too_short) {
+ }
+ 
+ TEST(NetTS_impl_resolver, gethostname) {
+-  std::array<char, 255> name;
++  std::array<char, 255> name{};
+   const auto res = net::impl::resolver::gethostname(name.data(), name.size());
+ 
+   EXPECT_THAT(res, ::testing::Truly([](auto v) { return bool(v); }));
+ }
+ 
+ TEST(NetTS_impl_resolver, getnameinfo) {
+-  std::array<char, NI_MAXHOST> name;
+-  std::array<char, NI_MAXSERV> serv;
++  std::array<char, NI_MAXHOST> name{};
++  std::array<char, NI_MAXSERV> serv{};
+   struct sockaddr_in saddr {};
+ 
+   saddr.sin_family = AF_INET;
+@@ -101,8 +101,8 @@ TEST(NetTS_impl_resolver, getnameinfo) {
+ }
+ 
+ TEST(NetTS_impl_resolver, getnameinfo_invalid_sockaddr_size) {
+-  std::array<char, NI_MAXHOST> name;
+-  std::array<char, NI_MAXSERV> serv;
++  std::array<char, NI_MAXHOST> name{};
++  std::array<char, NI_MAXSERV> serv{};
+   struct sockaddr_in saddr {};
+ 
+   saddr.sin_family = AF_INET;
+@@ -132,8 +132,8 @@ TEST(NetTS_impl_resolver, getnameinfo_invalid_sockaddr_size) {
+ // windows doesn't check for bad-flags, but returns ERROR_INSUFFICIENT_BUFFER
+ // freebsd, macosx doesn't check for bad-flags, but returns EAI_NONAME
+ TEST(NetTS_impl_resolver, getnameinfo_badflags) {
+-  std::array<char, NI_MAXHOST> name;
+-  std::array<char, NI_MAXSERV> serv;
++  std::array<char, NI_MAXHOST> name{};
++  std::array<char, NI_MAXSERV> serv{};
+   struct sockaddr_in saddr {};
+ 
+   saddr.sin_family = AF_INET;
+@@ -150,7 +150,7 @@ TEST(NetTS_impl_resolver, getnameinfo_badflags) {
+ #endif
+ 
+ TEST(NetTS_impl_resolver, getnameinfo_overflow) {
+-  std::array<char, 1> name;  // buffer too small to resolve the address
++  std::array<char, 1> name{};  // buffer too small to resolve the address
+   struct sockaddr_in saddr {};
+ 
+   saddr.sin_family = AF_INET;
+@@ -295,7 +295,7 @@ TEST(NetTS_impl_resolver, inetntop_nospace) {
+ 
+   saddr.sin_family = AF_INET;
+ 
+-  std::array<char, 1> name;
++  std::array<char, 1> name{};
+ 
+   const auto res =
+       net::impl::resolver::inetntop(AF_INET, &saddr, name.data(), name.size());
+@@ -319,7 +319,7 @@ TEST(NetTS_impl_resolver, inetntop_nospace) {
+ TEST(NetTS_impl_resolver, inetntop_ipv4) {
+   struct in_addr addr {};
+ 
+-  std::array<char, INET_ADDRSTRLEN> name;
++  std::array<char, INET_ADDRSTRLEN> name{};
+ 
+   const auto res =
+       net::impl::resolver::inetntop(AF_INET, &addr, name.data(), name.size());
+@@ -331,7 +331,7 @@ TEST(NetTS_impl_resolver, inetntop_ipv4) {
+ TEST(NetTS_impl_resolver, inetntop_ipv6) {
+   struct in6_addr addr {};
+ 
+-  std::array<char, INET6_ADDRSTRLEN> name;
++  std::array<char, INET6_ADDRSTRLEN> name{};
+ 
+   const auto res =
+       net::impl::resolver::inetntop(AF_INET6, &addr, name.data(), name.size());
+@@ -343,7 +343,7 @@ TEST(NetTS_impl_resolver, inetntop_ipv6) {
+ TEST(NetTS_impl_resolver, inetntop_fail_invalid_protocol) {
+   struct in6_addr addr {};
+ 
+-  std::array<char, INET6_ADDRSTRLEN> name;
++  std::array<char, INET6_ADDRSTRLEN> name{};
+ 
+   const auto res =
+       net::impl::resolver::inetntop(AF_UNIX, &addr, name.data(), name.size());
+@@ -355,7 +355,7 @@ TEST(NetTS_impl_resolver, inetntop_fail_invalid_protocol) {
+ TEST(NetTS_impl_resolver, inetntop_fail_empty_buffer) {
+   struct in6_addr addr {};
+ 
+-  std::array<char, INET6_ADDRSTRLEN> name;
++  std::array<char, INET6_ADDRSTRLEN> name{};
+ 
+   const auto res =
+       net::impl::resolver::inetntop(AF_INET6, &addr, name.data(), 0);
+diff --git a/router/tests/component/test_bootstrap_account.cc b/router/tests/component/test_bootstrap_account.cc
+index c475e1429f97..ee57ecddfde3 100644
+--- a/router/tests/component/test_bootstrap_account.cc
++++ b/router/tests/component/test_bootstrap_account.cc
+@@ -3971,7 +3971,7 @@ TEST_F(UndoCreateUserTest, failure_after_account_creation) {
+   // induce failure at config-write step (should result in error analogous to:
+   // "Could not create file '.../router-sBHJGw/mysqlrouter.conf.bak': Permission
+   // denied"
+-  for (const std::string &file : {"mysqlrouter.conf", "mysqlrouter.conf.bak"}) {
++  for (const std::string file : {"mysqlrouter.conf", "mysqlrouter.conf.bak"}) {
+     std::string path = bootstrap_directory.name() + "/" + file;
+     std::ofstream f(path.c_str());
+     f << "[DEFAULT]\n";
+@@ -4082,7 +4082,7 @@ TEST_F(UndoCreateUserTest,
+   // induce failure at config-write step (should result in error analogous to:
+   // "Could not create file '.../router-sBHJGw/mysqlrouter.conf.bak': Permission
+   // denied"
+-  for (const std::string &file : {"mysqlrouter.conf", "mysqlrouter.conf.bak"}) {
++  for (const std::string file : {"mysqlrouter.conf", "mysqlrouter.conf.bak"}) {
+     std::string path = bootstrap_directory.name() + "/" + file;
+     std::ofstream f(path.c_str());
+     f << "[DEFAULT]\n";
+diff --git a/sql-common/sql_string.cc b/sql-common/sql_string.cc
+index 40435729421f..44511304e80f 100644
+--- a/sql-common/sql_string.cc
++++ b/sql-common/sql_string.cc
+@@ -23,6 +23,7 @@
+ #include "sql_string.h"
+ 
+ #include <algorithm>
++#include <limits>  // std::numeric_limits
+ 
+ #include "my_dbug.h"
+ #include "my_macros.h"
+diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt
+index 27dfdd8c825a..30590fb9cc64 100644
+--- a/sql/CMakeLists.txt
++++ b/sql/CMakeLists.txt
+@@ -870,6 +870,13 @@ IF(SOLARIS AND MY_COMPILER_IS_GNU AND
+     )
+ ENDIF()
+ 
++# Suppress warnings for gcc-11 or newer
++IF(CMAKE_COMPILER_IS_GNUCXX AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 11)
++  ADD_CXX_COMPILE_FLAGS_TO_FILES(-Wno-mismatched-new-delete FILES sql_cursor.cc sql_prepare.cc)
++  # a false positive with a bison-generated file (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98753)
++  ADD_CXX_COMPILE_FLAGS_TO_FILES(-Wno-free-nonheap-object FILES ${CMAKE_CURRENT_BINARY_DIR}/sql_hints.yy.cc)
++ENDIF()
++
+ ADD_LIBRARY(sql_dd STATIC ${DD_SOURCES})
+ ADD_DEPENDENCIES(sql_dd GenFixPrivs)
+ ADD_DEPENDENCIES(sql_dd GenServerSource)
+diff --git a/sql/item_geofunc_internal.cc b/sql/item_geofunc_internal.cc
+index 29384b48edd9..de426d3789ce 100644
+--- a/sql/item_geofunc_internal.cc
++++ b/sql/item_geofunc_internal.cc
+@@ -111,8 +111,7 @@ template <typename Coordsys>
+ void BG_geometry_collection::merge_components(bool *pnull_value) {
+   if (is_comp_no_overlapped()) return;
+ 
+-  POS pos;
+-  Item_func_st_union ifsu(pos, nullptr, nullptr);
++  Item_func_st_union ifsu(POS(), nullptr, nullptr);
+   bool do_again = true;
+   uint32 last_composition[6] = {0}, num_unchanged_composition = 0;
+   size_t last_num_geos = 0;
+diff --git a/sql/memory/unique_ptr.h b/sql/memory/unique_ptr.h
+index 7997834d6ec6..a30585008de0 100644
+--- a/sql/memory/unique_ptr.h
++++ b/sql/memory/unique_ptr.h
+@@ -28,6 +28,7 @@
+ #include <algorithm>
+ #include <cstddef>
+ #include <iostream>
++#include <limits>  // std::numeric_limits
+ #include <memory>
+ #include <string>
+ #include <tuple>
+diff --git a/sql/opt_range.cc b/sql/opt_range.cc
+index f1167ef9ef2f..0af19bc8cc15 100644
+--- a/sql/opt_range.cc
++++ b/sql/opt_range.cc
+@@ -15560,7 +15560,7 @@ static void append_range_all_keyparts(Opt_trace_array *range_trace,
+       range_string and the string becomes too long. Printing very long
+       range conditions normally doesn't make sense either.
+     */
+-    if (!append_to_trace && range_string->length() > 500) {
++    if (!append_to_trace && range_string && range_string->length() > 500) {
+       range_string->append(STRING_WITH_LEN("..."));
+       break;
+     }
+@@ -15608,7 +15608,7 @@ static void append_range_all_keyparts(Opt_trace_array *range_trace,
+       */
+       if (append_to_trace)
+         range_trace->add_utf8(range_so_far->ptr(), range_so_far->length());
+-      else {
++      else if (range_string) {
+         if (range_string->length() == 0)
+           range_string->append(STRING_WITH_LEN("("));
+         else
+diff --git a/sql/server_component/mysql_query_attributes_imp.cc b/sql/server_component/mysql_query_attributes_imp.cc
+index 14b2e65cb9c2..302d2016888a 100644
+--- a/sql/server_component/mysql_query_attributes_imp.cc
++++ b/sql/server_component/mysql_query_attributes_imp.cc
+@@ -274,7 +274,7 @@ static String *query_parameter_val_str(const PS_PARAM *param,
+         str->length(
+             my_TIME_to_str(tm, str->ptr(), uint8{DATETIME_MAX_DECIMALS}));
+       } else {
+-        delete str;
++        delete[] str;
+         str = nullptr;
+       }
+       break;
+@@ -300,7 +300,7 @@ static String *query_parameter_val_str(const PS_PARAM *param,
+         str->length(
+             my_TIME_to_str(tm, str->ptr(), uint8{DATETIME_MAX_DECIMALS}));
+       } else {
+-        delete str;
++        delete[] str;
+         str = nullptr;
+       }
+       break;
+@@ -342,7 +342,7 @@ static String *query_parameter_val_str(const PS_PARAM *param,
+         str->length(
+             my_TIME_to_str(tm, str->ptr(), uint8{DATETIME_MAX_DECIMALS}));
+       } else {
+-        delete str;
++        delete[] str;
+         str = nullptr;
+       }
+       break;
+@@ -355,7 +355,7 @@ static String *query_parameter_val_str(const PS_PARAM *param,
+       uint dummy_errors;
+       if (str->copy(reinterpret_cast<const char *>(param->value), param->length,
+                     &my_charset_bin, &my_charset_bin, &dummy_errors)) {
+-        delete str;
++        delete[] str;
+         str = nullptr;
+       }
+       break;
+@@ -368,7 +368,7 @@ static String *query_parameter_val_str(const PS_PARAM *param,
+       uint dummy_errors;
+       if (str->copy(reinterpret_cast<const char *>(param->value), param->length,
+                     cs, cs, &dummy_errors)) {
+-        delete str;
++        delete[] str;
+         str = nullptr;
+       }
+       break;
+diff --git a/storage/innobase/CMakeLists.txt b/storage/innobase/CMakeLists.txt
+index b34a1bb97c8a..7cc7ad7e0f24 100644
+--- a/storage/innobase/CMakeLists.txt
++++ b/storage/innobase/CMakeLists.txt
+@@ -288,3 +288,10 @@ IF(HAS_WARN_FLAG)
+   ADD_COMPILE_FLAGS(fts/fts0pars.cc
+     COMPILE_FLAGS "${HAS_WARN_FLAG}")
+ ENDIF()
++
++# Suppress warnings for gcc-11 or newer
++IF(CMAKE_COMPILER_IS_GNUCXX AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 11)
++  ADD_CXX_COMPILE_FLAGS_TO_FILES(-Wno-maybe-uninitialized FILES os/os0file.cc)
++  # a false positive with a bison-generated file (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98753)
++  ADD_CXX_COMPILE_FLAGS_TO_FILES(-Wno-free-nonheap-object FILES pars/pars0grm.cc)
++ENDIF()
+diff --git a/unittest/gunit/mock_create_field.h b/unittest/gunit/mock_create_field.h
+index 16c87540b8fa..d9caad5b4ed5 100644
+--- a/unittest/gunit/mock_create_field.h
++++ b/unittest/gunit/mock_create_field.h
+@@ -40,6 +40,7 @@ class Mock_create_field : public Create_field {
+     */
+     DBUG_ASSERT(field_type == MYSQL_TYPE_TIMESTAMP ||
+                 field_type == MYSQL_TYPE_TIMESTAMP2);
++    memset(&m_lex_string, 0, sizeof(m_lex_string));
+     init(nullptr,  // THD *thd
+          nullptr,  // char *fld_name
+          field_type,
+diff --git a/unittest/gunit/strings_utf8-t.cc b/unittest/gunit/strings_utf8-t.cc
+index a863c7d1aa28..7e6e1b71b452 100644
+--- a/unittest/gunit/strings_utf8-t.cc
++++ b/unittest/gunit/strings_utf8-t.cc
+@@ -148,6 +148,7 @@ TEST_F(StringsUTF8Test, MyIsmbcharUtf8) {
+ 
+   /* valid utf8 charaters, testing for boundry values */
+   utf8_src[0] = '\x00';
++  utf8_src[1] = '\x00';
+   EXPECT_EQ(0U, system_charset_info->cset->ismbchar(system_charset_info,
+                                                     utf8_src, utf8_src + 1));
+ 
+@@ -522,6 +523,7 @@ TEST_F(StringsUTF8mb4Test, MyIsmbcharUtf8mb4) {
+ 
+   /* valid utf8mb4 charaters, testing for boundry values */
+   utf8_src[0] = '\x00';
++  utf8_src[1] = '\x00';
+   EXPECT_EQ(0U, system_charset_info->cset->ismbchar(system_charset_info,
+                                                     utf8_src, utf8_src + 1));
+   utf8_src[0] = '\x7f';



More information about the arch-commits mailing list