facebook / mysql-5.6

Facebook's branch of the Oracle MySQL database. This includes MyRocks.
http://myrocks.io
Other
2.48k stars 712 forks source link

Bug #34638573 Compile MySQL with clang 15 #1293

Closed laurynas-biveinis closed 1 year ago

laurynas-biveinis commented 1 year ago

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::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

facebook-github-bot commented 1 year ago

@hermanlee has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.