forked from Lainports/opnsense-ports
103 lines
4.1 KiB
Text
103 lines
4.1 KiB
Text
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
|
|
|
|
https://reviews.llvm.org/D104002
|
|
|
|
std::unary_function is not available in libcxx under C++17, see:
|
|
https://en.cppreference.com/w/cpp/utility/functional/unary_function
|
|
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
|
|
|
|
See:
|
|
https://www.boost.org/doc/libs/master/libs/config/doc/html/boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_features_that_have_been_removed_from_the_standard_
|
|
|
|
https://reviews.llvm.org/D130538
|
|
|
|
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()
|
|
ENDIF()
|
|
|
|
IF(NOT WIN32)
|
|
+# Needed to use Boost header container_hash/hash.hpp in C++17
|
|
+ ADD_DEFINITIONS(-DBOOST_NO_CXX98_FUNCTION_BASE)
|
|
+
|
|
FILE(GLOB_RECURSE BOOST_PATCHES_LIST
|
|
RELATIVE ${BOOST_PATCHES_DIR}
|
|
${BOOST_PATCHES_DIR}/*.hpp
|
|
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++) {
|